限制每秒全局连接数

限制每秒全局连接数

我想限制某个端口上所有传入的新连接的数量,而不仅仅是来自一个 IP,例如:

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/s -j DROP

但我不明白哪里出了问题。它工作了一次/两次,尝试了不同的限制,之后它现在丢弃了所有新连接。(是的,每次在以各种形式添加规则之前,我都会刷新 iptables)。

EDIT1:我试过了

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 5 --hitcount 5 --name SSH -j DROP

并且它似乎可以正常工作。这会影响所有连接还是仅影响来自同一 IP 的连接?

答案1

如果您想要将新连接的数量限制为3/s,则必须将规则目标更改ACCEPTDROP

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/s -j ACCEPT

您可以阅读man iptables

limit
   This module matches at a limited rate using a token bucket filter.
   A rule using this extension will match until this limit is reached

因此,您的规则将丢弃所有新连接,直到达到限制!!!

相关内容