1.用下面命令查看服务器的SYN连接数:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'超过10就有攻击嫌疑,超过50就肯定被攻击了。经验告诉我们,服务器被攻击时,SYN总是比较大。所以这个是判断服务器有没有被攻击的一个好方法。
2.用下面命令查看服务器的各个IP的连接数:netstat -plan |grep :80 | awk '{print $4}' | cut -d: -f1 | sort | uniq -c | sort –n确定服务器被攻击后,我们需要判断到底是哪个IP被攻击了。通过这个命令查看服务器上各个IP的连接数,连接数大的就是可能被攻击的IP(一般独立IP连接数超过200就有攻击嫌疑,共享IP连接数超过500就有攻击嫌疑)。另外,如果判断服务器被攻击了,最好迅速查看下Apache Status页面看看能否发现哪个用户被攻击了。这里我们主要还是按照判断哪个IP被攻击的思路来展开。
A.如果是共享IP被攻击了,按照下面思路处理:<1>.查看WHM的Apache Status页面中有没有哪个域名被请求得多。这种方法最简单,如果显示几乎全是某个域名的请求,就可以判断该账户被攻击了,可以暂时暂停该用户的账户。方法为:Main>>Account Functions>> Suspend/Unsuspend an Account >>选中用户后点击“Suspend'。 <2>.如果Apache Status中没有明显发现哪个账户被攻击,可以通过如下命令查看服务器上域名的请求情况:tcpdump -i eth1 dst port 80 -A -s0 |grep 'Host: '请求多的域名可能就是被攻击的域名,觉得有嫌疑的,可以暂时暂停该账户。暂停被攻击的账户后,第一时间发Ticket让SoftLayer将共享IP添加到思科防火墙保护起来。过3-4小时等防火墙生效了,可以解封账户观察下攻击是否还存在。
<3>.暂停该账户之后,查看服务器的流量:iptraf -d eth1。如果流量比较大,比如超过10M,作如下操作:登陆客户的cPanel,在主目录的.htaccess文件中写下: RewriteEngine on RewriteCond %{HTTP_HOST} ^.*$RewriteRule ^.*$ - [F]这几行Rewrite规则可以将到达用户账户的流量转走。 <4>.如果依旧解决不了,查看用户域名的NS。通过本地DNS查看,方法为:开始>> 运行>>cmd>>nslookup>>set type=ns按下Enter键后输入域名再按Enter键即可查看域名的NS。如果显示是HE的NS,登陆WHM,在Main>>DNS Functions >> Edit DNS Zone选中相应的域名并点击,然后将域名的A记录改成127.0.0.1或者其他无效的IP也可以,改完后让英文技术客服发邮件通知用户他的账户受到流量攻击,我们暂时改了他的解析。如果客户域名的NS不是HE的NS,发邮件通知用户他的账户遭受流量攻击影响了整个服务器,让他修改解析,指向别的地方。
<5>. 接下来我们还可以尝试看看能不能找到攻击服务器的IP,DDOS攻击的情况下,想找到的几率比较小,但是可以试一试,通过netstat -anpl|grep :80|awk {'print $5'}|cut -d':' -f1|sort|uniq -c|sort -n可以查看请求服务器的IP。如果某个IP的连接数很多,就有攻击服务器的嫌疑,可以通过csf -d IP封掉该IP,然后通过csf -r重启防火墙、通过service lfd restart重启lfd方能生效。一般某个IP对服务器的连接数超过150会被自动封掉,这是因为我们每台服务器的CT_LIMIT设置的都是150。攻击时可以根据情况将其改小点如60(方法为:Main>>Plugins>>ConfigServerSecurity&Firewall>>Firewall Configuration>>Ctrl+F搜索“CT_LIMIT”并将其改成60,之后重启csf+lfd) 一般情况下,很难看出来哪些IP在攻击服务器。这个时候我们可以借助iftop -i eth1查看连接服务器的IP,如果发现某个段的IP如58开头的IP连接服务器比较频繁,可以将该段IP封掉,方法为Main>>Plugins>> ConfigServerSecurity&Firewall>>Quick Deny右边框中输入58.0.0.0/8(写法不清楚建议学习下IP的知识)并点击该按钮,之后重启csf+lfd。这种封的方法由于封的范围比较大,可能会导致部分IP在这个段的用户访问不了他的网站,我们可以将其IP允许,方法为:Main>>Plugins>> ConfigServerSecurity&Firewall>>Quick Allow右边框中输入如58.165.23.10并点击该按钮,之后重启csf+lfd。这样,虽然58段IP被封了,但是58.165.23.10这个IP已经被允许访问服务器了。等服务器恢复正常之后,一定要记得到Main >> Plugins>> ConfigServerSecurity&Firewall>>Firewall Deny IPs中将58.0.0.0/8那行移除掉,另外,再去Main>>Plugins>> ConfigServerSecurity&Firewall>>Firewall Allow IPs中将58.165.23.10的那行去掉,即恢复之前的设置,所有防火墙的操作均要记得重启csf+lfd。
注: .怀疑服务器被攻击或者服务器被攻击时反应一定要迅速敏捷,很多攻击仅仅在开始时比较明显,如果没能够第一时间锁定问题用户,经常到最后很难找出被攻击的用户,所以大家一定要灵活、灵敏,常用操作一定要熟练。 .暂停用户账户、移除路由或者修改解析等涉及到用户账户的操作,一定要及时让英文技术客服发邮件通知客户。
文章摘选krypt服务器中文指南,仅供参考。