Networking

linux命令使用netstat和iptables防止dos攻擊

  • September 6, 2014

我想為每個 ip 丟棄超過 200 個請求以防止 ddos​​ 攻擊。這是我用來檢測每個 ip 的請求數的命令:

netstat -alpn | grep :80 | awk '{print $5}' |awk -F: '{print $(NF-1)}' |sort | uniq -c | sort -nr

現在我想將發出超過 200 個請求的所有 IP 地址添加到 IPtables 以 DROP 輸入和輸出。

您還可以使用 iptables 來限制傳入連接的速率。例如,如果您不希望來自某個源的每分鐘連接數超過 200:

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 200 -j DROP

您可以創建一個ipset. 這樣,您可以根據需要向集合中添加任意數量的 IP,而無需修改iptables規則集。

ipset -N myset iphash
ipset -A myset 1.1.1.1
ipset -A myset 2.2.2.2

或者,在您的情況下,使用腳本的輸出,並使用以下內容閱讀它:

while read a; do ipset -A myset "$a"; done < <(your script here)

並在您的iptables規則中引用它:

iptables -A INPUT -m set --set myset src -j DROP

閱讀手冊頁以獲取更多詳細資訊和選項。

還有其他方法可以直接使用來減輕DDOS 攻擊iptables。閱讀有關和模組的iptables手冊頁部分。connlimit``recent

引用自:https://serverfault.com/questions/583523