如何检查 Linux 中网络数据包过滤器是否激活

LinuxLinuxBeginner
立即练习

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

简介

在这个实验中,你将学习如何检查 Linux 系统中网络数据包过滤器是否处于激活状态。你将探索使用 iptables 列出防火墙规则的传统方法,并通过列出规则集来研究较新的 nftables 框架。最后,你将通过检查 /proc/sys/net 目录中的相关文件来验证过滤器设置,从而全面了解如何确定 Linux 系统上网络数据包过滤的状态。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") subgraph Lab Skills linux/cat -.-> lab-558739{{"如何检查 Linux 中网络数据包过滤器是否激活"}} linux/cd -.-> lab-558739{{"如何检查 Linux 中网络数据包过滤器是否激活"}} linux/sudo -.-> lab-558739{{"如何检查 Linux 中网络数据包过滤器是否激活"}} linux/ifconfig -.-> lab-558739{{"如何检查 Linux 中网络数据包过滤器是否激活"}} linux/netstat -.-> lab-558739{{"如何检查 Linux 中网络数据包过滤器是否激活"}} linux/ip -.-> lab-558739{{"如何检查 Linux 中网络数据包过滤器是否激活"}} end

使用 iptables -L 列出 iptables 规则

在这一步中,你将学习如何使用 iptables 命令查看当前的防火墙规则。iptables 是一个传统的命令行工具,用于配置 Linux 内核防火墙。

防火墙对于网络安全至关重要。它们根据一组规则控制传入和传出的网络流量。这些规则决定是允许还是阻止特定的连接。

要列出当前的 iptables 规则,你将使用 -L 选项。此选项告诉 iptables 列出指定链中的规则。

如果你还没有打开终端,请打开它。输入以下命令并按回车键:

sudo iptables -L

你需要使用 sudo,因为查看防火墙规则需要管理员权限。

你将看到类似以下的输出:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

此输出显示了三个默认链的规则:INPUTFORWARDOUTPUT

  • INPUT:控制发往本地机器的流量。
  • FORWARD:控制通过该机器的流量(用于路由)。
  • OUTPUT:控制从本地机器发起的流量。

policy ACCEPT 表示默认情况下,如果没有匹配的特定规则,这些链中的流量将被允许。

如果配置了特定规则,它们将列在每个链下,显示诸如目标(例如,ACCEPT、DROP)、协议(例如,tcp、udp)、源和目标 IP 地址以及端口等详细信息。

目前,默认配置很简单,但你已经成功使用 iptables 查看了当前规则。

点击 继续 进入下一步。

使用 nft list ruleset 检查 nftables

在这一步中,你将探索 nftables,它是 iptables 的继任者。虽然 iptables 仍然被广泛使用,但 nftables 为数据包过滤和网络地址转换(NAT)提供了更灵活、高效的框架。

nftables 使用 nft 命令行工具来管理规则集。规则集是由表、链和规则组成的集合,用于定义如何处理网络流量。

要查看当前的 nftables 规则集,你将使用 list ruleset 命令。

在终端中输入以下命令并按回车键:

sudo nft list ruleset

同样,需要使用 sudo,因为查看防火墙规则需要管理员权限。

你可能会看到类似以下的输出,如果没有配置 nftables 规则,输出可能为空:

table ip filter {
	chain INPUT {
		type filter hook input priority 0; policy accept;
	}

	chain FORWARD {
		type filter hook forward priority 0; policy accept;
	}

	chain OUTPUT {
		type filter hook output priority 0; policy accept;
	}
}

此输出展示了一个基本的 nftables 规则集,其中有一个名为 filter 的表,适用于 ip 地址族。在这个表中,有三个链:INPUTFORWARDOUTPUT,与 iptables 类似。

  • table ip filter:为 IPv4 流量定义一个名为 filter 的表。
  • chain INPUT { ... }:定义输入链。
  • type filter hook input priority 0;:指定这是一个过滤链,挂钩到输入网络路径,优先级为 0。
  • policy accept;:将此链的默认策略设置为接受流量。

如果定义了特定规则,它们将列在链块内。

比较 iptables -Lnft list ruleset 的输出,可以让你了解系统上哪个防火墙系统正在积极管理规则,或者是否两者都存在。在现代系统中,nftables 正逐渐成为默认选择。

你现在已经成功使用 nft 查看了当前的 nftables 规则集。

点击 继续 进入下一步。

验证 /proc/sys/net 中的过滤设置

在这一步中,你将通过查看 /proc/sys/net 目录下的文件,探索一些内核级别的网络过滤设置。/proc 文件系统是一个虚拟文件系统,它提供有关进程和其他系统信息。/proc/sys 目录包含一些文件,允许你在运行时查看和修改内核参数。

具体来说,我们将查看与网络过滤和转发相关的设置。

使用 cd 命令导航到相关目录:

cd /proc/sys/net/ipv4/conf/all/

/proc/sys/net/ipv4/conf/all/ 目录包含适用于所有网络接口的配置文件。

现在,让我们查看一个与转发相关的文件内容。使用 cat 命令显示 forwarding 文件的内容:

cat forwarding

输出可能是 01

0
  • 0:表示 IP 转发已禁用。这意味着系统不会在不同的网络接口之间转发数据包。
  • 1:表示 IP 转发已启用。这对于路由器或充当网关的系统是必需的。

接下来,让我们查看一个与过滤带有源路由选项的传入数据包相关的设置。这个选项有时可能会被恶意利用。查看 accept_source_route 文件的内容:

cat accept_source_route

输出可能是 0

0
  • 0:表示系统将忽略带有源路由选项的数据包。这是一种常见的安全措施。
  • 1:表示系统将接受带有源路由选项的数据包。

/proc/sys/net 中的这些文件提供了内核如何配置以处理网络流量的底层视图。虽然 iptablesnftables 管理过滤规则,但这些内核参数控制着诸如转发以及如何处理某些数据包选项等基本网络行为。

你现在已经成功使用 /proc 文件系统检查了内核网络过滤设置。

点击 继续 完成实验。

总结

在本次实验中,你学习了如何通过检查常见防火墙工具的配置,来判断 Linux 系统中网络数据包过滤器是否处于激活状态。你首先使用 iptables -L 命令列出了使用传统 iptables 工具配置的当前规则,了解了默认链(INPUT、FORWARD、OUTPUT)及其策略。

接着,你探索了 nftables——iptables 的现代替代方案,通过使用 nft list ruleset 命令查看其配置。最后,你学习了如何通过检查 /proc/sys/net 目录下的相关参数,在底层验证过滤设置,该目录展示了内核网络配置。