温馨提示×

CentOS防火墙恢复配置的方法

小樊
38
2026-01-05 23:59:47
栏目: 智能运维

CentOS 防火墙恢复配置的方法

一、先确认防火墙栈与当前状态

  • 查看 firewalld 服务状态:sudo systemctl status firewalld(Active 为 active (running) 表示运行中,inactive (dead) 表示已停止)。
  • 查看 firewalld 运行状态:firewall-cmd --state(返回 running/not running)。
  • 查看当前生效规则:sudo firewall-cmd --list-all(按区域展示,如 public 区域)。
  • 若为 CentOS 6 或使用 iptables 的场景:sudo service iptables status
    以上命令用于判断当前使用的是 firewalld 还是 iptables,从而选择对应的恢复路径。

二、使用 firewalld 的恢复路径

  • 重启服务以恢复运行态配置:sudo systemctl restart firewalld(适用于规则已变更但未生效或出现异常时)。
  • 完全重置为默认区域与空规则(会清空现有规则,谨慎):
    1. 将默认区域设为 publicsudo firewall-cmd --set-default-zone=public
    2. 获取当前区域:cur_zone=$(firewall-cmd --get-default-zone)
    3. 清空该区域的服务、端口、转发、富规则:sudo firewall-cmd --permanent --zone=$cur_zone --remove-service=all && sudo firewall-cmd --permanent --zone=$cur_zone --remove-port=all && sudo firewall-cmd --permanent --zone=$cur_zone --remove-forward-port=all && sudo firewall-cmd --permanent --zone=$cur_zone --remove-rich-rule=all
    4. 使重置生效:sudo firewall-cmd --reload
  • 确保开机自启处于期望状态:sudo systemctl enable --now firewalld(开启并立即启动),或 sudo systemctl disable firewalld(禁止开机自启)。
  • 验证:firewall-cmd --list-all 应仅保留默认区域的基础设置。

三、使用 iptables 的恢复路径(CentOS 6 或已切换到 iptables 的场景)

  • 重启服务以恢复规则:sudo service iptables restart(读取 /etc/sysconfig/iptables 的当前配置)。
  • 将规则恢复到系统安装后的默认空规则:
    1. 保存现有规则(可选,备份):sudo service iptables save(写入 /etc/sysconfig/iptables
    2. 写入最小化默认规则(示例):
      • 清空:sudo iptables -F && sudo iptables -X && sudo iptables -Z
      • 允许回环:sudo iptables -I INPUT 1 -i lo -j ACCEPT
      • 允许已建立连接:sudo iptables -I INPUT 2 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
      • 允许 SSH(示例端口 22):sudo iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT
      • 默认拒绝入站:sudo iptables -A INPUT -j DROP
    3. 保存为默认配置:sudo service iptables save
  • 确保开机自启:sudo chkconfig iptables on;如需临时放行某端口,可在规则中插入相应 ACCEPT 规则后再保存。

四、回滚到已备份配置

  • firewalld:
    • 若之前导出了规则:sudo firewall-cmd --permanent --new-zone=backup
    • 导入到备份区域:sudo firewall-cmd --permanent --zone=backup --load-zone-from-file=/path/backup.xml
    • 切换默认区域或复制规则回默认区域,然后 sudo firewall-cmd --reload
  • iptables:
    • 直接使用备份文件覆盖:sudo cp /path/iptables.bak /etc/sysconfig/iptables && sudo service iptables restart(路径与文件名以实际备份为准)。

五、验证与注意事项

  • 验证:
    • firewalld:firewall-cmd --state 应为 runningfirewall-cmd --list-all 应显示预期的服务/端口;必要时 sudo firewall-cmd --reload
    • iptables:sudo service iptables status 显示规则已加载;sudo iptables -L -n 可查看链规则。
  • 注意事项:
    • 执行清空或重置规则前,务必保留一份当前规则备份,并确保 SSH(22/TCP) 等关键通道在重置后仍然可达,避免被锁死。
    • 修改规则后,firewalld 需要 firewall-cmd --reload 或重启服务;iptables 需要 service iptables restart 才会生效。

0