小编Tom*_*ski的帖子

带有 hashlimit 和“--state NEW”的 iptables 阻止了太多新连接

我已经设置了速率限制来阻止对我的 ssh 服务器的暴力攻击。我使用以下 iptables 规则:

iptables -A INPUT -p tcp -m tcp --dport 22 -m hashlimit --hashlimit-upto 4/min
--hashlimit-burst 6 --hashlimit-mode srcip --hashlimit-name ssh
--hashlimit-htable-expire 60000 -m state --state NEW -j ACCEPT

iptables -A INPUT -m tcp -p tcp --dport 22 -m state --state NEW -j REJECT
Run Code Online (Sandbox Code Playgroud)

当我打开一个 SSH 连接(例如通过 PuTTY),然后一分钟后尝试打开另一个连接(例如,传输文件)时,第二个连接有时会被拒绝,服务器没有响应。如果我设法打开第二个 SSH 连接,然后尝试打开第三个连接,它会变得更加困难(很可能没有响应)。

我已经验证,当我禁用上述规则时,一切正常。增加--hashlimit-upto和/或--hashlimit-burst有帮助,但并不能完全解决问题——它只会降低问题发生的可能性。有时仍然会发生拒绝,但如果我禁用 iptables 规则,则永远不会发生。

到底是怎么回事?上述 iptables 规则规定,与新连接相关的 TCP 数据包应限制为每分钟 4 个。所以我应该能够轻松地每分钟打开最多 4 个连接。

iptables linux-networking

2
推荐指数
1
解决办法
4427
查看次数

标签 统计

iptables ×1

linux-networking ×1