CentOS防火墙配置全攻略:从入门到精通,轻松管理服务器安全

在当今的服务器运维领域,CentOS 作为一款稳定、安全且广泛使用的 Linux 发行版,深受企业和开发者的青睐。而防火墙作为系统安全的第一道防线,其配置与管理显得尤为重要。自 CentOS 7 起,系统默认采用 firewalld 替代了传统的 iptables,带来了更灵活、更动态的防火墙管理方式。

CentOS防火墙配置全攻略:从入门到精通,轻松管理服务器安全

本文将为你详细解析 CentOS 防火墙配置 的方方面面,无论你是刚接触 Linux 的新手,还是需要快速查阅命令的运维人员,都能在这里找到你需要的知识点。掌握这些技能,你将能够轻松开放端口、允许服务、设置 IP 白名单,确保你的服务器既安全又畅通。


为什么使用 firewalld?iptables 与 firewalld 的区别

在深入配置之前,我们先来了解为什么 CentOS 7 及以上版本选择 firewalld 作为默认防火墙管理工具。

  • iptables:基于内核的 netfilter 框架,规则静态,修改后需重启服务或重载规则,不支持动态更新。

  • firewalld:基于 nftables 框架,支持动态更新,无需重启服务即可生效。它引入了“区域(Zone)”的概念,允许用户根据网络环境快速切换预设的安全策略(如 publictrustedhome 等),大大简化了配置流程。

优势总结:firewalld 更现代化、更易用,特别适合动态环境和初学者。


firewalld 基础服务管理

在配置规则前,首先要掌握如何管理 firewalld 服务本身。

1. 查看防火墙状态

sudo systemctl status firewalld

或使用 firewall-cmd 命令:

firewall-cmd --state

如果返回 running,表示防火墙正在运行。

2. 启动、停止、重启防火墙

# 启动防火墙
sudo systemctl start firewalld

# 停止防火墙(谨慎操作,可能导致无法远程连接)
sudo systemctl stop firewalld

# 重启防火墙
sudo systemctl restart firewalld

3. 设置开机自启或禁用

# 启用开机自启
sudo systemctl enable firewalld

# 禁用开机自启
sudo systemctl disable firewalld

防火墙核心配置命令详解

1. 查看当前防火墙规则

# 查看默认区域(通常是 public)的所有规则
sudo firewall-cmd --list-all

# 查看已开放的端口
sudo firewall-cmd --list-ports

# 查看已允许的服务
sudo firewall-cmd --list-services

# 查看所有可用的服务(如 http, https, ssh 等)
sudo firewall-cmd --get-services

2. 开放指定端口(TCP/UDP)

✅ 临时开放(重启后失效)

# 开放单个 TCP 端口(如 8080)
sudo firewall-cmd --add-port=8080/tcp

# 开放 UDP 端口范围(如 5000-6000)
sudo firewall-cmd --add-port=5000-6000/udp

✅ 永久开放(推荐使用)

# 永久开放 TCP 8080 端口
sudo firewall-cmd --permanent --add-port=8080/tcp

# 永久开放 TCP 端口范围 20000-40000
sudo firewall-cmd --permanent --add-port=20000-40000/tcp

# 重载防火墙,使永久配置生效
sudo firewall-cmd --reload

⚠️ 重要提示:使用 --permanent 参数后,必须执行 --reload 才能生效。

✅ 同时开放多个端口或协议

# 同时开放多个 TCP 和 UDP 端口
sudo firewall-cmd --permanent \
  --add-port={5060,5061,20000-40000}/tcp \
  --add-port={5060,5061,20000-40000}/udp

# 重载生效
sudo firewall-cmd --reload

3. 允许预定义服务(更安全的做法)

相比直接开放端口,允许预定义服务更为安全和便捷。

# 允许 HTTP 服务(默认端口 80)
sudo firewall-cmd --permanent --add-service=http

# 允许 HTTPS 服务(默认端口 443)
sudo firewall-cmd --permanent --add-service=https

# 允许 SSH 服务(默认端口 22)
sudo firewall-cmd --permanent --add-service=ssh

# 重载使配置生效
sudo firewall-cmd --reload

4. 配置 IP 白名单(限制访问来源)

你可以通过设置 IP 白名单,只允许特定 IP 或 IP 段访问服务器。

# 允许单个 IP 访问(如 192.168.1.100)
sudo firewall-cmd --permanent --add-source=192.168.1.100

# 允许整个子网访问(如 192.168.1.0/24)
sudo firewall-cmd --permanent --add-source=192.168.1.0/24

# 重载生效
sudo firewall-cmd --reload

5. 删除已配置的规则

# 删除已开放的端口
sudo firewall-cmd --permanent --remove-port=8080/tcp

# 删除已允许的服务
sudo firewall-cmd --permanent --remove-service=http

# 删除 IP 白名单
sudo firewall-cmd --permanent --remove-source=192.168.1.100

# 重载生效
sudo firewall-cmd --reload

高级功能与应急处理

1. 使用 firewall-config 图形化工具

CentOS 提供了图形化防火墙配置工具 firewall-config,适合不熟悉命令行的用户。

# 安装(通常已预装)
sudo yum install firewall-config -y

# 启动图形界面
firewall-config

2. 应急模式:紧急断开所有流量

在极端情况下,可启用“恐慌模式”断开所有网络连接(仅本地可操作):

# 启用恐慌模式(慎用!)
sudo firewall-cmd --panic-on

# 关闭恐慌模式
sudo firewall-cmd --panic-off

常见问题与最佳实践

❓ 为什么配置了端口还是无法访问?

  1. 确认服务是否在运行(如 systemctl status nginx)。

  2. 检查是否使用了 --permanent 并执行了 --reload

  3. 确认云服务器(如阿里云、AWS)的安全组是否也开放了相应端口。

  4. 检查 SELinux 是否阻止了服务(可临时 setenforce 0 测试)。

✅ 最佳实践建议

  • 优先使用服务名而非端口:更安全,避免端口冲突。

  • 最小权限原则:只开放必要的端口和服务。

  • 定期审查规则:使用 --list-all 检查当前策略。

  • 备份配置:重要配置可备份 /etc/firewalld/ 目录。


通过本文,你已经掌握了 CentOS 系统中 firewalld 防火墙的核心配置方法。从服务管理到端口开放,再到 IP 白名单设置,每一步都至关重要。合理配置防火墙,不仅能提升服务器安全性,还能确保业务的稳定运行。

📌 记住关键命令--permanent + --reload 是永久生效的黄金组合!

如果你觉得这篇文章对你有帮助,欢迎点赞、收藏并分享给更多需要的朋友。关注我,获取更多 Linux 运维与数码科技干货!

发表评论

评论列表

还没有评论,快来说点什么吧~