nftables每多秒的速率限制

  • 本文关键字:速率 nftables nftables
  • 更新时间 :
  • 英文 :


我正在尝试将一些iptables规则转换为nftables我想制定一个规则,如果在30秒内有4次以上的尝试,则阻止连接

我最初的iptables规则是:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 30 --hitcount 4 --rttl --name SSH -j DROP

如何在nftables中执行相同(或等效(操作?

据我所知,iptables最近的模块在nftables中没有等效的模块,但是,您应该能够使用仪表实现类似的功能。

nft add rule ip filter INPUT tcp dport 22 ct state new meter SSHban { ip saddr and 255.255.255.255 limit rate over 8/minute burst 4 packets } counter drop

此处记录:https://wiki.nftables.org/wiki-nftables/index.php/Meters

我试了几个月,找不到完全匹配的。但我有一个变通办法。

sshPort=2222
nft add table ip sshGuard
nft add chain ip sshGuard input { type filter hook input priority 0 ; }
nft add set ip sshGuard denylist { type ipv4_addr ; flags dynamic, timeout ; timeout 5m ; }
nft add set ip sshGuard sshlist { type ipv4_addr ; flags dynamic, timeout ; timeout 5m ; }
nft add rule ip sshGuard input ct state established,related accept
nft add rule ip sshGuard input tcp dport $sshPort ct state new ip saddr @denylist reject
nft add rule ip sshGuard input tcp dport $sshPort ct state new ip saddr @sshlist add @denylist { ip saddr } accept
nft add rule ip sshGuard input tcp dport $sshPort ct state new limit rate over 2/minute burst 3 packets add @sshlist { ip saddr } counter accept
nft list table ip sshGuard

对于新状态,任何新IP都将接受大约5个连接。如果limit rate被命中,则新IP(不在sshlist中(有2次机会。对于sshlist中的任何IP,只剩下一次机会。对于denylist中的任何IP,任何新连接都将被拒绝,直到它在5分钟超时时从denylist中删除。

相关内容

  • 没有找到相关文章

最新更新