Linux
iptables 限速模組問題
我正在使用 iptables 的速率限制模組來防止 DoS 攻擊(我知道它無法阻止全面的 DDoS,但至少它可以幫助解決較小的攻擊)。
在我的規則中,我有類似的東西:
/sbin/iptables -A INPUT -p TCP -m state --state NEW -d xx.xxx.xxx.xx --dport 80 -m limit --limit 20/minute --limit-burst 20 -j ACCEPT
直到昨晚有人不停地訪問我的 80 埠時,它一直執行良好。根據規則,連接被丟棄了(如日誌中所示)。但是,它也使其他合法使用者也無法使用伺服器。
我不明白為什麼會這樣。我認為它不會影響除了淹沒伺服器的使用者之外的任何其他使用者。
是因為iptables不堪重負嗎?
任何回饋將不勝感激。
謝謝!
您的規則似乎沒有指定任何特定的來源。在一分鐘內接受 20 個新連接後,它停止接受新連接。
您需要使用該
recent
模組,以便 iptables 記住連接的來源並阻止從同一地址連接過快的人。這需要兩條規則:一條讓 iptables “學習”地址,然後一條讓 iptables 查看該地址在指定時間內訪問伺服器的次數:/sbin/iptables -A INPUT -p TCP -m state --state NEW -d xx.xxx.xxx.xx --dport 80 -m recent --set /sbin/iptables -A INPUT -p TCP -m state --state NEW -d xx.xxx.xxx.xx --dport 80 -m recent --update --seconds 60 --hitcount 20 -j DROP
本文將詳細介紹。