背景
现在 DDOS 攻击越来越频繁, 无需什么技术即可就行 DDOS 拒绝服务经常一些 WP 站长反映自己的网站经常出现 mysql 1040 错误,他的线上使用者才不到一千,mysql 配置也没问题。一般遇到这站情况就需注意了, 你的网站可能被 CC 攻击了。
站群解决方案及思路
CC 攻击防御措施,鉴于系统是 centos,执行了下面的这两行命令。

netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20 | netstat -ant |awk ‘/:80/{split($5,ip,”:”);++A[ip[1]]}END{for(i in A) print A[i],i}’ |sort -rn|head -n20

把请求过多的 IP 记录下来。

222.127.94.*
247.27.128.*
145.27.133.*

开始封禁 IP,具体可以看我下面执行的命令。本文主要是采用 iptables 进行封禁

iptables -I INPUT -s 222.127.94.0/16 -j DROP
iptables -I INPUT -s 247.27.128.0/16 -j DROP
iptables -I INPUT -s 145.27.133.0/16 -j DROP
iptables -I INPUT -s 193.1.0.0/8 -j DROP 【慎用封禁整个段】

执行上面这些命令之后我们已经完成封禁操作了,不过还得储存一下,如果不储存的话重启系统之后上面设定的规则会消失。

service iptables save

执行下面这行命令,来检视谁的访问量最高(需要站群服务器安装 tcpdump)
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr |head -20

 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
1000 packets captured
1000 packets received by filter
0 packets dropped by kernel
1420 IP 174.7.7.*

 

然后将 packets 过多的 IP 记录下来,用上面的方法封禁。
执行

service iptables save

储存然后重启

iptables service iptables restart

这一步建议多进行几次,发现异常 IP 用上面的办法封禁。如果出现误封可以参考下面这行解封命令进行解封

iptables -D INPUT -s 222.142.2.0/16 -j DROP

常用命令
封单个 IP 的命令是:

iptables -I INPUT -s 211.1.0.0 -j DROP

封 IP 段的命令是:

iptables -I INPUT -s 211.1.0.0/16 -j DROP
iptables -I INPUT -s 211.2.0.0/16 -j DROP
iptables -I INPUT -s 211.3.0.0/16 -j DROP

封整个 B 段的命令是:

iptables -I INPUT -s 211.0.0.0/8 -j DROP

后续
进行了上面的操作之后,客户的网站正常了,几乎秒开,当然这和他的 vps 给力也有一定的关系。 top 了一下,站群服务器资源也正常了。
以上方法只做参考具体操作因情况而定, 多多主意互联网安全, 不要给骇客有机可乘!