Firewalld 服务介绍
概述
Firewalld 是一个由 Red Hat 开发的动态防火墙管理工具,被广泛应用于多个 Linux 发行版中,例如在 RHEL 7、CentOS 7、Fedora 18 及更高版本中,已经取代 iptables 成为默认的防火墙管理工具。
主要功能
动态管理
Firewalld 支持动态管理防火墙规则,可以在不重启防火墙的情况下添加、修改和删除规则。而 Iptables 在修改规则后需要重启防火墙服务才能生效。
区域管理
Firewalld 引入了区域(zones)的概念,可以针对不同的网络环境(如家庭、公共、内部等)预设不同的防火墙策略,根据信任级别来控制流量。而 Iptables 没有区域管理功能。
服务管理
Firewalld 可以直接通过服务名称(如 http、ssh 等)来允许或禁止相关的端口和协议,更加直观和方便。Iptables 则需要手动指定端口号和协议。
支持多种协议
Firewalld 支持 IPv4、IPv6、防火墙桥接以及 IP 集合(IP sets),特别是原生支持 IPv6。而 Iptables 需要单独使用 Ip6tables 来配置 IPv6 规则。
分离运行时和永久配置
Firewalld 将永久规则集和运行时规则集分开管理,可先在运行时测试,然后再保存为永久规则。Iptables 的规则集则需要直接修改配置文件。
丰富的 API
提供完整的 D-Bus API,方便服务、应用程序和用户适配防火墙设置。
图形界面和命令行
Firewalld 提供了图形界面配置工具 firewall-config,同时也有命令行工具 firewall-cmd。Iptables 主要还是依赖命令行配置。
与 Iptables 差异
Firewalld 相比 Iptables 在易用性、细粒度控制、动态管理等方面都有优势,更适合新手用户。但 Iptables 在灵活性和兼容性上仍然具有优势,很多老系统和服务器仍在使用。两者在功能上并无本质区别,只是配置方式和使用理念不同。
易用性和用户友好性
- Iptables: 需要深入了解网络协议和复杂的命令语法,学习曲线陡峭。适合需要精细控制的高级用户和系统管理员。
- Firewalld: 设计更注重用户友好性,使用区域(zones)和服务(services)来简化配置。命令更直观,并且提供图形界面,适合各种技能水平的用户。
灵活性和细粒度控制
- Iptables: 提供更加精细的控制,可以定义非常具体的网络包处理规则,适合复杂的网络配置需求。
- Firewalld: 提供足够的灵活性来满足大多数标准使用场景,但抽象和简化了某些复杂性,适合快速设置和较简单的环境。
动态管理
- Iptables: 传统上被认为是静态的,每次更改都需要手动重新加载规则,这可能会中断现有连接。
- Firewalld: 支持动态管理,可以在不重启防火墙的情况下应用更改,这对于需要频繁更新规则的动态网络环境非常重要。
性能和资源利用
- Iptables: 直接与内核的 netfilter 交互,在高吞吐量场景下可能表现更好。
- Firewalld: 对于典型使用场景,性能差异可以忽略不计,但在极高需求环境下可能稍逊于 Iptables。
集成和兼容性
- Iptables: 广泛支持,适用于旧的和新的 Linux 发行版,适合需要精细控制的复杂网络配置。
- Firewalld: 更符合现代 Linux 发行版的特性和需求,适合需要频繁、无缝更新的环境。
主要概念
区域(Zones)
区域是一组预定义的规则集,可以对不同的网络连接或接口定义信任级别,不同的区域代表了不同的信任级别,按从不信任到完全信任划分,具体区域如下:
- drop(丢弃区域):丢弃所有流入的网络数据包,不作出任何响应。只允许流出的网络连接。
- block(限制区域):拒绝所有网络连接,允许流出的网络连接。
- public(公共区域):默认区域,用于公共访问的网络,允许 SSH、DHCPv6 等少数服务。新加的网卡默认属于该区域。
- external(外部区域):用于外部网络,只允许 SSH 连接进入,其他连接都拒绝。默认会对流出的数据包进行伪装。
- dmz(隔离区):也称非军事区,允许与 SSH 预定义服务匹配的传入流量,其他均拒绝,用于隔离非安全系统与安全系统之间的缓冲区。
- work(工作区域):用于工作网络环境。只允许 SSH 等少数服务,比 home 区域更严格。
- home(家庭区域):用于家庭网络环境。只允许选定的连接,如 SSH、mDNS、Samba 等服务。其他连接会被拒绝。
- internal(内部区域):用于内部网络。默认规则和 home 区域相同,可根据需要调整。
- trusted(信任区域):允许所有的数据包流入和流出。相当于没有防火墙,完全信任所有来源。
服务(Services)
服务是一组预定义的规则,涵盖了允许访问特定服务(如 HTTP、SSH)所需的所有设置,并应用于区域中,每个服务代表了本地端口、网络协议、相关的防火墙规则等的组合。服务可以直接添加到区域中,简化了防火墙配置。
规则(rules)
规则是最基本的防火墙配置单元,用于定义允许或拒绝特定流量。规则可以直接添加到区域中,也可以通过服务间接添加。
端口和协议
Firewalld 允许通过指定端口和协议来控制网络流量。用户可以开放或关闭特定端口,以允许或阻止相应的网络通信。
在 Firewalld 的架构中,区域处于最顶层,定义了不同场景下的整体防火墙策略;服务和规则则是构成区域策略的基本组件,提供了针对具体端口、协议、IP 等的流量控制能力。三者协同工作,共同实现了 Linux 系统的网络安全防护。
本文作者:505donkey
本文链接:https://www.cnblogs.com/505donkey/p/18297455
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步