Iptables

如何重置 iptables 速率限制計數器?

  • April 19, 2021

我使用以下實現了 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

要重置-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_limit數據xt_hashlimit
  • 只有在目前沒有規則使用它時才有可能
  • 需要建構為模組 - 不支持解除安裝內置函式
  1. 更改規則以使用不同的--name/ --hashlimit-name(附加一個數字就可以了)
  • 不是原子事務
  • 根據更換順序,可能暫時意味著意外行為

引用自:https://serverfault.com/questions/1060841