掌握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、内网 / 外网隔离等安全部署。

相关推荐
va学弟2 小时前
Java 网络通信编程(6):视频通话
java·服务器·网络·音视频
V__KING__3 小时前
systemd-remount-fs,fstab之间的渊源
linux·服务器·网络
Titan20245 小时前
Linux环境变量个人笔记
linux·服务器·c++
zx_zx_1235 小时前
传输层协议tcp (2)
服务器·网络·tcp/ip
青柠代码录5 小时前
【Linux】路径区分:testdir、testdir/、testdir/*
linux·运维·服务器
mounter6257 小时前
基于MLX设备的Devlink 工具全指南与核心架构演进
linux·运维·服务器·网络·架构·kernel
wefg17 小时前
【计算机网络】网络基础 - 1(网络协议/TCP/IP协议栈/局域网内外数据传输/数据封装、解包、分用)
linux·服务器·网络
xuanwojiuxin7 小时前
[linux] what‘s the kdump?
linux·运维·服务器
ServBay7 小时前
别在 PHP 代码里乱套 try-catch 了,10 个异常处理套路更厉害
后端·php