🧠firewall-cmd

🧠 如何安全地添加 drop 规则

要让 “放行自己 + 拒绝其他人” 安全生效,有三种正确做法:

✅ 方法 1:明确添加 priority(推荐)

在 rich rule 中加 priority 参数:

先放行自己

firewall-cmd --zone=public \
--add-rich-rule='rule priority="1" family="ipv4" source address="ip" port port="22" protocol="tcp" accept' --permanent

再丢弃其他人

firewall-cmd --zone=public \
--add-rich-rule='rule priority="2" family="ipv4" port port="22" protocol="tcp" drop' --permanent

firewall-cmd --reload
priority 值越小,优先级越高。
所以 priority="1" 的放行规则会在 drop 之前执行。

✅ 方法 2:只在 drop 规则中限定来源

如果只想屏蔽部分网段,不写全局 drop:
firewall-cmd --zone=public \
--add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port port="22" protocol="tcp" drop' --permanent
⚠️ 但要确保自己所在的网段已被 accept 放行。

✅ 方法 3:通过普通 service / port 配合

不要用 rich rule 来 drop SSH,
而是在 service 层定义 --remove-service=ssh,再配合 rich rule 放行特定源:
firewall-cmd --zone=public --remove-service=ssh --permanent
firewall-cmd --zone=public \
--add-rich-rule='rule family="ipv4" source address="ip.0/24" service name="ssh" accept' --permanent
firewall-cmd --reload

全局drop

firewall-cmd --zone=public \
--add-rich-rule='rule family="ipv4" port port="22" protocol="tcp" drop' --permanent

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="22" drop'

firewall-cmd --get-active-zones

docker
interfaces: docker0
libvirt
interfaces: virbr0
public
interfaces: enp95s0f1np1

[root@tech201 ~]# firewall-cmd --zone=public --get-target --permanent
default

版权声明:
作者:yxbinghe
链接:https://www.zhanhao.ch/?p=591
来源:ice.99
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>