Linux

iptables 限速模組問題

  • September 12, 2011

我正在使用 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

本文將詳細介紹。

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