掌握firewalld:Linux防火墙配置实战

本章要点

  • 理解 firewalld 防火墙的设计思想与工作机制
  • 掌握 firewalld 区域(Zone)的作用与使用场景
  • 熟练使用 firewall-cmd 命令行配置防火墙
  • 了解 firewall-config 图形界面基本操作
  • 能够完成服务、端口、网卡、ICMP 等规则配置

前言

在现代 Linux 发行版中,firewalld 已成为默认的动态防火墙管理服务。相比于传统 iptables,firewalld 提供了区域化管理动态更新规则运行时 / 永久双配置模式等更加便捷的特性,无需重启服务即可生效,大幅提升了防火墙管理的灵活性与安全性。

本章将从 firewalld 的基础概念入手,详细讲解它与 iptables 的关系、区域机制、两种配置工具的使用方法,并通过完整实例演示企业环境下的防火墙部署方案。


一、firewalld 防火墙基础

1. firewalld 简介

firewalld 是 Linux 系统下动态管理的防火墙服务,用于维护网络访问规则,实现数据包过滤、放行、端口映射、地址伪装等安全功能。它的核心特点:

  • 支持 IPv4/IPv6 双栈
  • 支持 区域(Zone) 安全模型
  • 支持 运行时(Runtime)永久(Permanent) 两种配置
  • 支持动态更新规则,不中断现有连接
  • 提供命令行工具 firewall-cmd 和图形工具 firewall-config

2. firewalld 与 iptables 的关系

  • netfilter:内核层面的数据包过滤框架。
  • iptables / firewalld:都是用户态管理工具,用来向 netfilter 下发规则。
  • 两者不能同时启用,同一系统只能选择一种防火墙服务。

区别总结:

  • iptables 清空后重新加载所有规则,容易断开连接。
  • firewalld 只更新变化的规则,支持动态加载,连接不中断。
  • iptables 配置文件:/etc/sysconfig/iptables
  • firewalld 配置文件:/etc/firewalld//usr/lib/firewalld/

二、firewalld 网络区域(Zone)

firewalld 通过区域来划分网络信任级别,每个区域拥有独立的放行策略,简化管理员配置。

1. 区域匹配顺序

当数据包进入系统时:

  1. 优先匹配源 IP 绑定的区域
  2. 其次匹配网卡绑定的区域
  3. 最后使用默认区域(默认是 public)

2. 常用区域及默认策略

表格

区域名称 安全策略说明
trusted 放行所有流量
internal 信任内网,仅放行 ssh /mdns/dhcpv6-client 等
home 家庭网络,同 internal
work 工作网络,仅放行 ssh /ipp-client/dhcpv6-client
public 公共网络,默认仅放行 ssh /dhcpv6-client
external 网关外部网络,开启 SNAT
dmz 非军事区,仅放行 ssh
block 拒绝所有入站流量,直接拒绝
drop 直接丢弃所有入站流量,无响应

三、图形工具 firewall-config

1. 安装与启动

bash

运行

复制代码
dnf install -y firewall-config

启动:应用程序 → 防火墙配置

2. 界面结构

  • 运行时配置(Runtime):临时生效,重启失效
  • 永久配置(Permanent):写入配置文件,重启依然有效
  • 区域配置:服务、端口、协议、伪装、端口转发、ICMP 过滤
  • 服务配置:预定义服务的端口、模块

3. 常用功能

  • 切换默认区域
  • 为网卡绑定区域
  • 放行服务 / 端口
  • 配置端口转发
  • 启用 IP 伪装
  • 过滤 ICMP(禁 ping)

四、命令行工具 firewall-cmd

1. 基础信息查询

bash

运行

复制代码
firewall-cmd --get-zones           # 查看所有区域
firewall-cmd --get-services        # 查看所有预定义服务
firewall-cmd --get-icmptypes       # 查看所有ICMP类型
firewall-cmd --get-default-zone    # 查看默认区域
firewall-cmd --get-active-zones    # 查看已激活区域

2. 区域管理

bash

运行

复制代码
firewall-cmd --set-default-zone=public    # 设置默认区域
firewall-cmd --zone=public --add-interface=ens33   # 绑定网卡
firewall-cmd --zone=public --change-interface=ens33  # 修改网卡区域
firewall-cmd --zone=public --remove-interface=ens33  # 解绑网卡

3. 服务管理

bash

运行

复制代码
firewall-cmd --add-service=http               # 放行HTTP服务
firewall-cmd --remove-service=http           # 移除HTTP服务
firewall-cmd --add-service=http --permanent  # 永久放行

4. 端口管理

bash

运行

复制代码
firewall-cmd --add-port=8080/tcp
firewall-cmd --remove-port=8080/tcp
firewall-cmd --add-port=20000-25000/udp

5. 禁用 Ping(ICMP 过滤)

bash

运行

复制代码
firewall-cmd --add-icmp-block=echo-request

6. 配置模式

bash

运行

复制代码
firewall-cmd --reload            # 加载永久配置到运行时
firewall-cmd --runtime-to-permanent  # 保存当前配置为永久

五、firewalld 企业应用实例

实验环境

  • 网关服务器:双网卡
    • ens33(外网)→ external 区域
    • ens37(内网)→ trusted 区域
  • Web 服务器:单网卡 → dmz 区域
  • 要求:
    • 仅开放 HTTPS (443)
    • SSH 端口改为 12345
    • 禁止 Ping
    • 内网可访问,外网受限

1. 网关配置

bash

运行

复制代码
systemctl stop iptables
systemctl start firewalld
systemctl enable firewalld

firewall-cmd --set-default-zone=external
firewall-cmd --zone=trusted --add-interface=ens37 --permanent
firewall-cmd --zone=external --add-port=12345/tcp --permanent
firewall-cmd --zone=external --remove-service=ssh --permanent
firewall-cmd --zone=external --add-icmp-block=echo-request --permanent
firewall-cmd --reload

2. Web 服务器配置

bash

运行

复制代码
firewall-cmd --set-default-zone=dmz
firewall-cmd --zone=dmz --add-service=https --permanent
firewall-cmd --zone=dmz --add-port=12345/tcp --permanent
firewall-cmd --zone=dmz --remove-service=ssh --permanent
firewall-cmd --zone=dmz --add-icmp-block=echo-request --permanent
firewall-cmd --reload

本章总结

本章系统介绍了 firewalld 防火墙 的核心知识与配置方法:

  1. 基础架构firewalld 是基于 netfilter 的动态防火墙,与 iptables 作用相同但管理方式更灵活,支持区域、运行时 / 永久双模式。

  2. 区域机制 区域是 firewalld 的核心,通过信任级别划分网络,publicdmztrustedexternal 是最常用区域。

  3. 命令管理(firewall-cmd) 掌握区域、服务、端口、网卡、ICMP 等配置,是日常运维最常用技能。重点命令:--add-service--add-port--reload--permanent

  4. **图形工具(firewall-config)**适合快速查看与修改规则,支持服务、端口、转发、伪装等功能。

  5. 企业实战能够完成多区域、多网卡、自定义端口、禁 ping、内网 / 外网隔离等安全部署。

相关推荐
两个人的幸福2 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
zzzzzz3103 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
BingoGo5 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack5 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户3074596982075 天前
PHP 扩展——从入门到理解
php
鹏仔先生6 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
小宇宙Zz6 天前
Maven依赖冲突
java·服务器·maven
云水一下6 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip6 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua