如何检查 Linux 中网络防火墙区域是否处于活动状态

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何使用 firewalld 检查 Linux 中的网络防火墙区域是否处于活动状态。我们将首先使用 firewall-cmd --get-active-zones 命令来识别当前活动的区域以及与之关联的网络接口。

接下来,我们将探索位于 /etc/firewalld 目录中的 firewalld 配置文件,以了解区域规则的定义位置。最后,我们将检查底层的 iptables 规则,以了解 firewalld 如何将其区域配置转换为实际的数据包过滤规则。这个实验将为你提供关于 firewalld 如何在 Linux 系统上管理网络安全的基础理解。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") subgraph Lab Skills linux/ls -.-> lab-558734{{"如何检查 Linux 中网络防火墙区域是否处于活动状态"}} linux/cat -.-> lab-558734{{"如何检查 Linux 中网络防火墙区域是否处于活动状态"}} linux/service -.-> lab-558734{{"如何检查 Linux 中网络防火墙区域是否处于活动状态"}} linux/ifconfig -.-> lab-558734{{"如何检查 Linux 中网络防火墙区域是否处于活动状态"}} linux/netstat -.-> lab-558734{{"如何检查 Linux 中网络防火墙区域是否处于活动状态"}} linux/ip -.-> lab-558734{{"如何检查 Linux 中网络防火墙区域是否处于活动状态"}} end

使用 firewall-cmd --get-active-zones 检查区域

在这一步中,我们将开始探索 firewalld,它是 Linux 中的动态防火墙管理工具。防火墙对于网络安全至关重要,它可以控制哪些流量允许进出你的系统。

firewalld 使用“区域(zones)”的概念来管理防火墙规则。区域定义了网络连接的信任级别。不同的区域有不同的默认规则。例如,“公共(public)”区域的规则可能比“可信(trusted)”区域的规则更严格。

让我们来检查一下你的系统上当前哪些区域处于活动状态。我们将使用带有 --get-active-zones 选项的 firewall-cmd 命令。

如果终端尚未打开,请打开它。记住,你可以在桌面左侧找到 Xfce 终端 图标。

输入以下命令并按回车键:

firewall-cmd --get-active-zones

你应该会看到类似如下的输出:

public
  interfaces: eth0

这个输出告诉我们,public 区域当前处于活动状态,并且它与 eth0 网络接口相关联。eth0 接口是你的虚拟机连接到网络的方式。

了解活动区域是使用 firewalld 管理防火墙的第一步。在接下来的步骤中,我们将查看配置文件以及规则是如何应用的。

点击 继续 以继续操作。

使用 cat /etc/firewalld 验证 firewalld 配置

在上一步中,我们了解了哪些 firewalld 区域处于活动状态。现在,让我们来看看 firewalld 存储其配置文件的位置。这些文件定义了每个区域的规则。

firewalld 的主要配置目录是 /etc/firewalld。在这个目录中,你会找到用于存放区域、服务和其他配置元素的子目录。

我们可以使用 cat 命令来查看文件内容。若要查看 /etc/firewalld 目录中的内容,我们可以尝试对其使用 cat 命令,但 cat 是用于文件而非目录的。相反,让我们使用 ls 命令列出该目录的内容。

输入以下命令并按回车键:

ls /etc/firewalld/

你应该会看到一个目录和文件列表,类似如下内容:

icmptypes  lockdown-whitelist.xml  modules  panic-iface.conf  services  zones

这展示了 firewalld 配置的结构。zones 目录尤为重要,因为它包含了每个区域的配置文件(如 public.xmltrusted.xml 等)。

让我们查看 zones 目录内部。输入:

ls /etc/firewalld/zones/

你会看到一个 XML 文件列表,每个预定义区域对应一个文件:

block.xml  dmz.xml  drop.xml  external.xml  home.xml  internal.xml  public.xml  trusted.xml  work.xml

这些 XML 文件包含了每个区域的具体规则。例如,public.xml 定义了我们在上一步中看到的处于活动状态的 public 区域的规则。

在这个实验中,我们不会深入探讨 XML 文件的细节,但了解配置的存储位置是理解 firewalld 的关键部分。

点击 继续 进入下一步。

使用 iptables -L 检查 iptables 规则

虽然 firewalld 是许多 Linux 发行版中管理防火墙的现代方式,但它通常是通过配置底层的 netfilter 框架来实现的,而 netfilter 传统上是由 iptables 命令管理的。

即使使用 firewalld,你仍然可以使用 iptables 命令检查 firewalldnetfilter 中创建的规则。这有助于你理解 firewalld 如何将其基于区域的规则转换为底层的 iptables 规则。

要列出当前的 iptables 规则,我们将使用带有 -L 选项的 iptables 命令。由于查看防火墙规则需要管理员权限,我们需要使用 sudo

输入以下命令并按回车键:

sudo iptables -L

你会看到大量的输出!这个输出显示了不同的 iptables 链(如 INPUTFORWARDOUTPUT)以及其中的规则。firewalld 会创建自己的链,通常以 FWDIN_OUT_ 等为前缀,以便根据区域和服务管理流量。

以下是你可能看到的输出片段(具体输出会有所不同):

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
INPUT_direct  all  --  anywhere             anywhere
INPUT_ZONES_SOURCE  all  --  anywhere             anywhere
INPUT_ZONES  all  --  anywhere             anywhere
...
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
...
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
...
Chain INPUT_ZONES (1 references)
target     prot opt source               destination
FWD_public  all  --  anywhere             anywhere             [goto] /* zone public */
...

现在不必担心理解输出的每一行。关键是要知道 firewalld 在幕后积极管理这些 iptables 规则。iptables -L 命令让你了解内核正在执行的实际数据包过滤规则。

这一步结束了我们对 firewalld 及其与 iptables 关系的简要介绍。你已经学习了如何检查活动区域、查找配置文件以及检查底层的 iptables 规则。

点击 继续 完成实验。

总结

在这个实验中,我们开始探索 firewalld,以检查 Linux 中活动的网络防火墙区域。我们了解到 firewalld 使用区域来管理防火墙规则,并且可以使用 firewall-cmd --get-active-zones 命令来确定哪些区域当前处于活动状态以及它们与哪些网络接口相关联。我们看到了一个示例,其中 public 区域在 eth0 接口上处于活动状态。

接着,我们开始查看 firewalld 的配置文件,注意到其主要配置目录是 /etc/firewalld。我们尝试查看该目录的内容,明白了 cat 命令用于文件而非目录,而列出目录内容是查看区域、服务和其他元素的配置文件的合适方法。