先停止防火墙服务,再移除对应的配置文件或执行备份恢复,最后重新加载服务使变更生效,具体命令取决于你用的是iptables、firewalld还是云服务商自带的安全组策略。
很多朋友在排查服务器无法远程、端口不通的问题时,最后都会把目光聚焦在防火墙配置文件上,今天咱们就聊聊删除配置文件这件事,哪些该删,哪些不能删,删错了怎么补救。
为什么你需要动防火墙配置文件,而不是直接在命令行操作
日常运维中,输入一行命令清空规则,或者用firewall-cmd --reload重载规则,看上去确实省事,但服务器一旦重启,命令行里的临时规则会全部消失,机器只能按照配置文件里的静态规则运行,这就是为什么越来越多的人在排查服务器防火墙配置删除了怎么办这类问题时,必须回到文件层面找答案。
配置文件里记录着防火墙的持久化规则,包括放行端口、转发策略、来源IP限制等,当你需要彻底清理某条历史规则,或者废弃一套老旧的策略模板时,直接编辑文件通常比反复执行命令更干净、更可控。
不过删除配置文件属于高风险操作,需要分清两种场景:
- 场景一:你想清空所有规则,让服务器恢复”裸奔”状态,然后从零构建新策略。
- 场景二:你只想删除某一条或某几行规则,而不是整个文件。
两种场景的操作路径完全不同,下面拆开讲。
Linux防火墙删除配置文件的具体操作路径
针对firewalld(CentOS/RHEL 7以上默认)
firewalld的配置文件位于/etc/firewalld/目录,其中zones/子目录里存放的是公共区域配置,最常见的public.xml就是默认区域的规则集合。
要彻底删除配置文件并恢复出厂状态,建议按这个顺序来:
- 暂停防火墙服务,避免规则被占用的文件频繁写入:
systemctl stop firewalld - 删除或重命名自定义区域文件:
rm /etc/firewalld/zones/custom.xml,或者用mv改成.bak后缀备份。 - 清空默认区域规则,直接重定向空内容覆盖:
echo "" > /etc/firewalld/zones/public.xml - 重新加载服务:
systemctl start firewalld - 查看当前激活的规则确认:
firewall-cmd --list-all
需要明白一点,firewalld有一个非常容易迷惑人的机制:/etc/firewalld/是用户自定义区,而
/usr/lib/firewalld/是系统默认区,当你删除了用户区的配置文件,服务会自动回退读取系统默认区的同名文件,所以删除/etc/firewalld/zones/public.xml之后,firewalld并不会崩溃,而是加载默认的public规则,通常是只开放SSH端口。
针对iptables(传统方案及大部分云服务器镜像)
iptables的规则文件在不同发行版位置不同,常见的有/etc/sysconfig/iptables(CentOS 6/7)、/etc/iptables/rules.v4(Debian/Ubuntu),这类文件删除后,重启服务会自动加载内核默认的空规则。
清除iptables配置文件的操作路径:
- 将当前规则导出备份:
iptables-save > /root/iptables-backup-$(date +%F).conf - 清空所有链的规则:
iptables -F - 删除自定义链:
iptables -X - 将空的规则保存到配置文件:
service iptables save或iptables-save > /etc/sysconfig/iptables - 确认配置文件内容只剩默认策略:
cat /etc/sysconfig/iptables
这里需要特别提醒,有些云服务器的安全组和系统内部防火墙是两层独立体系,你在系统里删除了iptables配置文件,但云控制台的安全组规则依然存在,如果两者冲突,以安全组为准,业内专家指出,多数情况下云服务器连不上端口,问题出在安全组而非系统防火墙配置。
针对Ubuntu的ufw
ufw的配置文件存放在/etc/ufw/目录,核心文件是user.rules和user6.rules。
删除配置文件恢复初始状态:
ufw disable rm /etc/ufw/user.rules rm /etc/ufw/user6.rules ufw enable
执行后ufw会重新生成空的用户规则文件,等效于恢复了默认策略。
firewalld与iptables删除配置的差异对比,谁更容易误操作
很多新手分不清firewalld和iptables的删除差异,导致在错误的文件里删了半天没效果,下面用表格直观展示。
| 对比维度 | firewalld | iptables |
|---|---|---|
| 配置文件位置 | /etc/firewalld/zones/.xml | /etc/sysconfig/iptables(CentOS) |
| 删除后行为 | 自动回退读取/usr/lib下的默认文件 | 服务重启后加载空规则 |
| 重载方式 | firewall-cmd –reload(热重载) | service iptables restart(重启) |
| 是否支持区域概念 | 支持,规则按网卡分配 | 不支持,所有规则平铺 |
| 误删恢复难度 | 较易,系统自带默认规则兜底 | 较难,删除后完全无规则 |
多数情况下,firewalld删除配置比iptables更安全,因为它有系统级默认配置兜底,而iptables一旦把配置文件删了,内核防火墙等于完全不设防,所以生产环境如果没有把握,建议优先使用iptables-save备份替换而不是直接rm。
误删配置文件后的恢复方法,Linux防火墙恢复默认配置的正确姿势
删配置容易,恢复就不一定了,常见两种情形:一种是删了之后服务起不来,另一种是规则全没了,但服务还在运行。
直接恢复出厂默认
如果你删掉了firewalld的public.xml,想让系统回到刚安装时的状态,执行:
systemctl stop firewalld rm -rf /etc/firewalld/zones/ systemctl start firewalld
此时firewalld会自动从/usr/lib/firewalld/zones/加载默认的public.xml,规则回到出厂状态。
iptables则没有这么优雅的出厂重置,因为发行版自带的/etc/sysconfig/iptables文件本身就是空模板,你需要手动重建基础规则:
iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F service iptables save
这样等于把防火墙策略重置为全放行,和删除文件的效果一致。
从备份恢复
删除前如果没有备份,可以尝试在/root/或/tmp/下查找.bak或.conf结尾的历史文件,部分服务器厂商的镜像会自动生成iptables-bak这类隐藏备份。
如果找到了备份,恢复只需要覆盖回去然后重启服务:
cp /root/iptables-backup.conf /etc/sysconfig/iptables systemctl restart iptables
高防服务器和云主机删除防火墙配置文件有什么不一样的讲究
传统物理服务器的防火墙配置相对单纯,但高防服务器和云主机的情况要复杂得多,高防服务器往往同时存在硬件防火墙、系统防火墙、Web应用防火墙三层防护,你以为删了系统配置文件就能放行某个端口,但硬件防火墙那层依然拦着。
对高防服务器,行业共识认为不建议直接删除系统防火墙配置文件,因为高防机房通常会预设一套基础防护规则,这套规则跟清洗设备联动,你将配置文件删除后,虽然服务器本地的规则清空了,但清洗设备的策略依然在,这就会造成一种”我明明删了配置但还是被拦截”的奇怪现象。
云主机还多一层安全组概念,安全组规则独立于操作系统,优先生效,你在系统里删掉防火墙配置文件,只会让系统内部放行所有流量,但安全组规则不变的话,该挡还是挡,所以排查网络问题时,查看安全组优先级应该高于删除防火墙配置。
删除防火墙配置文件前必须执行的三个检查步骤
动手之前,花两分钟确认以下内容,能帮你避免把自己锁在服务器外面:
- 确认当前会话有备用通道:用
whoami和last查看自己登录的IP和用户,确保就算防火墙规则被清空,你仍然能通过控制台VNC或另一台跳板机登录。 - 备份现有配置:不管你要删除什么文件,先复制一份放到安全目录,这条老生常谈但永远值得强调。
- 确认云平台安全组放行了管理端口:如果你在云上操作,先打开控制台确认安全组规则里22或3389端口是放行的,否则这边删完防火墙配置,那边远程连接可能立刻断开。
防火墙规则清空后常见的几个疑问
防火墙配置文件删了,原来的规则还能查回来吗
如果没有备份,规则基本无法从文件层面找回,但重启前如果iptables还在内存里运行,可以通过iptables-save命令把当前生效规则导出,这就相当于一个补救式的备份,firewalld也有类似机制,用firewall-cmd --list-all能查看当前生效规则,所以删除文件前,先执行导出命令保存规则,是成本最低的保险措施。
删除防火墙配置文件会影响已建立的连接吗
会,执行iptables -F清空规则后,内核防火墙会停止跟踪所有连接,已建立的SSH会话通常不受影响,但新建的连接会直接通过,如果你原本的配置文件里设置了对某些IP段的拦截,删除后这些IP马上就能访问服务器,安全风险是即时产生的,建议在业务低峰期操作,改完立刻补齐新规则。
清空防火墙规则和删除配置文件是一回事吗
不是一回事,清空规则只影响当前内存中的生效状态,配置文件里依然保留着规则,删除配置文件则同时清掉了磁盘上的持久化策略,两者执行完后的结果看起来一样,但重启后行为完全不同:清空规则后重启会重新加载配置文件里的旧规则,而删除配置文件后重启加载的则是系统的默认空策略。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/587210.html




