游乐游手机版
首页/系统平台/文章详情

CentOS 7修改防火墙默认拦截规则的方法

时间:2026-08-18 14:58
在 CentOS 7 中,所谓的“默认拦截规则”并不是某一条独立的防火墙规则单独生效,而是由 firewalld 的 default_zone(例如 public)及其对应的 target(默认通常为 default)共同决定的:凡是已经明确加入白名单的服务和端口会被允许访问,未被放行的其他流量则会

在 CentOS 7 中,所谓的“默认拦截规则”并不是某一条独立的防火墙规则单独生效,而是由 firewalld 的 default_zone(例如 public)及其对应的 target(默认通常为 default)共同决定的:凡是已经明确加入白名单的服务和端口会被允许访问,未被放行的其他流量则会被直接拒绝。想修改这套防火墙默认拦截逻辑,需要通过 firewall-cmd 调整 zone target,或增删 service、port、rich rule;另外还有一个关键细节不能忽略,必须配合 --permanent 和 --reload,修改后规则才会真正生效。

CentOS 7怎么修改具体的防火墙默认拦截规则

CentOS 7 里常说的“默认拦截规则”,并不是一条可以直接单独修改的语句。它本质上是由 firewalld 的 zone 默认策略组合形成的,也就是 default_zone + target,再叠加链级别的默认动作共同决定。简单来说,在动手修改 CentOS 7 防火墙默认拦截规则之前,必须先搞清楚自己要调整的是“入站默认拒绝”这类行为,还是“某个 zone 的默认放行逻辑”;如果这一步判断不清,很容易一操作就把 SSH 远程连接直接中断。

firewalld 的 default_zone 和 target 决定默认拦截规则的起点

firewalld 与 iptables 的工作方式不同,它不像 iptables 那样直接存在显式的 INPUT DROP 规则。CentOS 7 防火墙的“默认拦截”主要来自两层机制:

  • default_zone(例如 public)的 target 值,默认通常是 default,可以理解为“只允许白名单中的服务或端口通过,其余流量默认拒绝”
  • 底层 netfilter 链的默认策略仍然是 ACCEPT,但 firewalld 会通过 rich rule 或 zone 配置在 runtime 中插入隐式拒绝逻辑,从而实现默认拦截效果

因此,不能简单地通过修改 /etc/firewalld/zones/public.xml 中某一行来“关闭默认拦截”,而应该从 zone 的 target 或 zone 切换方式入手。

例如把 public zone 的 target 改成 ACCEPT(非常不推荐):

sudo firewall-cmd --permanent --zone=public --set-target=ACCEPT
sudo firewall-cmd --reload

⚠️ 这样会让所有未被显式拒绝的入站连接都被接受——基本等同于关闭 CentOS 7 防火墙的默认过滤逻辑,只剩下基础链控制。

真正可控的默认拦截行为,在 zone 的 target 与 service/port 白名单中

日常管理中,能够安全调整的其实是 zone 的“白名单范围”,而不是简单理解的“默认拦截开关”。常见且更推荐的操作方式包括:

  • 使用 firewall-cmd --add-service=xxx --permanent 添加预定义服务(如 httpmysql),这些服务通常自带端口、协议以及辅助模块(如 conntrack)
  • 使用 firewall-cmd --add-port=3306/tcp --permanent 开放指定单端口,但不会自动附带服务级说明;不过 RELATED/ESTABLISHED 流量 firewalld 默认已处理
  • 使用 firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept' --permanent 做基于源 IP 的精确放行,这种方式通常比直接修改 target 更安全、更细粒度

需要特别注意:--permanent 必须结合 --reload 一起使用才会生效;遗漏 --reload,是 CentOS 7 修改防火墙规则后“看起来没生效”的最常见原因之一。

如果想绕过 firewalld 默认拦截,别急着停服务,优先考虑切换 zone

如果你的场景需要临时开放大量端口,或者涉及动态端口段(例如 Docker、K8s 等环境),不要直接停止 firewalld 服务,也不建议贸然切回 iptables,更稳妥的方式是:

  • 新建一个相对宽松的 zone:sudo firewall-cmd --permanent --new-zone=trusted-internal
  • 将其 target 设置为 ACCEPTsudo firewall-cmd --permanent --zone=trusted-internal --set-target=ACCEPT
  • 把内网网卡绑定到该 zone:sudo firewall-cmd --permanent --zone=trusted-internal --change-interface=eth1
  • sudo firewall-cmd --reload

这样一来,外网流量仍然走 public(默认拦截),而内网流量则走新建的 zone(默认放行),隔离边界更清晰、风险更可控。相比之下,直接执行 systemctl stop firewalld 会丢失所有 zone 状态,系统重启后还可能因为网络脚本再次自动拉起服务,最终导致防火墙策略漂移。

修改配置文件前,一定要确认改的是 permanent 配置,而不是 runtime

firewalld 区分 runtime(当前正在生效)和 permanent(重启后仍保留)两套配置。直接编辑 /etc/firewalld/zones/public.xml 只会影响 permanent 配置,并不会自动同步到 runtime —— 必须手动执行 --reload,否则即使文件已经改了,firewall-cmd --list-all 看到的依然可能是旧规则。

更需要警惕的是:如果 XML 文件格式写错(例如少了闭合标签、属性值缺少引号),--reload 会失败,并回退到上一次有效配置,但错误提示通常只记录在 journal 日志中:journalctl -u firewalld | tail -20。很多人不查看日志,就会误以为“CentOS 7 防火墙默认拦截规则修改没有反应”,实际上是 firewalld 已经静默拒绝了这次 reload 请求。

来源:https://www.php.cn/faq/2961191.html
上一篇Ubuntu取消屏幕自动锁定的方法与设置教程 下一篇Linux如何查看进程的具体执行路径
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
VMware安装Ubuntu完整教程:创建虚拟机与启动验证
系统平台 · 2026-09-01

VMware安装Ubuntu完整教程:创建虚拟机与启动验证

本教程详细演示如何在VMware中创建Ubuntu虚拟机,涵盖ISO挂载、硬件配置、安装向导及启动验证。通过清晰的步骤与验证命令,帮助新手快速搭建可用的Linux学习环境。

Win10专业版U盘安装教程:制作启动盘与完整安装步骤
系统平台 · 2026-09-01

Win10专业版U盘安装教程:制作启动盘与完整安装步骤

本文提供Win10专业版U盘安装完整流程:准备8GB以上U盘与官方镜像,制作启动盘并核对盘符;通过F12 F11 Esc等快捷键或BIOS设置U盘为第一启动项;安装时选择专业版并谨慎分区;完成后在“设置—系统—关于”验证版本与激活状态。操作前务必备份数据。

Windows10系统字体太小怎么调大
系统平台 · 2026-08-27

Windows10系统字体太小怎么调大

Windows10系统字体太小怎么调大?只需两步:首先打开设置中的显示选项,将缩放比例调整为125%或150%;随后运行ClearType文本调谐器优化字体清晰度。此方法适用于高分屏及普通屏幕,无需修改注册表即可解决界面拥挤问题。

Win10磁盘占用100%基础排查:从监控到清理的完整步骤
系统平台 · 2026-08-27

Win10磁盘占用100%基础排查:从监控到清理的完整步骤

Windows 10系统出现磁盘占用100%会导致电脑卡顿、程序响应缓慢。本文提供基础排查方案:首先通过任务管理器确认是否为磁盘高负载,随后进入系统存储页面分析C盘占用类别,最后针对性清理临时文件。遵循此流程可有效缓解磁盘压力,避免盲目重装系统。

Windows10系统怎么显示此电脑和控制面板
系统平台 · 2026-08-27

Windows10系统怎么显示此电脑和控制面板

Windows10默认可能不显示桌面图标,导致找不到“此电脑”和“控制面板”。只需进入个性化设置,在“桌面图标设置”中勾选对应选项即可恢复。本文提供详细图文步骤,帮助快速找回系统入口。