麒麟系统firewalld需通过规则配置实现流量精细控制:一、绑定接口到区域;二、开放端口(分临时/永久);三、按服务名批量放行;四、用富规则实现源IP限制等高级策略;五、禁用ICMP响应加固。

如果您已启用麒麟操作系统的firewalld服务,但需要精细控制入站与出站流量,则必须通过firewalld规则配置实现策略落地。以下是针对不同场景的firewalld规则配置方法:
一、配置默认区域与接口绑定
区域(Zone)是firewalld策略管理的基础单元,决定网卡接口所应用的安全等级。正确绑定接口到合适区域,是所有后续规则生效的前提。
1、查看当前默认区域:sudo firewall-cmd --get-default-zone
2、查看所有活跃区域及其绑定的网络接口:sudo firewall-cmd --get-active-zones
3、将指定网卡(如eth0)永久绑定至public区域:sudo firewall-cmd --zone=public --change-interface=eth0 --permanent
4、重载防火墙使绑定生效:sudo firewall-cmd --reload
二、开放指定端口(TCP/UDP)
直接放行特定端口是最常见的策略需求,firewalld要求区分运行时与永久配置,并需显式重载才能持久化。
1、临时开放TCP 8080端口(重启后失效):sudo firewall-cmd --zone=public --add-port=8080/tcp
2、永久开放TCP 8080端口(写入配置文件):sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
3、永久开放UDP 53端口(DNS查询):sudo firewall-cmd --zone=public --add-port=53/udp --permanent
4、重载配置以激活所有永久规则:sudo firewall-cmd --reload
三、基于服务名批量放行
firewalld预置了标准化服务定义(如ssh、http、https),使用服务名可自动加载对应协议、端口及辅助模块,比手动开端口更安全可靠。
1、查看系统支持的所有预定义服务:sudo firewall-cmd --get-services
2、永久允许SSH服务(自动放行TCP 22端口并启用相关连接跟踪):sudo firewall-cmd --zone=public --add-service=ssh --permanent
3、永久允许HTTP与HTTPS服务:sudo firewall-cmd --zone=public --add-service=http --add-service=https --permanent
4、重载配置确认生效:sudo firewall-cmd --reload
四、添加富规则(Rich Rules)实现细粒度控制
富规则支持源IP限制、日志记录、端口转发等高级策略,适用于需按来源、协议状态或动作类型精准匹配的场景。
1、仅允许来自192.168.1.0/24网段访问TCP 22端口:sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept' --permanent
2、拒绝来自10.0.0.100的所有连接并记录日志:sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.100" log prefix="blocked-host-" level="info" reject' --permanent
3、为本地80端口请求转发至192.168.1.10:8080(需启用ip_forward):sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" forward-port port="80" protocol="tcp" to-port="8080" to-addr="192.168.1.10"' --permanent
4、重载配置使富规则生效:sudo firewall-cmd --reload
五、禁用ICMP响应(禁止ping)
禁用ICMP echo-request响应可降低主机在网络扫描中的可见性,属于基础加固手段之一。
1、查看当前区域是否启用icmp-echo规则:sudo firewall-cmd --zone=public --list-icmptypes
2、永久移除icmp-echo响应能力:sudo firewall-cmd --zone=public --remove-icmp-block=echo-request --permanent
3、若需彻底屏蔽所有ICMP请求(含不可达、超时等),执行:sudo firewall-cmd --zone=public --add-icmp-block=echo-request --permanent
4、重载配置完成屏蔽:sudo firewall-cmd --reload

















