我想对每个 IP到运行 firewalld 的服务器的 ssh 连接进行速率限制。
假设我的 sshd 在端口 2222 上侦听,并且我想将每个 IP 的 ssh 连接限制为每分钟 3 个。我试过:
sudo firewall-cmd --add-rich-rule \
'rule port port="2222" protocol="tcp" accept limit value="3/m"'
然后在另一台机器上运行:
ssh myserver echo hello; \
ssh myserver echo hello; \
ssh myserver echo hello; \
ssh myserver echo hello; \ # should fail, but actually logs in
ssh myserver echo hello # should fail, but actually logs in
...
它每次都登录。没有速率限制。
我的错误在哪里?
似乎这还不可能使用 firewalld 的“丰富规则”。
所以我通过 firewalld 的
direct
功能使用常规的 iptables 规则。(我正在使用 firewalld 的 iptables 后端,因为 docker 还不能与 nftables 一起工作。)去测试: