如何使用firewall-cmd 立即阻止 IP 地址?

如何使用firewall-cmd 立即阻止 IP 地址?

要复制此问题,请准备两台具有各自 IP 地址的不同服务器。现在开始从第二台服务器 ping 其中一台服务器,并在 ping 的同时使用以下两个命令之一在第二台服务器上阻止第一台服务器的 IP:

firewall-cmd -q --permanent --add-rich-rule="rule family='ipv4' source address=IP-ADDRESS-HERE reject"

或者

firewall-cmd --permanent --zone=drop --add-source=IP-ADDRESS-HERE

然后运行以下命令之一:

firewall-cmd --reload
firewall-cmd --complete-reload
systemctl restart firewalld

ping 操作永不停止。只有当您中断第一台服务器上的 ping 操作过程并重试时,才会失败。

我可能遇到了同样的问题为什么firewalld 没有应用我的丢弃规则?,但不幸的是,那一个没有任何好的答案。

我尝试了很多不同的方法,但无法立即删除原始 ping 源。换句话说,如果发现有人攻击您的服务器,您会立即阻止他们的 IP,但您的防火墙无法当场执行此操作,这让我很担心。

如何让firewalld立即当场阻止某个IP地址?

答案1

在默认规则集的最顶部,有一条规则可以自动允许属于已知数据包流或已建立的连接。这意味着您可以接收入站响应,而无需手动允许它们进入防火墙,但这也意味着即使防火墙插入了阻止它们的后续规则,活动连接仍将保持允许状态。

您可以使用该conntrack工具检查已知状态并按协议或源 IP 地址单独删除它们。

答案2

您需要安装 conntrack 并删除已建立的连接:

yum install conntrack-tools
conntrack -F

相关内容