FreeBSD查看网络情况
手机上一直收到来自服务器的负载过高报警短信,上服务器检查后发现被同一内网IP的机器DoS了,找出问题所在之后在ipf中添加上了禁止DoS主机的源IP,整个系统的负载瞬间就下来了,php-cgi进程也都空闲了。同一网段的IP还不知道是谁么,机房里就那么几台服务器,不是被入侵的话那就是有人搞鬼了…… 不知道哪位TX这么有闲情做这么些无聊之事,如果相当有闲情的话不妨联系一下我。
顺便记录一下FreeBSD下常用的统计当前系统网络连接状态的一些命令:
1)统计80端口连接数
netstat -nat|grep -i "80"|wc -l
2)统计httpd协议连接数
ps -ef|grep httpd|wc -l
3)、统计已连接上的,状态为“established'
netstat -na|grep ESTABLISHED|wc -l
4)、看看哪个IP地址的连接最多
netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F:'{print $1}'|sort|uniq -c|sort -r +0n
netstat -na|grep SYN|awk '{print $5}'|awk -F:'{print $1}'|sort|uniq -c|sort -r +0n
netstat快速查看一下TCP连接情况
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
通过man netstat可以了解SYN_RCVD的意义。SYN_RCVD表示当前未完成的TCP SYN队列
要找到最可疑的恶意IP,其实用一行简单的Shell即可:
netstat -na | grep 80 | grep ESTABLISHED | awk '{print $5}' | awk -F'.' '{print $1"."$2"."$3"."$4}' | sort | uniq -c
当然,这些只是对小型的DOS和CC比较有效,统计了所有访问80端口web服务的连接数,当服务器遇到分布式的DDoS的时候就无能为力了。