nftables 过滤端口扫描

nftables 过滤端口扫描

为了减轻我从日志中过滤丢失的数据包的痛苦,我认为我将“首先”过滤掉端口扫描并单独记录它们。

但是我似乎找不到任何关于如何使用 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
    }
}

相关内容