这是我的/etc/sysconfig/nftables.conf
#!/usr/sbin/nft -f
flush ruleset
table ip filter {
chain input {
type filter hook input priority filter; policy accept;
ct state established,related counter packets 264 bytes 17996 accept
ct state invalid drop
tcp dport 22 ip saddr 192.168.0.0/16 accept
udp sport 53 accept
drop
}
chain forward {
type filter hook forward priority filter; policy accept;
}
chain output {
type filter hook output priority filter; policy accept;
}
}
当我使用nft -f /etc/sysconfig/nftables.conf
但重新启动后,我还会在上面显示的表格下方得到这些附加规则:
table bridge filter {
chain INPUT {
type filter hook input priority filter; policy accept;
}
chain FORWARD {
type filter hook forward priority filter; policy accept;
}
chain OUTPUT {
type filter hook output priority filter; policy accept;
}
}
我不明白是什么?
附加问题。我正在尝试加固机器。该机器本质上应该用于浏览网页,因此必须允许这样做。我希望能够从本地网络通过 ssh 连接到它。我是否错过了一些重要的事情?
答案1
这是由较新版本的命令创建的兼容性表和链ebtables
,用于操作桥接器,但使用nftables内核 API 在ebtables兼容模式。有些东西在某处运行了ebtables
命令,即使只是为了验证没有ebtables存在规则,或者可能自动加载一些ebtables规则集,已转换为nftables规则集。
你可以通过几种方法知道就是这样(在 CentOS8 上):
实际可执行文件
# readlink -e /usr/sbin/ebtables /usr/sbin/xtables-nft-multi
显示版本
# ebtables -V ebtables 1.8.2 (nf_tables)
规则监控
术语1:
# nft -f /etc/sysconfig/nftables.conf # nft monitor #command waits in event mode
术语2:
# ebtables -L Bridge table: filter Bridge chain: INPUT, entries: 0, policy: ACCEPT Bridge chain: FORWARD, entries: 0, policy: ACCEPT Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
再次第 1 学期(Fedora 较新的nftables版本将显示网桥的
-200
优先级价值以其象征性的相等的filter
):add table bridge filter add chain bridge filter INPUT { type filter hook input priority -200; policy accept; } add chain bridge filter FORWARD { type filter hook forward priority -200; policy accept; } add chain bridge filter OUTPUT { type filter hook output priority -200; policy accept; } # new generation 7 by process 16326 (ebtables)
由于基础链不包含任何规则并且具有接受政策,不会有任何影响。该系统还需要有一座桥才能使用这张桌子和链条。
如果 CentOS8 和您当前的 Fedora 版本仍然足够接近,这可能是通过使用 systemd 创建的ebtables服务来自iptables-ebtables包裹。如果不需要桥接过滤,可以考虑删除这个包。您仍然可以使用NFFT如果确实需要的话。
事实上,添加的桌子是家庭的桥告诉它是ebtables而不是iptables,ip6表或者arp表这都会产生相同的行为,如果尚未呈现的话,则会创建一个不同的表系列(分别是)。ip,ip6或者ARP)及其基础链。因此,应该避免使用相同的表名以避免任何冲突,或者至少不要使用相同的表+链组合(例如:NFFT(大写)链中的规则ip filter INPUT
可能会与iptablesETC。)
有关此的更多信息,请参见此处:
从 iptables 迁移到 nftables - nftables wiki
使用 iptables-nft:混合 Linux 防火墙 - Red Hat
关于附加问题:
您的规则似乎允许基本客户端使用(包括从 LAN 进行 SSH 访问),但有一个重要的例外:
udp sport 53 accept
将允许访问任何你系统的UDP端口,只要从UDP源端口53进行“扫描”即可。
将其替换为以下更明智的规则:
iif lo accept
允许本地通信不受阻碍(包括可能的本地 DNS 服务器)。