Linux firewalld 防火墙完整版教程:命令+富规则+实战
1、防火墙概述
Firewalld 是提供 网络与防火墙区域(zone) 定义、网络连接及接口安全等级的动态防火墙管理工具。它自身不直接过滤数据包,与 iptables 一样,依赖内核 netfilter 实现过滤。
•
作用:维护防火墙规则
•
实际执行者:内核 netfilter
分类:
•
逻辑:主机防火墙、网络防火墙
•
物理:硬件防火墙、软件防火墙
firewalld 与 iptables 属于主机防火墙,主机防火墙主要依赖两个机制:
•
Netfilter:数据包过滤
•
TCP
Wrappers:程序访问控制
适配系统:
•
CentOS
7/8/9、RHEL 7/8/9、Rocky Linux 8/9、AlmaLinux 8/9、Oracle
Linux 7/8/9、Fedora、OpenSUSE、SLES
2、Firewalld 原理架构
2.1 区域管理
将网络划分成不同区域,根据信任级别制定访问控制策略。例如:互联网为不信任区,内网为高信任区。
2.2 常用区域默认策略
|
区域名 |
默认配置 |
|
trusted |
允许所有连接 |
|
home |
家庭网络 |
|
internal |
内网,仅放行 ssh、mdns、ipp-client、samba-client、dhcpv6-client |
|
work |
工作区,仅放行 ssh、ipp-client、dhcpv6-client |
|
public |
公共区,仅放行 ssh、dhcpv6-client;firewalld 默认区域 |
|
dmz |
仅放行 ssh |
2.3 配置文件路径
•
系统默认区域配置:/usr/lib/firewalld/zones/
•
自定义区域配置:/etc/firewalld/zones/
•
服务配置:/usr/lib/firewalld/services/
3、firewalld 与 iptables 异同
3.1 相同点
都是 Linux 防火墙管理工具,底层都依赖内核 netfilter。
3.2 不同点
1.
配置方式:iptables
仅命令行;firewalld 支持命令行 + 图形界面
2.
规则更新:iptables
改规则会清空重建;firewalld 增量更新、不丢连接
3.
配置文件:iptables
在 /etc/sysconfig/iptables;firewalld 为 XML 格式
4.
服务模式:iptables
无守护进程;firewalld 有守护进程
5.
默认策略:firewalld
默认区域为 public,仅放行 ssh 和 dhcpv6-client,其他流量默认拒绝;iptables 默认允许所有流量
4、Firewalld 常用操作
工具:
firewall-cmd:firewalld 防火墙命令行管理工具,生产环境主流使用的命令行工具,无需图形界面,支持绝大多数规则配置。
firewall-config:firewalld 防火墙图形化管理工具,需桌面环境支持,一般用于本地测试/桌面系统,服务器极少使用。
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 |
(2)添加规则(永久生效)
开放端口
|
bash |
放行服务
|
bash |
放行网段
|
bash |
(3)删除规则
|
bash |
5、Firewalld 富规则(精细控制)
富规则优先级高,生产环境精细管控常用。
5.1 常用命令
|
bash |
5.2 标准语法
rule [family="ipv4|ipv6"]
source address="IP/掩码"
service name="服务名" | port port="端口" protocol="tcp|udp"
accept | reject | drop
5.3 常用富规则
1.
仅允许单个 IP
访问指定端口
|
bash |
2.
允许网段访问端口段
|
bash |
3.
允许单个 IP
访问指定服务
|
bash |
4.
拒绝单个 IP
所有访问
|
bash # 方式1:reject(返回拒绝响应,对方知道被拒绝) firewall-cmd --permanent --zone=public
--add-rich-rule='rule family="ipv4" source
address="10.10.10.110/32" reject'
# 方式2:drop(静默丢弃,更安全,不暴露防火墙存在) 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 |
联系我们
- 电话咨询: 0451-85991100
- QQ咨询: 594128886
- 业务咨询: 1165077278
- 在线咨询