答案:CentOS防火墙配置核心在于理解firewalld的区域(zones)概念,通过firewall-cmd工具管理运行时和永久规则,合理分配网络接口到不同信任级别的区域,并结合服务、端口、富规则、端口转发、伪装等高级功能实现精细化安全策略。

CentOS系统下的防火墙配置,核心在于理解并正确使用
firewalld
firewalld
配置CentOS防火墙规则,我们主要通过
firewall-cmd
firewalld
检查firewalld
firewalld
systemctl status firewalld
如果服务没有运行,你需要启动它并设置开机自启:
systemctl start firewalld systemctl enable firewalld
查看当前活动的区域和规则: 这是我个人习惯在修改前必做的一步,了解当前防火墙的“全貌”。
firewall-cmd --get-active-zones # 查看当前活动的网络接口及其所属区域 firewall-cmd --list-all-zones # 列出所有区域的详细规则,包括服务、端口、富规则等 firewall-cmd --zone=public --list-all # 或者针对特定区域查看
开放特定端口: 这是最常见的需求。例如,开放TCP协议的80端口(HTTP服务)。
firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload
--permanent
--reload
firewalld
--permanent
firewalld
开放特定服务:
firewalld
firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --reload
你可以通过
firewall-cmd --get-services
移除端口或服务: 如果不再需要某个端口或服务,可以使用
--remove-port
--remove-service
firewall-cmd --zone=public --remove-port=80/tcp --permanent firewall-cmd --zone=public --remove-service=http --permanent firewall-cmd --reload
使用富规则(Rich Rules)进行更精细的控制: 当简单的端口或服务规则不够用时,富规则提供了更强大的表达能力,比如根据源IP、目标IP、协议、端口等进行更复杂的匹配和动作。 例如,允许特定IP地址访问SSH服务:
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' --permanent firewall-cmd --reload
或者拒绝某个IP访问所有服务:
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.50" reject' --permanent firewall-cmd --reload
修改默认区域: 默认情况下,未指定区域的网络接口会使用
public
firewall-cmd --set-default-zone=home
这些步骤基本涵盖了日常防火墙配置的大部分场景。记住,每次对
--permanent
--reload
在我看来,了解当前防火墙的“健康状况”和规则配置是任何系统管理员的必备技能。这不仅仅是为了排查网络连接问题,更是为了确保系统安全策略的正确实施。CentOS 7/8(以及后续版本)主要依赖
firewalld
firewall-cmd
首先,最直接的查看方式是检查
firewalld
systemctl status firewalld
如果看到
Active: active (running)
接下来,要查看当前生效的防火墙规则,我通常会从整体入手,再细化到特定区域。
firewall-cmd --list-all-zones
firewalld
如果只想查看当前活动的区域(即有网络接口绑定的区域)的规则,可以使用:
firewall-cmd --get-active-zones # 查看哪些区域是活动的 firewall-cmd --zone=public --list-all # 假设public是活动区域,查看其所有规则
这里有个小细节,
firewall-cmd
firewalld
firewall-cmd --reload
--list-all
--permanent --list-all
管理方面,除了前面提到的
--add-port
--add-service
--add-rich-rule
eth0
home
firewall-cmd --zone=home --change-interface=eth0 --permanent firewall-cmd --reload
firewall-cmd --set-default-zone=internal
这在我配置内网服务器时比较常用,因为内网环境通常比公网更受信任。
通过这些命令的组合使用,你就可以对CentOS防火墙的当前状态了如指掌,并进行精细化管理。我个人觉得,多用
--list-all
说实话,
firewalld
iptables
firewalld
简单来说,一个“区域”就是一组预设的、针对特定网络环境的安全规则集合。
firewalld
drop
internal
home
这些区域的引入,使得我们可以根据网络接口所处的实际环境,快速应用一套合适的安全策略。比如,一台服务器,面向公网的网卡(如
eth0
public
eth1
internal
Zones在安全策略中的作用:
iptables
public
firewalld
我个人的经验是,在规划服务器网络架构时,首先就应该考虑每个网络接口会面临什么样的网络环境,然后选择最合适的
firewalld
public
internal
firewalld
很多人提到防火墙,第一反应就是“开放端口”。但
firewalld
firewalld
富规则(Rich Rules):精细到极致的控制 如果说开放端口是粗放式管理,那么富规则就是手术刀级别的精细操作。它允许你基于更复杂的条件(如源/目的IP地址、协议、端口范围、ICMP类型等)来定义允许、拒绝或丢弃流量的规则。
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.45" port port="22" protocol="tcp" accept' --permanent firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" port port="22" protocol="tcp" reject' --permanent # 拒绝其他所有IP访问22端口 firewall-cmd --reload
这里我用了两条规则,第一条允许特定IP,第二条是拒绝所有其他IP。顺序很重要,
firewalld
firewalld
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" log prefix="BLOCKED-INTERNAL " level="info" reject' --permanent firewall-cmd --reload
端口转发(Port Forwarding/NAT) 这是我个人在部署内部服务时经常会用到的功能。如果你有一个内部服务(比如运行在8080端口的Web应用)不想直接暴露在公网,但又希望通过公网的80端口访问,就可以使用端口转发。
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.10 --permanent firewall-cmd --reload
这条命令的意思是,所有进入
public
192.168.1.10
toaddr
网络地址伪装(Masquerading) 当你的CentOS服务器作为网关,让内部网络中的多台设备共享一个公网IP访问互联网时,就需要开启网络地址伪装。它会将内部网络的私有IP地址伪装成服务器的公网IP地址。
firewall-cmd --zone=external --add-masquerade --permanent firewall-cmd --reload
通常,外部接口会放在
external
直接规则(Direct Rules):当firewalld抽象不够用时
firewalld
iptables
nftables
firewalld
--direct
iptables
iptables
firewalld
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT --permanent firewall-cmd --reload
这条命令直接在
iptables
INPUT
ICMP过滤 你可以控制允许或拒绝哪些ICMP消息类型。例如,为了避免被扫描,可以禁止外部Ping请求:
firewall-cmd --zone=public --remove-service=icmp --permanent # 或者移除icmp协议 firewall-cmd --add-icmp-block=echo-request --permanent firewall-cmd --reload
或者更精细地使用富规则来拒绝特定源的ICMP请求。
这些高级配置,让
firewalld
firewalld
以上就是CentOS防火墙怎么配置_CentOS防火墙规则设置教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号