星期六我們一位客戶受到攻擊,我們的網(wǎng)絡(luò)監(jiān)測顯示有連續(xù)6小時的巨大異常流量,我們立即聯(lián)系了客戶,沒有得到回應(yīng),我們修改和限制了客戶的 VPS,使得個別 VPS 受攻擊不會對整個服務(wù)器和其他 VPS 用戶造成任何影響,我們一直保持這個 VPS 為開通狀態(tài)(盡管一直受攻擊),攻擊又持續(xù)了24小時,星期天攻擊仍在繼續(xù),我們?nèi)虩o可忍,但是仍然無法聯(lián)系到客戶,我們向客戶網(wǎng)站的另一負責(zé)人詢問是否需要我們介入來幫助解決,這位負責(zé)人答應(yīng)后我們立即投入到與 DDoS 的戰(zhàn)斗中(我們動態(tài)掃描屏蔽壞 IP,現(xiàn)在客戶網(wǎng)站已恢復(fù)。整個過程很有意思,以后有時間再寫一篇博客來描述)。登錄到客戶 VPS 第一件事情就是查當前連接和 IP,來自中國的大量 IP 不斷侵占80端口,典型的 DDoS. 所以第一件事是切斷攻擊源,既然攻擊只攻80端口,那有很多辦法可以切斷,直接關(guān)閉網(wǎng)站服務(wù)器、直接用防火墻/iptables 切斷80端口或者關(guān)閉所有連接、把 VPS 網(wǎng)絡(luò)關(guān)掉、換一個 IP,⋯,等等。因為攻擊源在國內(nèi),所以我們決定切斷來自國內(nèi)的所有訪問,這樣看上去網(wǎng)站好像是被墻了而不是被攻擊了,有助于維護客戶網(wǎng)站的光輝形象,那么如何屏蔽來自某個特定國家的 IP 呢?
#!/bin/bash
# Block traffic from a specific country
# written by vpsee.com
COUNTRY="cn"
IPTABLES=/sbin/iptables
EGREP=/bin/egrep
if [ "$(id -u)" != "0" ]; then
echo "you must be root" 1>2
exit 1
fi
resetrules() {
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
}
resetrules
for c in $COUNTRY
do
country_file=$c.zone
IPS=$($EGREP -v "^#|^$" $country_file)
for ip in $IPS
do
echo "blocking $ip"
$IPTABLES -A INPUT -s $ip -j DROP
done
done
exit 0