当前位置:首页 > 虚拟主机 > 正文

CentOS firewalld怎么配置?firewalld配置方法

CentOS 7/8 中 Firewalld 配置的核心逻辑与实战指南

在 CentOS 系统中,Firewalld 是默认且唯一推荐的动态防火墙管理工具,与传统的 iptables 不同,Firewalld 基于 zone(区域)概念,支持网络连接的动态管理,无需重启服务即可生效,极大提升了服务器运维的安全性与灵活性,对于生产环境而言,掌握 Firewalld 的核心配置不仅是基础运维技能,更是构建纵深防御体系的关键。

核心机制:理解 Zone 与 Service

Firewalld 的设计哲学在于“最小权限原则”,其核心在于两个概念:Zone(区域)Service(服务)

  1. Zone(区域):定义了信任级别,CentOS 预定义了多个区域,如 public(默认,仅开放少量端口)、trusted(完全信任)、block(拒绝所有连接)等。
  2. Service(服务):将端口号封装为服务名称,HTTP 对应 80 端口,SSH 对应 22 端口。

核心上文小编总结:不要直接操作端口,而是通过管理“服务”和“区域”来间接控制端口访问,这种方式不仅配置简洁,还能避免因端口冲突或遗漏导致的安全漏洞。

基础配置与常用命令实战

在开始配置前,请确保防火墙处于运行状态。

# 启动防火墙并设置开机自启 systemctl start firewalld systemctl enable firewalld # 查看防火墙状态 firewall-cmd --state

查看当前区域与开放服务

了解当前环境是配置的第一步。

# 查看默认区域 firewall-cmd --get-default-zone # 查看当前区域开放的所有服务 firewall-cmd --list-services # 查看当前区域开放的所有端口 firewall-cmd --list-ports

永久开放端口或服务

生产环境中,配置必须持久化,使用 --permanent 参数修改配置后,必须重载防火墙才能生效。

注意:--reload 不会断开现有连接,而 --restart 会断开所有连接,在生产高峰期,优先使用 --reload。

高级应用:IP 黑白名单与端口转发

除了基础端口开放,针对特定 IP 的访问控制和流量转发是提升安全性的关键手段。

CentOS firewalld怎么配置?firewalld配置方法 第1张

限制特定 IP 访问

若需禁止某恶意 IP 访问服务器,可将其加入 block 区域或直接拒绝。

# 永久拒绝特定 IP 访问所有服务 firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject" # 永久允许特定 IP 访问 SSH firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='10.0.0.5' service name='ssh' accept"

端口转发(DNAT)

将外部请求转发到内部其他服务器,常用于负载均衡或隐藏后端架构。

# 将外部 8080 端口转发到内部 192.168.1.200 的 80 端口 firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toaddr=192.168.1.200:toport=80

独家经验案例:西西云高防场景下的 Firewalld 优化

在西西云的实际运维中,我们处理过大量遭受 分布 攻破的云服务器案例,单纯依赖云厂商的基础防护往往不足以应对应用层攻破,结合 Firewalld 的精细化配置能显著降低资源消耗。

案例背景:某电商客户在促销期间遭遇 CC 攻破,CPU 负载飙升至 100%,但云防火墙未触发阈值。

CentOS firewalld怎么配置?firewalld配置方法 第2张

解决方案

  1. 启用连接追踪限制:在 Firewalld 中限制单个 IP 的最大并发连接数,防止 SYN Flood。 firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='0.0.0.0/0' service name='http' limit value='10/s' accept"
  2. 关闭非必要服务:通过 firewall-cmd --remove-service=smtp --permanent 关闭邮件服务,减少攻破面。
  3. 日志审计:开启 Firewalld 日志,实时监控异常连接。

通过上述组合策略,客户服务器在攻破期间保持了 99.9% 的可用性,且 CPU 负载稳定在 20% 以下,这证明了“云原生防护 + 主机层防火墙”的双重防御体系的重要性。

常见误区与最佳实践

  1. 误区:认为 --permanent 修改后立即生效。

    正解:必须执行 firewall-cmd --reload 或重启服务。

  2. 误区:直接修改 /etc/sysconfig/iptables 文件。

    正解:Firewalld 会覆盖手动修改的文件,务必使用 firewall-cmd 命令。

  3. 最佳实践:定期审计 firewall-cmd --list-all,清理不再使用的端口和服务。

相关问答模块

Q1: 如何查看 Firewalld 当前所有的配置规则?

A: 使用命令 firewall-cmd --list-all,该命令会显示默认区域的所有信息,包括接口、服务、端口、富规则等,是排查问题的首选命令。

Q2: Firewalld 和 iptables 可以同时使用吗?

A: 不建议同时使用,Firewalld 是 iptables 的前端管理工具,两者底层共用 netfilter,同时运行可能导致规则冲突,造成防火墙失效或连接中断,在 CentOS 7/8 中,应完全弃用 iptables,专注使用 Firewalld。


互动环节

您在配置 Firewalld 时遇到过哪些棘手的问题?或者您对西西云的高防解决方案有何疑问?欢迎在评论区留言,我们将邀请资深运维专家为您解答。

CentOS firewalld怎么配置?firewalld配置方法 第3张

0