Linux被DDOS&CC攻擊解決實(shí)例
0x00 背景
這兩天一個(gè)客戶反映自己的網(wǎng)站經(jīng)常出現(xiàn)mysql 1040錯(cuò)誤,他的在線用戶才不到一千,mysql配置也沒(méi)問(wèn)題,vps用的時(shí)linode160+刀一個(gè)月的。
沒(méi)理由出現(xiàn)這種情況,于是,我進(jìn)行了一系列的排查。top了一下,mysqld跑到了900%多。
0x01 解決方案&思路
我懷疑是CC攻擊,鑒于系統(tǒng)是centos,我運(yùn)行了下面的這兩行命令。
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
把請(qǐng)求過(guò)多的IP記錄下來(lái)。
174.127.94.* 199.27.128.* 199.27.133.*
開(kāi)始封禁IP,具體可以看我下面運(yùn)行的命令。本文主要是采用iptables進(jìn)行封禁,iptables使用方法請(qǐng)見(jiàn):Iptables入門教程
iptables -I INPUT -s 174.127.94.0/16 -j DROP iptables -I INPUT -s 199.27.128.0/16 -j DROP iptables -I INPUT -s 199.27.133.0/16 -j DROP iptables -I INPUT -s 193.1.0.0/8 -j DROP 【慎用封禁整個(gè)段】
運(yùn)行上面這些命令之后我們已經(jīng)完成封禁操作了,不過(guò)還得保存一下,如果不保存的話重啟系統(tǒng)之后上面設(shè)定的規(guī)則會(huì)消失。
service iptables save
運(yùn)行下面這行命令,來(lái)查看誰(shuí)的訪問(wèn)量最高(需要服務(wù)器安裝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過(guò)多的IP記錄下來(lái),用上面的方法封禁。
運(yùn)行
service iptables save
保存然后重啟
iptables service iptables restart
這一步建議多進(jìn)行幾次,發(fā)現(xiàn)異常IP用上面的辦法封禁。如果出現(xiàn)誤封可以參考下面這行解封命令進(jìn)行解封
iptables -D INPUT -s 222.142.2.0/16 -j DROP
0x02 常用命令
封單個(gè)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
封整個(gè)B段的命令是:
iptables -I INPUT -s 211.0.0.0/8 -j DROP
封幾個(gè)段的命令是:
iptables -I INPUT -s 61.37.80.0/24 -j DROP iptables -I INPUT -s 61.37.81.0/24 -j DROP
0x03 后續(xù)
進(jìn)行了上面的操作之后,客戶的網(wǎng)站正常了,幾乎秒開(kāi),當(dāng)然這和他的vps給力也有一定的關(guān)系。top了一下,服務(wù)器資源也正常了。