网站搜索

在 Linux 中配置和管理防火墙的有用“FirewallD”规则


Firewalld提供了一种在Linux中配置动态防火墙规则的方法,可以立即应用,无需重新启动防火墙,并且它支持D-BUS和区域概念,使配置变得容易。

Firewalld 取代了旧版 Fedora 的防火墙(Fedora 18 起)机制,RHEL/CentOS 7 等最新发行版依赖这个新机制。引入新防火墙系统的最大动机之一是旧防火墙在每次更改后都需要重新启动,从而破坏所有活动连接。如上所述,最新的firewalld支持动态区域,这对于通过命令行或使用GUI方法为您的办公室或家庭网络配置不同的区域和规则集非常有用。

最初,firewalld 概念看起来非常难以配置,但服务和区域通过将两者结合在一起使配置变得更容易,如本文所述。

在我们之前的文章中,我们已经了解了如何使用firewalld 及其区域,现在在本文中,我们将看到一些有用的firewalld 规则,用于使用命令行方式配置当前的Linux 系统。

  1. RHEL/CentOS 7 中的 Firewalld 配置

本文涵盖的所有示例都在 CentOS 7 发行版上进行了实际测试,并且也适用于 RHEL 和 Fedora 发行版。

在实施firewalld规则之前,请确保首先检查firewalld服务是否已启用并正在运行。

systemctl status firewalld

上图显示firewalld处于活动状态并正在运行。现在是时候检查所有活动区域和活动服务了。

firewall-cmd --get-active-zones
firewall-cmd --get-services

如果您不熟悉命令行,您还可以从 GUI 管理firewalld,为此您需要在系统上安装 GUI 软件包,如果没有使用以下命令安装它。

yum install firewalld firewall-config

如上所述,本文是专门为命令行爱好者编写的,我们将要介绍的所有示例都仅基于命令行,没有 GUI 方式..抱歉......

在进一步操作之前,首先确保确认要在哪个公共区域上配置 Linux 防火墙,并使用以下命令列出公共区域的所有活动服务、端口和丰富规则。

firewall-cmd --zone=public --list-all

上图中,还没有添加任何活动规则,让我们在本文的剩余部分看看如何添加、删除和修改规则……。

1. 在Firewalld中添加和删除端口

要打开公共区域的任何端口,请使用以下命令。例如,以下命令将为公共区域打开端口 80。

firewall-cmd --permanent --zone=public --add-port=80/tcp

同样,要删除添加的端口,只需将“–remove”选项与firewalld命令一起使用,如下所示。

firewall-cmd --zone=public --remove-port=80/tcp

添加或删除特定端口后,请务必使用“–list-ports”选项确认端口是否已添加或删除。

firewall-cmd --zone=public --list-ports

2. 在Firewalld中添加和删除服务

默认情况下,firewalld 带有预定义的服务,如果您想添加特定服务的列表,您需要创建一个新的 xml 文件,并将所有服务包含在该文件中,否则您也可以通过运行以下命令来手动定义或删除每个服务命令。

例如,以下命令将帮助您添加或删除特定服务,就像我们在本例中为 FTP 所做的那样。

firewall-cmd --zone=public --add-service=ftp
firewall-cmd --zone=public --remove-service=ftp
firewall-cmd --zone=public --list-services

3. 阻止传入和传出数据包(紧急模式)

如果您希望阻止任何传入或传出连接,则需要使用“panic-on”模式来阻止此类请求。例如,以下规则将删除系统上任何现有的已建立连接。

firewall-cmd --panic-on

启用紧急模式后,尝试 ping 任何域(例如 google.com)并使用“–query-panic”检查紧急模式是否ON >' 选项如下所列。

ping google.com -c 1
firewall-cmd --query-panic

您是否在上图中看到了恐慌查询显示“未知主机 google.com”。现在尝试禁用紧急模式,然后再次 ping 并检查。

firewall-cmd --query-panic
firewall-cmd --panic-off
ping google.com -c 1

这次,将会有来自 google.com 的 ping 请求。