如何更改默认的防火墙行为以在重新加载时删除所有已建立的连接

如何更改默认的防火墙行为以在重新加载时删除所有已建立的连接

我有一个 Web 服务器和 sshd 服务正在运行,并在其端口上监听连接。我想要实现的是,当我将区域从公共区域更改为禁止端口 22 或 443 的区域时,我当前的连接将过期。现在,在禁止这些端口并重新加载防火墙后,连接仍然有效。

我认为这可以通过添加直接规则来实现,但我不知道该规则应该是什么样子以及如何将其放在顶部。

答案1

firewalld手册页:

--reload

重新加载防火墙规则并保存状态信息。 [...]

--complete-reload

完全重新加载防火墙,甚至 netfilter 内核模块。这将 最有可能终止活动连接,因为状态信息丢失了。[...]

这样做firewall-cmd --complete-reload将是一种繁琐的方法,但可以达到目的。实际上,它不应该终止在新规则集中仍然允许的已建立 TCP 连接,这要归功于net.netfilter.nf_conntrack_tcp_loose = 1(它们应该通过 NEW->ESTABLISHED 返回而不会丢失连接)。

但与此相比,使用专用工具删除 Netfilter 的 conntrack 状态更简单:(conntrack需要安装通常名为连接跟踪或者conntrack 工具)。

conntrack -F

或者有选择地进行(地址范围等附加选项可以使其更具选择性):

conntrack -D -p tcp --dport 443; conntrack -D -p tcp --dport 22

相关内容