Linux firewall-cmd 命令示例

命令行工具 firewall-cmd 是 firewalld 应用程序的一部分,默认情况下安装。
它可用于进行永久性和非永久性运行时更改。

安装 firewalld

默认情况下,firewalld 包含在“核心”rpm 组中,但如果未安装,我们始终可以使用 yum 安装它。

# yum install -y firewalld

启用 firewalld 在启动时启动:

# systemctl enable firewalld

现在重新启动 firewalld 服务。

# systemctl restart firewalld

firewall-cmd 示例

1. 列出所有区域

使用以下命令列出所有区域的信息。
仅显示部分输出。

# firewall-cmd --list-all-zones
work
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 
drop
  target: DROP
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 
.....

Public 是默认区域集,如果我们不更改它。
要检查当前设置的默认区域,请使用以下命令:

# firewall-cmd --get-default-zone
public

2. 列出系统上允许的服务和端口

要显示系统上当前允许的服务,请使用以下命令。

# firewall-cmd --list-services
dhcpv6-client ssh

要列出系统上打开的端口:

# firewall-cmd --list-ports

当我们刚刚启用 firewalld 时,我们通常不会在此处看到任何端口列出。

3. 启用服务的所有传入端口

我们还可以使用 -add-service 选项打开服务所需的端口。
允许 HTTP 客户端访问公共区域:

# firewall-cmd --zone=public --add-service=http
success

列出公共区域允许的服务:

# firewall-cmd --zone=work --list-services
dhcpv6-client http ssh

使用此命令只会更改运行时配置,不会更新配置文件。
以下命令序列显示,在重新启动 firewalld 服务时,在运行时配置模式下所做的配置更改会丢失:

# systemctl restart firewalld
# firewall-cmd --zone=work --list-services
dhcpv6-client ssh

要永久更改,请使用 -permanent 选项。
例子:

# firewall-cmd --permanent --zone=public --add-service=http
success

在永久配置模式下所做的更改不会立即实施。
例子:

# firewall-cmd --zone=work --list-services
dhcpv6-client ssh

但是,在永久配置中所做的更改会写入配置文件。
重新启动 firewalld 服务读取配置文件并实施更改。

例子:

# systemctl restart firewalld
# firewall-cmd --zone=work --list-services
dhcpv6-client http ssh

4. 允许传入端口上的流量

下面的命令将打开端口 2222 立即生效,但不会在重新启动后持续存在:

# firewall-cmd --add-port=[YOUR PORT]/tcp

例如,要打开 TCP 端口 2222 :

# firewall-cmd --add-port=2222/tcp

以下命令将创建一个持久性规则,但不会立即生效:

# firewall-cmd --permanent --add-port=[YOUR PORT]/tcp

例如,要打开 TCP 端口 2222 :

# firewall-cmd --permanent --add-port=2222/tcp

要列出打开的端口,请使用命令:

# firewall-cmd –-list-ports
2222/tcp

5.启动和停止firewalld服务

要启动/停止/状态 firewalld 服务,请使用以下命令:

# systemctl start firewalld.service
# systemctl stop firewalld.service

要检查 firewalld 服务的状态:

# systemctl status firewalld.service
更多: zhilu jiaocheng

firewall-cmd 命令的可用选项

# firewall-cmd --help
Usage: firewall-cmd [OPTIONS...]
General Options
  -h, --help           Prints a short help text and exists
  -V, --version        Print the version string of firewalld
  -q, --quiet          Do not print status messages
Status Options
  --state                  Return and print firewalld state
  --reload                 Reload firewall and keep state information
  --complete-reload        Reload firewall and lose state information
  --runtime-to-permanent   Create permanent from runtime configuration

firewall-cmd 命令提供选项类别,例如 General、Status、Permanent、Zone、IcmpType、Service、Adapt 和 Query Zones、Direct、Lockdown、Lockdown Whitelist 和 Panic。
有关详细信息,请参阅 firewall-cmd 手册页。

日期:2020-09-17 00:12:57 来源:oir作者:oir