我想限制某个端口上所有传入的新连接的数量,而不仅仅是来自一个 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
,则必须将规则目标更改ACCEPT
为DROP
:
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
因此,您的规则将丢弃所有新连接,直到达到限制!!!