文档中心

Linux firewalld 防火墙完整版教程:命令+富规则+实战

发布时间:2026-05-14 15:40:08     更新时间:2026-05-14 15:53:01

1、防火墙概述

Firewalld 是提供 网络与防火墙区域(zone 定义、网络连接及接口安全等级的动态防火墙管理工具。它自身不直接过滤数据包,与 iptables 一样,依赖内核 netfilter 实现过滤。

           作用:维护防火墙规则

           实际执行者:内核 netfilter

分类:

           逻辑:主机防火墙、网络防火墙

           物理:硬件防火墙、软件防火墙

firewalld iptables 属于主机防火墙,主机防火墙主要依赖两个机制:

           Netfilter:数据包过滤

           TCP Wrappers:程序访问控制

适配系统:

           CentOS 7/8/9RHEL 7/8/9Rocky Linux 8/9AlmaLinux 8/9Oracle Linux 7/8/9FedoraOpenSUSESLES

 

2Firewalld 原理架构

2.1 区域管理

将网络划分成不同区域,根据信任级别制定访问控制策略。例如:互联网为不信任区,内网为高信任区。

2.2 常用区域默认策略

区域名

默认配置

trusted

允许所有连接

home

家庭网络

internal

内网,仅放行 sshmdnsipp-clientsamba-clientdhcpv6-client

work

工作区,仅放行 sshipp-clientdhcpv6-client

public

公共区,仅放行 sshdhcpv6-clientfirewalld 默认区域

dmz

仅放行 ssh

2.3 配置文件路径

           系统默认区域配置:/usr/lib/firewalld/zones/

           自定义区域配置:/etc/firewalld/zones/

           服务配置:/usr/lib/firewalld/services/

 

3firewalld iptables 异同

3.1 相同点

都是 Linux 防火墙管理工具,底层都依赖内核 netfilter

3.2 不同点

1.         配置方式:iptables 仅命令行;firewalld 支持命令行 + 图形界面

2.         规则更新:iptables 改规则会清空重建;firewalld 增量更新、不丢连接

3.         配置文件:iptables /etc/sysconfig/iptablesfirewalld XML 格式

4.         服务模式:iptables 无守护进程;firewalld 有守护进程

5.         默认策略:firewalld 默认区域为 public,仅放行 ssh dhcpv6-client,其他流量默认拒绝iptables 默认允许所有流量

 

4Firewalld 常用操作

工具:

firewall-cmdfirewalld 防火墙命令行管理工具,生产环境主流使用的命令行工具,无需图形界面,支持绝大多数规则配置。

firewall-configfirewalld 防火墙图形化管理工具,需桌面环境支持,一般用于本地测试/桌面系统,服务器极少使用。

4.1 规则两种状态

            runtime(运行时):规则立即生效,仅存在于内存中,重启防火墙 / 服务器后失效。

           permanent(永久):规则写入配置文件,重启后依然保留,不会丢失。

           --reload(重载):将永久配置文件中的规则加载到内存,使永久配置立即生效,必须与 --permanent 配合使用。

4.2 常用参数

--help               帮助
--permanent         
永久配置
--reload            
重载永久规则
--zone=             
指定区域
--get-default-zone  
查看默认区域
--set-default-zone= 
设置默认区域
--get-zones         
所有可用区域
--get-active-zones  
活跃区域
--add-source=       
放行IP/网段
--remove-source=    
移除IP/网段
--add-service=      
放行服务
--remove-service=   
移除服务
--list-services     
查看放行服务
--add-port=         
放行端口
--remove-port=      
移除端口
--list-ports        
查看放行端口
--list-all          
查看当前区域所有配置
--list-all-zones    
查看所有区域

4.3 常用增删改查

1)查看规则

bash
# 查看当前区域所有规则
firewall-cmd --list-all

#
查看指定区域
firewall-cmd --list-all --zone=work

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

#
查询端口是否开放
firewall-cmd --zone=public --query-port=22/tcp

#
查看放行IP/网段
firewall-cmd --list-sources

#
查看默认区域
firewall-cmd --get-default-zone

#
查看所有可用区域
firewall-cmd --get-zones

#
查看活跃区域
firewall-cmd --get-active-zones

#
查看网卡所属区域
firewall-cmd --get-zone-of-interface=eth0

#
查看所有支持的服务
firewall-cmd --get-services

2)添加规则(永久生效)

开放端口

bash
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public
--add-port=161/udp
firewall-cmd --reload

放行服务

bash
firewall-cmd --permanent --zone=public --add-service=nfs
firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --reload

放行网段

bash
firewall-cmd --permanent --zone=public --add-source=10.10.10.0/24
firewall-cmd --reload

3)删除规则

bash
# 删除端口
firewall-cmd --permanent --zone=public
--remove-port=3306/tcp
firewall-cmd --reload

#
删除服务
firewall-cmd --permanent --zone=public
--remove-service=nfs
firewall-cmd --reload

#
删除网段
firewall-cmd --permanent --zone=public --remove-source=10.10.10.0/24
firewall-cmd --reload

 

5Firewalld 富规则(精细控制)

富规则优先级高,生产环境精细管控常用。

5.1 常用命令

bash
firewall-cmd --list-rich-rules          # 列出富规则
firewall-cmd --permanent --zone=public
--add-rich-rule="规则"     # 添加富规则
firewall-cmd --permanent --zone=public
--remove-rich-rule="规则"  # 删除富规则

5.2 标准语法

rule [family="ipv4|ipv6"]
source address="IP/
掩码"
service name="
服务名" | port port="端口" protocol="tcp|udp"
accept | reject | drop

5.3 常用富规则

1.         仅允许单个 IP 访问指定端口

bash
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.10.10.110/32" port port="1521" protocol="tcp" accept'
firewall-cmd --reload

2.         允许网段访问端口段

bash
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.10.10.0/24" port port="8080-8090" protocol="tcp" accept'
firewall-cmd --reload

3.         允许单个 IP 访问指定服务

bash
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.10.10.101/32" service name="nfs" accept'
firewall-cmd --reload

4.         拒绝单个 IP 所有访问

bash
firewall-cmd --permanent --zone=public --add-rich-rule='rule

# 方式1reject(返回拒绝响应,对方知道被拒绝)

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.10.10.110/32" reject'

 

# 方式2drop(静默丢弃,更安全,不暴露防火墙存在)

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.10.10.110/32" action drop'firewall-cmd --reload

5.         允许单个 IP 所有访问

bash
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.10.10.110/32" accept'
firewall-cmd --reload

 

全天候品质服务
全天候品质服务
快速客服响应
快速客服响应
客户价值为先
客户价值为先
多层安全防护
多层安全防护
QQ在线咨询
业务咨询:594128886
备案咨询:1165077278
微信扫码咨询
微信客服二维码

微信号:yuy1899

0451-85991100 工作日 09:00-18:00