我有一个 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