为了减轻我从日志中过滤丢失的数据包的痛苦,我认为我将“首先”过滤掉端口扫描并单独记录它们。
但是我似乎找不到任何关于如何使用 nft 来实现这一点的文档。iptables 上有很多内容,但 nft wiki 似乎表明无法直接翻译?
此外,他们的例子虽然展示了如何匹配,但并没有展示如何更新哈希集。
https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_ipset_to_nftables
关于如何使用 nft 过滤端口扫描,有什么建议吗?除了使用第三方工具(如 fail2ban)(这是备用方案)
(系统为centos 8服务器,CLI)
答案1
根据@ciuly 的链接,这里有一个支持 IPv6 和 IPv4 的扩展版本。需要 Linux 内核 >= 5.5
table ip block_tcp_portscan {
set enemies {
type ipv4_addr
flags timeout
timeout 5m
}
chain INPUT {
type filter hook input priority 0; policy accept;
ip saddr @enemies update @enemies { ip saddr }
tcp dport { 1-21, 23-24, 26-79 } update @enemies { ip saddr }
ip saddr @enemies log drop
}
}
table ip6 block_tcp_portscan_v6 {
set enemies {
type ipv6_addr
flags timeout
timeout 5m
}
chain INPUT {
type filter hook input priority 0; policy accept;
ip6 saddr @enemies update @enemies { ip6 saddr }
tcp dport { 1-21, 23-24, 26-79 } update @enemies { ip6 saddr }
ip6 saddr @enemies log drop
}
}