如何重置 iptables 速率限制计数器?

如何重置 iptables 速率限制计数器?

我使用以下命令实现了 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 接口。可能的解决方法:

  1. 卸载模块xt_recent//xt_limitxt_hashlimit丢弃相应的相关数据
    • 仅在当前没有规则使用它时才有可能
    • 需要作为模块构建 - 不支持卸载内置函数
  2. 更改规则以使用不同的--name/ --hashlimit-name(附加一个数字即可)
    • 不是原子交易
    • 根据替换顺序,可能瞬间导致意外行为

相关内容