概述
firewall-cmd 通过与 firewalld 服务交互来控制系统的网络流量。您可以区分应用永久规则和运行时规则,并通过各种网络区域(zone)提供灵活的安全策略。这有助于增强服务器的安全性,并允许或阻止对特定服务的访问。
主要功能
- 端口和服务的管理(添加/删除)
- 网络区域(Zone)的配置和管理
- 基于 IP 地址和网络的规则(Rich Rules)
- 运行时和永久规则的应用
- 地址伪装(Masquerading)和端口转发的配置
主要选项
firewall-cmd 允许您通过各种选项查询和配置防火墙规则。
规则应用与管理
信息查询
生成的命令:
请尝试组合命令。
描述:
`firewall-cmd` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
使用 firewall-cmd 配置和管理防火墙规则的各种示例。
查看当前活动区域和规则
firewall-cmd --list-all
查看默认区域(public)的所有当前运行时配置。
查看特定区域的所有配置
firewall-cmd --zone=internal --list-all
查看指定区域(例如:internal)的所有配置。
添加 HTTP 服务(运行时)
sudo firewall-cmd --zone=public --add-service=http
临时允许 public 区域的 HTTP 服务。重启后将失效。
添加 HTTP 服务(永久)
sudo firewall-cmd --zone=public --add-service=http --permanent
永久允许 public 区域的 HTTP 服务。应用更改需要执行 --reload。
重载防火墙规则
sudo firewall-cmd --reload
将所有永久设置的规则应用到当前的运行时防火墙。
添加端口 8080/tcp(永久)
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
永久允许 public 区域的 TCP 8080 端口。应用后需要重载。
移除 SSH 服务(永久)
sudo firewall-cmd --zone=public --remove-service=ssh --permanent
永久从 public 区域移除 SSH 服务。应用后需要重载。
应用所有永久规则
sudo firewall-cmd --reload
立即应用所有永久更改的规则。
安装
firewall-cmd 是 firewalld 包的一部分。它通常预装在大多数最新的 Linux 发行版中,或者可以轻松安装。
CentOS/RHEL/Fedora
sudo dnf install firewalld
在 Red Hat 系列的 Linux 上安装 firewalld。
Ubuntu/Debian
sudo apt install firewalld
在 Debian 系列的 Linux 上安装 firewalld。
启动和启用服务
sudo systemctl start firewalld
sudo systemctl enable firewalld
安装后,启动 firewalld 服务并启用它以在系统启动时自动运行。
提示与注意事项
使用 firewall-cmd 时需要注意的事项和一些有用的提示。
运行时 vs 永久规则
- 不带 `--permanent` 选项的规则仅在当前会话中生效,重启后会丢失。
- 要永久生效,请使用 `--permanent` 选项,然后执行 `firewall-cmd --reload` 命令来应用更改。
理解区域(Zone)
- firewalld 通过将网络接口分配到不同的安全区域来管理。每个区域可以具有不同的安全级别。
- 默认区域是 `public`,用于大多数外部连接。还有 `home`、`internal`、`trusted` 等多种区域。
使用服务名称
- 使用预定义的网络服务名称(如 `http`、`https`、`ssh`)比使用端口号(如 80/tcp)更易读且便于管理。
- 您可以使用 `firewall-cmd --get-services` 命令查看可用服务列表。
备份和测试
- 在进行重要更改之前,建议使用 `firewall-cmd --list-all --zone=<zone>` 命令记录当前配置。
- 应用更改后,请务必测试相关服务是否正常工作。