> 网络管理 > firewall-cmd

firewall-cmd: Firewalld 防火墙管理

firewall-cmd 是 firewalld 守护进程的命令行客户端。它允许您动态管理系统的防火墙规则。您可以执行各种防火墙操作,例如打开端口、添加服务、配置网络区域,并且可以区分运行时规则和永久规则进行应用。

概述

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>` 命令记录当前配置。
  • 应用更改后,请务必测试相关服务是否正常工作。


相同类别命令