在Rocky Linux中通过firewalld管理防火墙的核心在于理解区域(Zone)机制与规则优先级。根据经验,建议遵循以下步骤:
-
区域规划:
- 预先定义不同网络场景(如public/dmz/internal)的zone,使用
firewall-cmd --get-zones
查看默认zone列表 - 通过
firewall-cmd --set-default-zone=internal
设置默认zone,避免直接修改public zone
- 预先定义不同网络场景(如public/dmz/internal)的zone,使用
-
服务管理:
- 优先使用预置服务(
firewall-cmd --get-services
)而非直接开放端口,如firewall-cmd --add-service=http --permanent
- 对自定义服务建议新建service XML文件到/etc/firewalld/services
- 优先使用预置服务(
-
规则持久化:
- 所有临时规则必须通过
--runtime-to-permanent
固化,避免服务重启失效 - 定期备份/etc/firewalld目录,特别是在批量修改前
- 所有临时规则必须通过
-
高级防护:
- 使用rich rule处理复杂场景,如
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 service name=ssh log prefix="ssh_attempt" level=notice accept'
- 启用
panic-on
模式前需确认应急访问通道
- 使用rich rule处理复杂场景,如
-
排错流程:
- 检查
firewall-cmd --state
与journalctl -u firewalld - 使用
--timeout
参数测试临时规则效果 - 当规则冲突时,zone优先级顺序为:绑定接口的zone > 默认zone
- 检查
最佳实践是保持最小开放原则,通过nmap localhost
定期验证规则有效性。对生产环境建议采用ansible等工具进行配置管理,避免人工操作失误。