要清空并重置 firewalld 到初始安全状态:先永久移除所有自定义规则,再恢复 public 默认区域配置,最后仅保留 ssh 服务并重载生效。

清空并重置 firewalld 的默认规则,不是简单“一键清除”,而是要分步还原到初始安全状态:先移除所有自定义的永久规则,再恢复默认区域配置,最后确保 public 区域干净、无冗余放行项。
确认当前配置和活跃区域
执行以下命令,看清哪些规则实际在起作用:
- firewall-cmd --state —— 确认 firewalld 正在运行
- firewall-cmd --get-default-zone —— 查默认区域(通常是 public)
- firewall-cmd --get-active-zones —— 查看哪些 zone 已绑定接口或源地址
- firewall-cmd --zone=public --list-all —— 重点检查已开放的端口、服务、富规则和源地址
逐类移除用户添加的永久规则
所有删除操作必须带 --permanent,且参数需与当初添加时完全一致。常见清理动作包括:
- 删自定义端口:firewall-cmd --permanent --zone=public --remove-port=8080/tcp
- 删端口范围:firewall-cmd --permanent --zone=public --remove-port=9000-9010/udp
- 删误加的服务:firewall-cmd --permanent --zone=public --remove-service=http
- 删富规则(如 IP 白名单):firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
- 删源地址绑定:firewall-cmd --permanent --remove-source=10.0.0.0/8
重置区域为出厂默认行为
firewalld 不提供“factory reset”命令,但可通过组合操作达到等效效果:
- 将默认 zone 设为 public(若已被改过):firewall-cmd --set-default-zone=public
- 清空 public zone 所有自定义源地址:firewall-cmd --permanent --zone=public --remove-source=0.0.0.0/0(如有)
- 禁用所有非基础服务(如仅保留 ssh):firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client(可选)
- 确认 public zone 仅含最小必要项:通常只应保留 ssh 服务,其余端口和服务全清空
保存变更并验证结果
完成上述删除后,必须重载才能生效:
- 执行:firewall-cmd --reload(安全,不中断现有连接)
- 再次运行:firewall-cmd --zone=public --list-all,确认输出中 ports、services、rich rules、sources 均为空或仅剩 ssh
- 可选验证:firewall-cmd --check-config 检查配置语法是否有效











