firewalld作为CentOS/RHEL 7+默认的动态防火墙管理工具,以其灵活的区域(zone)管理和富规则(rich rule)功能,成为替代传统iptables的优选方案。本文将深入解析firewalld的核心配置与实战技巧,助你轻松掌握这一高效防火墙工具!
一、firewalld的核心:区域(Zone)管理
1. 默认区域的作用
-
默认区域决定了未明确匹配其他区域规则的流量处理方式。
-
查看与设置默认区域:
firewall-cmd --get-default-zone # 查看当前默认区域 firewall-cmd --set-default-zone=home # 临时设置默认区域为home firewall-cmd --permanent --set-default-zone=public # 永久生效
2. 关联源IP或网卡到区域
-
关联源IP网段:
firewall-cmd --permanent --add-source=10.0.0.0/24 --zone=home # 永久添加 firewall-cmd --reload # 重载配置生效
-
关联网卡:
firewall-cmd --permanent --add-interface=ens33 --zone=public firewall-cmd --reload
3. 查看与验证关联关系
firewall-cmd --list-all --zone=home # 列出home区域所有配置
firewall-cmd --query-source=10.0.0.0/24 --zone=home # 检查源IP是否关联
二、基本规则配置:服务与端口管理
1. 允许HTTP服务
firewall-cmd --permanent --add-service=http --zone=public
firewall-cmd --reload
2. 开放指定端口
firewall-cmd --permanent --add-port=8080/tcp # 开放TCP 8080端口
firewall-cmd --reload
3. 移除规则
firewall-cmd --permanent --remove-service=ftp # 移除FTP服务
firewall-cmd --permanent --remove-port=21/tcp # 关闭21端口
firewall-cmd --reload
三、高级策略:富规则(Rich Rule)实战
富规则支持精细化的流量控制,如基于源IP、协议和端口的策略。
1. 允许特定网段访问HTTP,拒绝FTP
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/24 service name=http accept'
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/24 service name=ftp reject'
firewall-cmd --reload
2. 拒绝ICMP(Ping请求)
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/24 protocol value=icmp reject'
firewall-cmd --reload
四、网络地址转换(NAT)配置
1. SNAT:内网访问外网(IP伪装)
firewall-cmd --permanent --add-masquerade # 开启IP伪装(SNAT)
firewall-cmd --reload
2. DNAT:外网访问内网服务(端口转发)
# 将外网8000端口转发到内网172.16.0.100的80端口
firewall-cmd --permanent --add-forward-port=port=8000:proto=tcp:toport=80:toaddr=172.16.0.100
firewall-cmd --reload
五、特殊流量处理
1. 允许OSPF动态路由协议
firewall-cmd --permanent --add-rich-rule='rule protocol value=ospf accept'
firewall-cmd --reload
六、总结与最佳实践
-
规则优先级:富规则优先于基本规则,精确匹配优先于范围匹配。
-
默认区域风险:避免在默认区域开放高风险服务。
-
持久化配置:始终使用
--permanent
保存规则,并通过--reload
生效。 -
验证与测试:使用
curl
、telnet
等工具测试规则是否生效。