Linux 服務(wù)器被 DDoS / CC 時(shí)應(yīng)急的封 IP 方法
當(dāng)我們的 Linux 服務(wù)器受到少量攻擊時(shí),這時(shí)候我們可以使用 iptables 來手動(dòng)封禁這些攻擊者的IP。
如果攻擊比較大時(shí),有時(shí)我們根本無法響應(yīng)過來,iptables?基本也就無能為力了,那我們就只能與機(jī)房聯(lián)系讓他們想想辦法了。
對(duì)于少量攻擊處理的步驟應(yīng)該是:獲取IP?-->?封IP
獲取攻擊者 IP通過 netstat 獲取
如果攻擊者攻擊的是你的 Web 服務(wù)的話,默認(rèn)是80端口,我們就可以使用下面的代碼!
如果攻擊的不是80端口的話,將下面的兩個(gè)數(shù)字80改為你被攻擊的端口即可!
如果你需要顯示多條記錄,請(qǐng)自己手動(dòng)將head?-n20調(diào)大即可
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
通過 tcpdump 獲取
在使用之前,請(qǐng)確保您的系統(tǒng)已經(jīng)安裝了 tcpdump 。
Debian?/ Ubuntu 系列快速安裝如下
apt-get install -y tcpdump
安裝后,使用下面的代碼即可。
需要注意的是,-i eth0指的是你主網(wǎng)卡,如果你是 OpenVZ 的虛擬機(jī)的話,就改成您的網(wǎng)卡名venet0
同樣你需要設(shè)置的是,port 80設(shè)置你被攻擊的端口,-c 1000指 tcpdump 需要統(tǒng)計(jì)的記錄數(shù),他會(huì)在達(dá)到這個(gè)數(shù)之后顯示結(jié)果。head?-20設(shè)置你要顯示的記錄條數(shù)
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"."?'{print?$1"."$2"."$3"."$4}'?| sort | uniq -c?| sort -nr?|head?-20
封禁 IP
通過上面的步驟,我們已經(jīng)知道是誰在攻擊我們了,現(xiàn)在我們就可以將他們拉入iptables禁止他們連接到服務(wù)器了。
封禁單個(gè) IP
iptables -I INPUT -s 211.1.2.1 -j DROP
封禁一個(gè) IP 段
iptables?-I INPUT -s 211.1.2.0/16 -j DROP