温馨提示×

centos防火墙恢复配置步骤

小樊
38
2025-12-25 07:22:20
栏目: 智能运维

CentOS 防火墙恢复配置步骤

一、操作前准备

  • 明确当前使用的防火墙栈:CentOS 7/8 默认使用 firewalld;CentOS 6 使用 iptables
  • 做好备份:
    • firewalld:备份当前运行时配置与永久配置
      • 运行时:sudo firewall-cmd --runtime-to-permanent(将当前运行时规则写入永久区)
      • 永久区:sudo cp -a /etc/firewalld /root/firewalld-$(date +%F)
    • iptables:导出规则
      • sudo iptables-save > /root/iptables-$(date +%F).rules
  • 远程操作风险提示:避免完全阻断 SSH(建议先放行 22/TCP),必要时在控制台执行,或设置计划任务在短时间后恢复规则,以防会话中断。

二、场景化恢复步骤

  • 场景A:恢复到之前的 firewalld 配置
    1. 确认服务:sudo systemctl status firewalld(若未安装:sudo yum install -y firewalld
    2. 恢复永久配置:sudo firewall-cmd --reload
    3. 若之前做过整机备份:sudo cp -a /root/firewalld-YYYY-MM-DD /etc/firewalld && sudo firewall-cmd --reload
    4. 校验:firewall-cmd --statefirewall-cmd --list-all
  • 场景B:从 iptables 切换回 firewalld
    1. 停止并屏蔽旧的 iptables 服务:sudo systemctl stop iptables && sudo systemctl mask iptables
    2. 启动 firewalld:sudo systemctl unmask firewalld && sudo systemctl start firewalld
    3. 设置开机自启:sudo systemctl enable firewalld
    4. 校验:firewall-cmd --statefirewall-cmd --list-all
  • 场景C:重置为 firewalld 默认并重新放行必要服务
    1. 重置运行时:sudo firewall-cmd --complete-reload
    2. 清理永久区(逐条删除自定义规则,或先备份后再重置)
    3. 放行常用服务(示例):
      • sudo firewall-cmd --permanent --zone=public --add-service=ssh
      • sudo firewall-cmd --permanent --zone=public --add-service=http
      • sudo firewall-cmd --permanent --zone=public --add-service=https
    4. 使配置生效:sudo firewall-cmd --reload
    5. 校验:firewall-cmd --list-servicesfirewall-cmd --list-ports
  • 场景D:恢复到之前的 iptables 规则
    1. 安装 iptables 服务(若未安装):sudo yum install -y iptables-services
    2. 恢复规则:sudo iptables-restore < /root/iptables-YYYY-MM-DD.rules
    3. 保存规则:sudo service iptables save(或 sudo /usr/libexec/iptables/iptables.init save
    4. 启动并设置开机自启:sudo systemctl start iptables && sudo systemctl enable iptables
    5. 校验:sudo iptables -L -n -v

三、验证与回滚

  • 快速验证
    • firewalld:firewall-cmd --statefirewall-cmd --list-allfirewall-cmd --query-port=80/tcp
    • iptables:sudo iptables -L -n -vsudo iptables -S
  • 回滚建议
    • 若恢复后业务异常,立即用备份快速还原:
      • firewalld:sudo cp -a /root/firewalld-YYYY-MM-DD /etc/firewalld && sudo firewall-cmd --reload
      • iptables:sudo iptables-restore < /root/iptables-YYYY-MM-DD.rules
    • 再次校验并观察日志:sudo tail -f /var/log/firewalld

四、常用命令速查

  • firewalld
    • 启停与自启:sudo systemctl start|stop|restart|enable|disable firewalld
    • 重载与状态:sudo firewall-cmd --reloadfirewall-cmd --statesystemctl status firewalld
    • 规则管理:firewall-cmd --permanent --zone=public --add-port=80/tcpfirewall-cmd --permanent --zone=public --add-service=httpsfirewall-cmd --permanent --zone=public --remove-port=80/tcpfirewall-cmd --query-port=80/tcpfirewall-cmd --list-portsfirewall-cmd --list-services
  • iptables
    • 服务与保存:sudo systemctl start|stop|restart|enable|disable iptablessudo service iptables save
    • 导入导出:sudo iptables-save > file.rulessudo iptables-restore < file.rules
    • 查看:sudo iptables -L -n -vsudo iptables -S

0