我使用以下命令实现了 SSH 连接速率限制。
iptables -N SSH_BRUTE_FORCE_MITIGATION
iptables -A SSH_BRUTE_FORCE_MITIGATION -m recent --name SSH --set
iptables -A SSH_BRUTE_FORCE_MITIGATION -m recent --name SSH --update --seconds 300 --hitcount 10 -m limit --limit 1/second --limit-burst 100 -j LOG --log-prefix "iptables[ssh-brute-force]: "
iptables -A SSH_BRUTE_FORCE_MITIGATION -m recent --name SSH --update --seconds 300 --hitcount 10 -j DROP
iptables -A SSH_BRUTE_FORCE_MITIGATION -j ACCEPT
我如何重置速率限制计数器?
编辑:已尝试sudo iptables -Z
,但出现以下错误。
$ sudo iptables -Z
[sudo] password for pi:
iptables v1.8.2 (nf_tables): RULE_REPLACE failed (Invalid argument): rule in chain INPUT
答案1
要重置-m recent --name SSH
数据:
echo / | sudo tee /proc/net/xt_recent/SSH
来自man 8 iptables-extensions
,“最近”部分:
/proc/net/xt_recent/* are the current lists of addresses
and information about each entry of each list.
Each file in /proc/net/xt_recent/ can be read from to see
the current list or written two using the following commands to modify the list:
echo +addr >/proc/net/xt_recent/DEFAULT
to add addr to the DEFAULT list
echo -addr >/proc/net/xt_recent/DEFAULT
to remove addr from the DEFAULT list
echo / >/proc/net/xt_recent/DEFAULT
to flush the DEFAULT list (remove all entries).
这是不是与每个规则的数据包/字节计数器相同,可以使用 清除iptables -Z
。
这也是不是与-m limit
您用于限制速率的日志记录) 或-m hashlimit
计数器。它们不提供此类 proc 接口。可能的解决方法:
- 卸载模块
xt_recent
//xt_limit
将xt_hashlimit
丢弃相应的相关数据- 仅在当前没有规则使用它时才有可能
- 需要作为模块构建 - 不支持卸载内置函数
- 更改规则以使用不同的
--name
/--hashlimit-name
(附加一个数字即可)- 不是原子交易
- 根据替换顺序,可能瞬间导致意外行为