导读:本期聚焦于小伙伴创作的《如何使用网关防火墙保护CentOS服务器的网络安全》,敬请观看详情。把CentOS直接暴露公网等于把大门钥匙挂在门外。网关防火墙的作用是在流量进入主机前做一层过滤,只放行必要端口与可信来源。CentOS 7之后默认用firewalld管理netfilter规则,它用zone概念区分网络信任级别,比直接写iptables更易维护。实际部署时常犯的错误是放行了22端口却没限制来源IP,导致暴力破解频发。正确做法是在外部网关或本机firewalld中设置rich rule,限定管理端口仅对运维网段开放,同时对业务端口做连接数限制。本文说明如何规划zone、配置富规则与端口转发,让服务器在复杂网络下仍保持最小暴露面。

在CentOS服务器接入生产网络时,网络边界的访问控制决定了系统被攻击的概率。网关防火墙并非单指某款硬件,也可以是部署在服务器前端或本机上的流量过滤层,核心目标是在恶意请求抵达应用之前就将其丢弃。CentOS自7版本起使用firewalld作为默认防火墙前端,它基于netfilter构建,却用更直观的zone与service模型替代了繁琐的iptables命令,使运维人员能快速建立分层防御。

如何使用网关防火墙保护CentOS服务器的网络安全

理解firewalld的zone模型

firewalld将网络接口划分到不同的zone中,每个zone代表一组预设的信任级别与规则集合。例如public zone默认拒绝大多数入站流量,仅允许已明确放行的服务;internal zone则用于内网互通,信任度更高。服务器网卡绑定到哪个zone,就受哪套规则约束。这种设计让同一台机器在不同网络环境(如办公网与公网)下可以自动切换安全策略。

查看当前激活的zone与接口绑定情况,可使用如下命令:

# 查看当前所有zone及绑定的网卡
firewall-cmd --get-active-zones

# 查看public zone放行的服务
firewall-cmd --zone=public --list-services

如果服务器直接以公网IP运行,建议将对外网卡固定在public zone,并仅放行必须的业务端口。切忌图省事将网卡设为trusted zone,那样等于关闭了防火墙。通过zone的层级隔离,我们可以在网关层先丢弃非法包,再让主机防火墙做二次过滤。

配置网关级端口放行与来源限制

很多安全事故源于开放了管理端口却未限制来源。以SSH所用的22端口为例,若在任何地址都能尝试连接,服务器会面临持续的暴力破解。利用firewalld的rich rule,可以精确控制“哪个源网段能访问哪个端口”。下面的代码展示了如何仅允许运维网段访问22端口,并拒绝其他所有地址的SSH连接请求。

# 允许192.168.10.0/24网段访问22端口
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port protocol="tcp" port="22" accept'

# 拒绝其他地址访问22端口(public zone默认拒绝,此句可省略但显式写出更清晰)
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" port protocol="tcp" port="22" reject'

# 放行业务端口80与443给所有来源
firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --add-service=https

# 使配置永久生效
firewall-cmd --runtime-to-permanent

上述规则中,rich rule的匹配顺序很重要:firewalld按规则添加顺序评估,先写的允许规则会让特定网段通过,后写的拒绝规则则挡住其余流量。这种写法比全局关闭SSH服务更灵活,运维人员从办公室网络仍可登录,而公网扫描器会被直接拒绝。

从网关视角看,如果前端还有硬件防火墙或云安全组,应形成“网关限源+主机防火墙限端口”的双重机制。即便某层配置失误,另一层仍能提供保护。同时建议对HTTP服务做连接速率限制,防止CC攻击拖垮CentOS的worker进程。

使用端口转发隐藏真实服务

网关防火墙另一常见用法是端口转发,将公网的非标准端口映射到内网服务的标准端口,从而降低被自动扫描工具命中的几率。比如外部访问2022端口,内部转发到本机22端口,配合来源IP限制,安全性进一步提升。以下示例展示如何通过firewalld配置本地端口转发。

# 将公网访问的tcp 2022端口转发到本机22端口
firewall-cmd --zone=public --add-forward-port=port=2022:proto=tcp:toport=22:toaddr=127.0.0.1

# 若需转发到内网其他服务器(假设内网IP为192.168.10.5)
firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.10.5

# 永久保存
firewall-cmd --runtime-to-permanent

端口转发规则写在firewalld的nat表中,对外部用户透明。要注意的是,如果CentOS开启了严格反向路径过滤,转发到外部地址时可能失效,需确认内核参数配置。此外,转发不等于鉴权,真实服务自身仍要保留密码或密钥验证。

在微服务架构下,还可以用firewalld的masquerade功能做SNAT,让内网服务器借网关IP出网,既隐藏了内部拓扑,也便于统一审计出口流量。这种网关式用法让CentOS不必每块网卡都配公网地址,减少攻击面。

日常维护与规则审计

防火墙配置不是一劳永逸的。业务变更常导致临时放行的端口忘记回收,久而久之规则堆积如山。建议每月用脚本导出当前rich rule与service清单,比对基线。下面命令可列出某zone全部富规则,方便巡检。

# 列出public zone的所有富规则
firewall-cmd --zone=public --list-rich-rules

# 导出当前永久配置到文件备查
firewall-cmd --permanent --list-all > /var/backups/firewall_public.txt

当发现某规则不再需要,应使用--remove-rich-rule或--remove-service删除,并再次执行--runtime-to-permanent。切忌直接清空所有规则重启,这会让线上业务瞬间断连。对于关键服务器,可结合cron定时备份规则文件到内部仓库。

网关防火墙的价值在于“边界收敛”。只要CentOS服务器遵循最小开放原则,配合zone划分、富规则限源与端口转发,就能在不需要额外硬件的情况下建立起务实的网络安全屏障。真正的风险往往不是没有防火墙,而是配好之后无人维护。

CentOS网关防火墙firewalld修改时间:2026-08-06 21:12:39

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。