Firewall-cmd 简介

firewall-cmd 是一个用于管理 Linux 系统上的 Firewalld 防火墙的命令行工具。Firewalld 是一种动态防火墙管理工具,基于 zones(区域)services(服务) 模型,允许用户轻松定义规则来控制网络流量的进出。


基本概念

  1. Zones(区域)
    Firewalld 使用区域来定义网络接口的信任级别。例如,可以有 public 区域、home 区域等,每个区域有不同的网络访问控制策略。

  2. Services(服务)
    Firewalld 通过定义服务(如 HTTP、SSH、FTP 等)来管理不同应用的网络访问。

  3. Direct rules(直接规则)
    这些规则可以绕过区域模型,允许用户直接配置防火墙规则。


常用 firewall-cmd 命令

1. 查看防火墙状态


2. 查看当前区域


3. 修改防火墙配置


4. 启用和禁用防火墙服务


5. 查看所有已开启的服务


6. 添加和删除端口


7. 重新加载防火墙配置


8. 查看区域配置


9. 设定区域和接口


10. 查看直通规则(直接规则)


11. 禁用和启用防火墙(临时)


12. 验证防火墙规则


总结


辨析:

Firewalld、iptables 和 UFW 对比

Firewalld、iptables 和 UFW 都是 Linux 系统中用于管理网络流量和防火墙规则的工具,但它们在设计理念、使用方式和配置灵活性上有显著区别。以下是它们的主要区别:


1. iptables

iptables 是一个低级别的、命令行的防火墙工具,直接操作 Linux 内核中的 Netfilter 框架来过滤网络数据包。

特点:

示例:

# 允许端口 22(SSH)上的入站连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

适用场景:


2. UFW(Uncomplicated Firewall)

UFW 是一个更为简单和用户友好的防火墙工具,通常作为 iptables 的前端。它封装了 iptables 的复杂性,提供了易用的命令行接口。

特点:

示例:

# 允许 SSH 连接
ufw allow ssh

# 开启防火墙
ufw enable

适用场景:


3. Firewalld

Firewalld 是一个现代的防火墙管理工具,基于 iptables 和 nftables(新的防火墙框架),它引入了区域(zones)和服务(services)模型,旨在简化防火墙的管理,同时保留一定的灵活性。

特点:

示例:

# 允许端口 22(SSH)上的入站连接
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --reload

适用场景:


总结对比

特性 iptables UFW Firewalld
配置复杂度 高,灵活性强 低,简化了 iptables 的规则管理 中等,灵活性较高,但比 iptables 简单
管理方式 直接操作 Netfilter,规则复杂 简单的命令行接口,封装了 iptables 动态管理,基于区域和服务的抽象模型
规则存储方式 静态,修改后需保存 静态,修改后需保存 动态,实时生效,但也可以永久配置
适用对象 高级用户,网络管理员 普通用户,桌面和小型服务器 系统管理员,中小型企业服务器,动态管理
是否支持动态更新 不支持动态更新,重启服务才生效 不支持动态更新,重启服务才生效 支持动态更新,实时生效
底层支持 基于 iptables 和 nftables 封装 iptables 基于 iptables 和 nftables

选择哪个工具?