我试图在 Fedora 36 中设置防火墙来阻止所有输入和输出连接,并只允许某些传出通信。
- 该计算机不是任何类型的服务器,因此我们希望阻止所有传入连接。
- 我只想允许一些选定的端口能够发送流量。
这就是我能想到的:
- 所有接口的默认区域设置为:民众
- 默认公共区域目标设置为:降低
- 公共区域中没有配置任何服务、端口、协议...。
- 计算机上根本未启用 IPv6。
- 计算机具有静态 IPv4,因此不需要 dhcp 端口。
- 我正在一台新的 Fedora 机器上测试这个,没有安装额外的网络软件。
- 每次更改后,防火墙都会重新加载。
- 其余部分使用直接规则进行配置:
ipv4 filter OUTPUT 0 -p tcp -m tcp --dport 53 -j ACCEPT
ipv4 filter OUTPUT 0 -p tcp -m tcp --dport 80 -j ACCEPT
ipv4 filter OUTPUT 0 -p tcp -m tcp --dport 443 -j ACCEPT
ipv4 filter OUTPUT 1 -m state --state ESTABLISHED,RELATED -j ACCEPT
ipv4 filter OUTPUT 2 -m state --state INVALID -j DROP
ipv4 filter OUTPUT 3 -o lo -j ACCEPT
ipv4 filter OUTPUT 4 -j DROP
这是行不通的。我无法加载任何网站。
如果我将 NEW 添加到上面的 --state 规则中,我就可以加载网站。
ipv4 filter OUTPUT 1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
但是,如果我然后删除所有 --dport 规则,等到ss -tupan
显示没有等待连接,我仍然可以加载新网站,无论这些生成的规则没有明确允许任何端口:
ipv4 filter OUTPUT 1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
ipv4 filter OUTPUT 2 -m state --state INVALID -j DROP
ipv4 filter OUTPUT 3 -o lo -j ACCEPT
ipv4 filter OUTPUT 4 -j DROP
将 --dport 规则从 ACCEPT 更改为 DROP 确实会阻止网站加载,但这不是我想要的。
我的理解是,如果没有 --dport 规则,所有内容都应该被删除,并且只有 --dport 规则允许特定端口。所以我不需要新状态。
我怎样才能让它表现得像那样?
谢谢。