如何使用防火墙设置CentOS服务器的网络传输安全

来源:AI技术网作者:关中王头衔:草根站长
导读:本期聚焦于关中王创作的《如何使用防火墙设置CentOS服务器的网络传输安全》,敬请观看详情。在CentOS服务器运维过程中,网络传输安全是保障业务稳定运行的核心环节,防火墙作为第一道安全防线,合理配置能有效拦截非法访问、降低数据泄露风险。很多用户不清楚如何在CentOS系统中通过防火墙实现网络传输安全管控,本文将从防火墙基础介绍入手,详细讲解firewalld和iptables两种常用防火墙的配置方法,涵盖端口开放、IP限制、服务规则设置等实用操作,同时补充规则持久化、规则排查等常见问题的处理方案,帮助用户快速掌握CentOS服务器防火墙的安全配置技巧,构建更可靠的服务器网络防护体系。

CentOS服务器的网络传输安全是保障业务数据完整性与可用性的重要前提。在网络环境中,防火墙作为网络边界层的核心防护组件,通过预先设定的规则对进出服务器的流量进行过滤与管控,能够有效阻断恶意扫描、非法探测与未授权访问等行为。科学合理地为CentOS服务器配置防火墙规则,是每一位系统运维人员都要掌握的基础安全技能,同时也是构建纵深防御体系的第一道关口。

如何使用防火墙设置CentOS服务器的网络传输安全

认识CentOS的防火墙工具体系

CentOS操作系统在长期发展过程中,沉淀了两套风格迥异但功能强大的防火墙管理工具,即firewalldiptables。两者并非互斥关系,而是代表了不同的设计理念与运维思路。理解它们之间的差异,有助于在面对不同业务场景时做出合适的工具选型。

firewalld是CentOS 7及后续版本默认搭载的动态防火墙管理守护进程。它引入了区域(zone)的概念,将网络流量按照信任级别划分到不同的区域中,每个区域拥有独立的规则集合。例如,public区域适用于不可信的公网环境,trusted区域适用于完全可信的内网网段。管理员只需为流量指定区域,即可快速套用相应的放行或拦截策略。在维护层面,firewalld支持运行时修改规则且无需重启服务,规则变更即时生效,极大的提升了安全策略调优的效率。

iptables则是Linux内核中Netfilter框架传统的用户态管理工具,它采用表(table)与链(chain)的层级结构来组织规则。iptables将数据包的处理流程拆解为raw、mangle、nat、filter等多个表和若干内置链,管理员可以在链中按照顺序插入、删除、修改规则,实现高度精细化的流量控制。相比firewalld,iptables的抽象层级更低、灵活度更高,但规则修改后需要手动保存才能持久化,对运维人员的内核网络知识储备提出了更高的要求。

在实际生产环境选型时,如果追求操作简洁、规则动态加载,且希望借助区域隔离快速实现安全分组,firewalld是更优的选择。如果服务器承载了复杂的NAT转发、流量整形、精细端口过滤需求,或者团队长期沿用传统的iptables运维习惯,那么继续使用iptables能够获得更强的掌控力。两种工具在CentOS系统中可以共存,但同一时间只能启用其中一种作为默认防火墙服务。

使用firewalld守护网络传输边界

使用firewalld进行安全加固前,首先需要确认服务本身处于正常的运行状态。通过systemd服务管理命令可以完成状态的查看、服务的启动以及开机自启的配置。考虑到服务器重启后安全策略不能失效,设置合理的开机自启行为是配置流程中不可遗漏的环节。

在防火墙规则的设计层面,firewalld主张通过区域管理收束流量入口。CentOS安装完成后默认区域通常为public,该区域对入站流量采取保守策略,仅放行与已建立连接关联的响应数据。管理员需要根据业务需求,在public区域中精准开放必要的端口与服务,同时尽可能将可访问来源收敛到信任的IP地址或网段。常见的防护诉求主要体现在三个方面:开放指定TCP或UDP端口以支撑业务进程对外通信、限制敏感端口的来源IP以缩小攻击面、调用预定义服务名称快速启用标准协议端口。

下面以实际命令操作为例,展示如何利用firewalld为Web服务与远程管理场景配置安全规则。需要留意的是,在配置限制SSH访问的富规则时,务必确保当前管理会话的来源IP已经被放行,否则规则生效后可能立即中断现有的远程连接。配置完成后,通过重载操作确认规则落入运行时环境,然后查看完整规则列表进行复核。

# 查看firewalld运行状态
systemctl status firewalld
# 启动firewalld服务
systemctl start firewalld
# 设置firewalld开机自启
systemctl enable firewalld

# 开放80端口(HTTP服务),永久生效
firewall-cmd --zone=public --add-port=80/tcp --permanent

# 使用富规则限制只有192.168.1.100能够访问22端口(SSH),永久生效
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept' --permanent

# 开放SSH服务,永久生效
firewall-cmd --zone=public --add-service=ssh --permanent

# 移除默认的允许所有来源访问SSH的规则(如已存在)
firewall-cmd --zone=public --remove-service=ssh --permanent

# 重新加载规则使配置生效
firewall-cmd --reload

# 查看当前生效的规则
firewall-cmd --zone=public --list-all

firewalld的规则持久化机制清晰易懂:添加了--permanent参数的规则会被写入磁盘配置文件,即使服务器重启或防火墙服务重载,规则依然存在;未携带该参数的规则仅存在于当前运行时的内存态中,一旦服务重启便丢失。为了保证安全策略在时间维度上的连续性,日常配置安全规则时应养成统一添加--permanent参数的习惯,并在修改完成后执行firewall-cmd --reload进行加载。如果只是临时开放端口用于测试,则无需添加该参数,测试结束后规则也会随服务重启而自动清除。

除了基础的端口放行,firewalld的富规则(rich rule)还支持组合多种匹配条件,例如同时约束协议、端口、来源地址与目标动作。对于数据库端口、管理面板端口等高危服务,建议优先采用富规则绑定来源IP,而不是无条件向全网开放。富规则的逻辑表达能力更强,通过多条件组合即可实现流量在白名单范围内的精确放行,而不必为每个IP单独创建一条规则。

使用iptables实施流量白名单策略

对于选择iptables作为防护工具的服务器,第一步需要完成防火墙服务的切换。由于firewalld与iptables会争抢Netfilter的管控接口,二者不能同时运行。正确的操作序列是:先停止并禁用firewalld服务,再安装iptables-services软件包,最后启动iptables服务并设置开机自启。在最小化安装的CentOS系统中,iptables-services组件可能并未预装,需要通过软件包管理器手动补充安装。

iptables的规则按照表链结构组织,日常的安全过滤配置通常集中在filter表的INPUT链中。一个稳健的配置思路是采用白名单策略:先将INPUT链与FORWARD链的默认策略设置为拒绝(DROP),然后按需放行必要的合法流量。这种模式相较于默认允许、个别拦截的黑名单模式,安全性更高,能够有效规避未知漏洞带来的风险。值得注意的是,在设置OUTPUT链默认允许的同时,需要显式放行ESTABLISHED、RELATED状态的数据包,以确保服务器发出的请求能够正常接收响应。本地回环接口的流量也必须放行,否则部分依赖本机进程间通信的服务会出现异常。

以一台同时提供SSH远程管理与Web服务的服务器为例,iptables的规则配置可以按照以下步骤逐步建立:清空存量规则以避免历史配置干扰、设定三条链的默认策略、放行回环接口、放行已建立连接、限制特定网段访问22端口、开放80与443端口。最后查看规则列表,确认每一条规则的匹配顺序与数量统计是否正确。iptables对规则的匹配是自顶向下的,先放行已建立的连接,再匹配新的入站请求,有助于减少状态判断的冗余开销。

# 停止并禁用firewalld
systemctl stop firewalld
systemctl disable firewalld

# 安装iptables服务(如尚未安装)
yum install -y iptables-services

# 启动iptables服务并设置开机自启
systemctl start iptables
systemctl enable iptables

# 清空当前规则
iptables -F

# 设置默认策略:INPUT与FORWARD链拒绝,OUTPUT链允许
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 放行本地回环接口流量
iptables -A INPUT -i lo -j ACCEPT

# 放行已建立的连接及相关连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 仅允许192.168.1.0/24网段访问22端口
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT

# 开放80与443端口,允许所有来源访问
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 查看当前生效规则
iptables -L -n -v

iptables规则的存储方式与firewalld有所不同,它在运行时修改的规则不会自动写入配置文件,一旦服务重启,所有规则都将归零。为了让规则在重启后依然生效,必须执行持久化保存操作。通过service iptables save命令可以将当前内存中的规则集保存到/etc/sysconfig/iptables文件,也可以使用iptables-save命令将规则重定向输出到指定的备份文件中。如果需要将规则同步到多台服务器,第二种方式更适合结合自动化运维工具批量分发配置。

防火墙运维实践与故障排查

防火墙规则是安全策略的直接载体,规则本身的疏松与冗余同样会引入风险。在运维实践中,应当恪守最小权限原则:只为业务实际使用的端口与服务创建放行规则,其他端口一律保持默认拒绝状态。对于SSH等远程管理服务,优先从网络层限制来源地址,必要时可将默认端口迁移到非标准端口以降低扫描暴露面。配置涉及远程连接端口的规则时,建议在独立会话中先行验证新规则的连通性,确认无异常后再断开会话,避免因规则错误导致管理通道永久中断。

当服务器部署在云端时,系统防火墙并非唯一的流量关卡。大多数云服务商还提供安全组功能,安全组作用于虚拟网络设备层,优先级高于操作系统内部的防火墙。两层防护需要协同工作,规则之间不能相互冲突。例如,安全组已经拒绝了某个来源IP的访问,即使iptables放行了对应流量,请求依然无法到达服务器。因此,运维人员需要同时梳理安全组策略与系统防火墙规则,确保两者的放行范围保持一致,避免出现规则冲突导致服务不可达。

规则配置完成后,若出现服务无法访问的异常现象,可以从三个维度进行排查:首先,使用systemctl status firewalldsystemctl status iptables确认防火墙服务状态正常,规则已经成功加载;其次,使用telnet 服务器IP 端口命令探测目标端口的连通性,快速判断问题是出在网络层还是应用层;最后,查看防火墙日志定位丢弃行为,firewalld的日志记录位于/var/log/messages文件中,而iptables默认不记录丢弃事件,需要手动添加LOG规则来追踪被拦截的数据包。在iptables中开启日志功能只需在INPUT链末尾追加一条日志规则,配合--log-prefix参数为日志增加便于检索的前缀标识。日志规则应当放置在所有业务放行规则之后,这样被丢弃的流量才会被记录,而正常放行的流量不会产生大量无谓的日志输出。

# 在INPUT链末尾添加日志规则,记录被丢弃的入站流量
iptables -A INPUT -j LOG --log-prefix "IPTABLES_DROPPED: "

# 保存规则使日志配置持久化
service iptables save

# 查看内核日志中与IPTABLES_DROPPED相关的记录
dmesg | grep "IPTABLES_DROPPED"

CentOS服务器的网络传输安全是一项持续性的工作,防火墙规则的配置只是安全建设的一个起点。无论采用firewalld还是iptables,其核心目标一致:在保证业务可用性的前提下,将不必要的网络流量拒之门外。运维人员应当定期梳理规则清单,删除过期与冗余条目,结合访问日志与流量审计不断优化防护策略,同时保持与云安全组策略的一致性,使操作系统防火墙真正成为守护业务数据安全的一道坚实屏障。

firewalldiptablesCentOS_防火墙网络传输安全修改时间:2026-07-08 01:18:32

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