用Iptables 遮蔽來自某個國家的IP

2021-09-20 20:04:37 字數 1456 閱讀 5840

**:

星期六我們一位客戶受到攻擊,我們的網路監測顯示有連續6小時的巨大異常流量,我們立即聯絡了客戶,沒有得到回應,我們修改和限制了客戶的 vps,使得個別 vps 受攻擊不會對整個伺服器和其他 vps 使用者造成任何影響,我們一直保持這個 vps 為開通狀態(儘管一直受攻擊),攻擊又持續了24小時,星期天攻擊仍在繼續,我們忍無可忍,但是仍然無法聯絡到客戶,我們向客戶**的另一負責人詢問是否需要我們介入來幫助解決,這位負責人答應後我們立即投入到與 ddos 的戰鬥中(我們動態掃瞄遮蔽壞 ip,現在客戶**已恢復。整個過程很有意思,以後有時間再寫一篇部落格來描述)。登入到客戶 vps 第一件事情就是查當前連線和 ip,來自中國的大量 ip 不斷侵占80埠,典型的 ddos. 所以第一件事是切斷攻擊源,既然攻擊只攻80埠,那有很多辦法可以切斷,直接關閉**伺服器、直接用防火牆/iptables 切斷80埠或者關閉所有連線、把 vps 網路關掉、換乙個 ip,⋯,等等。因為攻擊源在國內,所以 vpsee 決定切斷來自國內的所有訪問,這樣看上去**好像是被牆了而不是被攻擊了,有助於維護客戶**的光輝形象:d,那麼如何遮蔽來自某個特定國家的 ip 呢?

方法很容易,先到 ipdeny

# wget
有了國家的所有 ip 位址,要想遮蔽這些 ip 就很容易了,直接寫個指令碼逐行讀取 cn.zone 檔案並加入到 iptables 中:

#!/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

firesetrules()

resetrules

for c in $country

do country_file = $c.zone

ips = $($egrep -v "^#|^$" $country_file)

for ip in $ips

doecho "blocking $ip"

$iptables -a input -s $ip -j drop

done

done

exit 0

好 ip 和壞 ip 都被遮蔽掉了,這種辦法當然不高明,遮蔽 ip 也沒有解決被攻擊的問題,但是是解決問題的第一步,遮蔽了攻擊源以後我們才有頻寬、時間和心情去檢查 vps 的安全問題。公布乙份我們客戶被攻擊的網路流量圖,在18點到0點所有頻寬都被攻擊流量占用,這時候客戶無法登入 vps,訪問者也無法訪問**:

使用iptables遮蔽來自某個國家的IP

星期六我們一位客戶受到攻擊,我們的網路監測顯示有連續6小時的巨大異常流量,我們立即聯絡了客戶,沒有得到回應,我們修改和限制了客戶的 vps,使得個別 vps 受攻擊不會對整個伺服器和其他 vps 使用者造成任何影響,我們一直保持這個 vps 為開通狀態 儘管一直受攻擊 攻擊又持續了24小時,星期天攻...

logback filter過濾某個類 遮蔽某個類

使用logback配置日誌檔案,有的時候需要我們過濾或者遮蔽掉某個類的日誌,便可以通過以下方法實現 org.codehaus.janinogroupid janinoartifactid 3.1.2version dependency name file error class class ch.q...

用 iptables 對抗 CC 攻擊

我們可以使用 iptables 來在一定程度上實現 黑洞 抗 cc 連線耗盡 攻擊的能力,詳細配置如下 1.系統要求 1 linux 核心版本 2.6.9 42 elsmp 或 2.6.9 55 elsmp 其它核心版本需要重新編譯核心,比較麻煩,但是也是可以實現的 2 iptables 版本 1....