使用 iptables 對連接埠 80 進行速率限制是否被視為浪費?

使用 iptables 對連接埠 80 進行速率限制是否被視為浪費?

我正在考慮將以下規則新增到我的 IP 表中:

-A INPUT -p tcp -m state --state NEW -m recent --update --dport 80 --seconds 5 --hitcount 10 -j DROP
-A INPUT -p tcp -m state --state NEW -m recent --set --dport 80 -j ACCEPT

以避免對我的 Web API 進行基於 Ajax 的意外濫用(過多請求)。

由於連接埠 80 請求的常見性,這種狀態過濾是否被認為是資源密集的或浪費的(與速率限制連接埠 22 之類的東西相比,這會導致狀態少得多)?我意識到在專用防火牆中執行此操作是理想的,但我正在嘗試查看我可以在我的伺服器中完成什麼。

答案1

我不知道使用狀態模組與過濾 SYN 資料包的性能(這將有效地實現相同的技巧)。

也許您可以測試一下...嘗試添加您的規則 - 然後使用 Apache Bench 或類似的工具來產生盡可能多的請求,同時監視伺服器的 CPU 和記憶體使用情況。然後嘗試新增以下規則:

-N tcpsyn
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j tcpsyn

-A tcpsyn -p tcp --dport 80 -m limit --limit 5/second --limit-burst 20 -j RETURN
-A tcpsyn -p tcp --dport 80 -j DROP

...並對其進行基準測試。

相關內容