背景
現在 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 了一下,站羣服務器資源也正常了。
以上方法只做參考具體操作因情況而定, 多多主意互聯網安全, 不要給駭客有機可乘!