在 Linux 中配置和管理防火墙的有用的“FirewallD”规则
Firewalld提供了一种在 Linux 中配置动态防火墙规则的方法,该规则可以立即应用,而无需重新启动防火墙,并且它还支持 D-BUS 和区域概念,从而简化了配置。
Firewalld取代了旧的 Fedora 防火墙(Fedora 18及以上版本)机制,RHEL / CentOS 7和其他最新发行版都依赖于这种新机制。引入新防火墙系统的最大动机之一是旧防火墙在每次更改后都需要重新启动,从而中断所有活动连接。如上所述,最新的 Firewalld 支持动态区域,这在通过命令行或使用 GUI 方法为您的办公室或家庭网络配置不同的区域和规则集时很有用。
最初,firewalld 概念看起来很难配置,但正如本文所述,通过结合服务和区域可以使配置变得更容易。
在我们之前的文章中,我们已经了解了如何使用 Firewalld 及其区域,现在,在本文中,我们将看到一些有用的 Firewalld 规则,以便使用命令行方式配置您当前的 Linux 系统。
本文介绍的所有示例均在CentOS 7发行版上经过实际测试,并且也可在 RHEL 和 Fedora 发行版上运行。
在实施firewalld规则之前,请务必先检查firewalld服务是否已启用并正在运行。
# systemctl status firewalld
上图显示,firewalld 已启动并正在运行。现在该检查所有活动区域和活动服务了。
# firewall-cmd --get-active-zones # firewall-cmd --get-services
如果您不熟悉命令行,您也可以从 GUI 管理防火墙,为此您需要在系统上安装 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
类似地,要删除添加的端口,只需使用firewalld命令中的“ -remove ”选项,如下所示。
# 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 ”选项检查恐慌模式是否开启,如下所示。
# 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 请求。