Linux防火墙恢复需根据使用的管理工具(如firewalld、iptables)选择对应方法,核心目标是清除自定义配置、还原初始状态,同时避免操作中断网络服务。以下是分场景的稳妥操作步骤:
firewalld采用“区域(Zone)”和“服务(Service)”模型,恢复需重置区域配置和规则。
public(多数系统的初始默认区域),清除自定义区域设置:sudo firewall-cmd --set-default-zone=public
sudo firewall-cmd --remove-all-zones
public区域的默认ACCEPT入站规则):sudo firewall-cmd --reload
若命令行操作无法解决复杂问题(如配置文件损坏),可通过删除并重建配置目录彻底还原:
sudo systemctl stop firewalld
sudo mv /etc/firewalld /etc/firewalld.bak
sudo rm -rf /etc/firewalld
firewalld.conf和zones目录):sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
firewalld但未安装,需先安装:sudo yum install firewalld(CentOS)或sudo dnf install firewalld(Fedora)。iptables通过内核模块直接管理规则,恢复需清空所有自定义规则并重置默认策略。
filter(过滤)、nat(地址转换)、mangle(数据包修改)表中的所有规则:sudo iptables -F # 清空filter表所有规则
sudo iptables -X # 删除filter表自定义链
sudo iptables -t nat -F # 清空nat表所有规则
sudo iptables -t nat -X # 删除nat表自定义链
sudo iptables -t mangle -F # 清空mangle表所有规则
sudo iptables -t mangle -X # 删除mangle表自定义链
ACCEPT(允许所有流量),避免误拦截:sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo service iptables save(自动保存到/etc/sysconfig/iptables);sudo iptables-save > /etc/iptables/rules.v4(需提前安装iptables-persistent包)。sudo systemctl restart iptables # CentOS 7+
sudo service iptables restart # CentOS 6
若之前使用iptables-save备份过规则(如/etc/iptables.rules.backup),可直接还原:
sudo iptables-restore < /etc/iptables.rules.backup
ufw(Ubuntu简化工具),需先禁用ufw再操作iptables:sudo ufw disable。firewalld的/etc/firewalld目录、iptables的/etc/sysconfig/iptables文件),防止误操作导致配置丢失;ping、curl等命令测试网络连通性,确保服务正常;以上操作覆盖了主流Linux发行版的防火墙恢复场景,可根据系统环境选择对应方法,确保恢复过程稳妥可靠。