未经授权的访问和黑客攻击服务器是严重的威胁,这就是为什么您应该实施防火墙作为网络安全技术的一部分。了解如何使用 Iptables 规则是降低 Linux 系统上这些风险的主要资产之一。本教程将指导您熟悉基本的防火墙概念,例如 iptables 显示规则和删除 iptables 规则 乌班图,帮助您运行简单的命令来实现这一目标。在讨论如何列出 iptables 规则或删除它们之前,我们先来谈谈 iptables 规则是什么以及为什么要使用它们?
什么是 iptables?
iptables 是一个命令行防火墙实用程序,可以通过以下方式允许或阻止流量 政策链。当尝试在您的系统上建立连接时,iptables 会在列表中查找与它们匹配的规则,为您提供网络安全方面的得力助手。如果找不到连接,则会采取默认操作。
iptables 几乎总是预装在任何 Linux发行版。您可以使用以下命令来更新或安装它:
sudo apt-get install iptables
为什么我们使用Iptables?
作为 Linux 命令行防火墙,iptables 允许系统管理员通过可配置的表规则处理传入和传出流量。 Iptables 使用一组带有链的表,其中包含一组内置或用户定义的规则。
正如上一节所述,iptables 在大多数 Linux 系统的网络安全中发挥着重要作用。本文的其余部分主要集中于描述 iptables 列出所有规则,包括如何显示 iptables 和删除 iptables 规则等概念。
更具体地说,本文将讨论一些基本的 iptables 任务,向您展示如何列出规则、删除数据包和字节计数器、删除 Iptables 规则、刷新链以及删除所有链并接受所有流量。
Ubuntu 中 Iptables 的完整指南
在查看 iptables show 规则之前,请注意,您必须使用安装了 iptables 命令的 Linux 服务器。除了这些要求之外,拥有 sudo 权限也很重要。使用防火墙时,请注意不要通过阻止 SSH 流量(默认端口:22)将自己锁定在服务器之外。如果您由于防火墙设置而失去访问权限,则可能需要通过带外控制台连接到它来修复它。
按规格列出的上市规则
您可以查看您的活动 iptables 规则 在表中 或作为 规则规范列表。几乎两种方法都以不同的格式提供相同的信息。要按规范列出活动 iptables 的所有规则,您需要使用以下命令运行 iptables 命令: -S选项:
sudo iptables -S
运行 iptables show Rules 命令后,您将看到如下输出:

列出特定链
如果您想将 show iptables 的输出限制为特定链,例如 INPUT、OUTPUT 或 传输控制协议,您可以直接在 -S 选项之后指定链名称。例如,以下 iptables show Rules 命令有助于在 TCP 链中指定:
sudo iptables -S TCP

正如我们之前提到的,还有另一种方法可以完成 iptables show 规则:将 iptables 规则视为规则表。让我们来看看这个技术。
以表格形式列出规则
使用命令在表中显示 iptables 规则可以帮助比较各种规则。您需要运行以下 show iptables 命令 -L选项 将所有这些活动规则输出到表中:
sudo iptables -L
该命令将显示按链排序的所有当前规则。有一种方法可以让你将输出限制到特定的链,例如INPUT、OUTPUT、TCP等;您需要在 -L 选项之后直接指定链名称。以下是限制 iptables show 规则到 INPUT 链的示例:
sudo iptables -L INPUT

上述输出的第一行显示了链名称(在本例中为 INPUT)及其默认策略(DROP)。下面一行包含表中每列的标题和链的规则。我们将通过它们来帮助您了解所有内容:
- 目标:如果数据包符合规则,目标将确定应该如何处理它。您可以接受、丢弃、记录数据包或将数据包发送到另一个链,以便与更多规则进行比较。
- prot:协议(例如 TCP、udp、ICMP 或全部)
- opt:表示IP选项(不常用)
- 源:显示流量的源 IP 地址/子网
- 目的地:显示流量的目的地IP地址/子网
没有标签的列建议规则的选项,它是前列中未指示的规则的任何部分。此信息可以是任何内容,从源端口和目标端口到数据包的连接状态。
如何显示数据包计数和聚合大小?
列出 iptables 规则时,我们可以显示与每个特定 iptables 规则匹配的数据包数量以及数据包的聚合大小(以字节为单位);这通常有助于理解哪些规则与数据包匹配。你必须使用 -L 和 -v 选项一起完成 这。
这是一个示例,我们将再次使用 INPUT 链,并带有 -v 选项:
sudo iptables -L INPUT -v

请注意,我们的列表现在还有两列,名为 包裹 和 字节。我们已经学习了完成 iptables show all 规则命令的各种方法,现在是时候了解如何重置数据包计数和聚合大小了。
如何重置数据包计数和聚合大小?
如果您希望规则的数据包和字节计数器清零或为零,则必须使用 - Z 选项。如果重新启动,它们也会重置,如果您想查看服务器是否正在接收与现有规则匹配的新流量,这会很有帮助。
您可以使用以下命令清除所有链和规则的计数器 -Z选项 就其本身而言:
sudo iptables -Z
要删除特定链中所有规则的计数器,必须使用 -Z 选项并指定链。例如,以下命令用于清除 INPUT 链计数器:
sudo iptables -Z INPUT
如果您想删除特定规则的计数器,则必须准确提及链名称和规则编号。例如,您可以执行以下命令将 INPUT 链中第一条规则的计数器清零:
sudo iptables -Z INPUT 1
除了了解 iptables 显示所有规则命令以及重置 iptables 数据包和字节计数器的方法之外,了解如何删除 iptables 规则也很有帮助。
另请阅读: 如何在 VPS 上安装 PPTP VPN 服务器
如何删除iptables规则?
您可以使用多个命令来删除 Iptables 规则,甚至删除链中的所有规则。在这里我们将讨论这些方法,
按规范删除规则
删除 iptables 规则的方法之一是通过规则规范来实现。它使您能够使用以下命令运行 iptables 命令 -D选项 和规则规范。如果您想使用此技术删除规则,可以利用规则列表的输出 iptables -S 来寻求帮助。
例如,要删除丢弃无效传入数据包的规则(-A INPUT -m conntrack –ctstate INVALID -j DROP),您可以执行以下命令行:
sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP
请注意,-A 选项用于指示创建时的规则位置,此处应将其排除。
按链和数字删除规则
您可以用来删除 iptables 规则的另一种方法是通过其链和行号。键入以下命令以选择规则的行号,以表格格式列出规则,然后添加 –行号选项:
sudo iptables -L --line-numbers

运行此命令后,所有 iptables 规则都有其行号,由 num 标头显示。
当您知道要删除哪条规则时,请记住其链号和行号。您必须使用带有链和规则编号的 iptables -D 命令。例如,如果要删除丢弃无效数据包的输入规则,您可以看到它是 INPUT 链的规则 3。所以运行这个命令:
sudo iptables -D INPUT 3
如何冲洗链条?
有一种方法可以让你删除一条链中的所有 Iptables 规则,我们称之为 冲洗链条。在这里,我们将介绍执行此操作的各种方法。在继续之前,请注意在使用默认丢弃或拒绝策略刷新链时,不要通过 SSH 被服务器锁定。因为如果这样做,您可能需要通过控制台连接到它来修复您的访问权限。
冲洗单链
要刷新特定链,或者换句话说,删除链中的所有规则,您可以使用 -F 或同等的 – 冲洗选项 以及所选链的名称。假设您要删除 INPUT 链中的所有规则;该怎么办?嗯,很简单,运行以下命令:
sudo iptables -F INPUT
冲洗所有链条
要删除所有链或刷新它们,您可以单独使用 -F 或等效的 –flush 选项:
sudo iptables -F
如何刷新所有规则、删除所有链并接受全部?
此时,我们将描述如何刷新所有防火墙规则、表和链并允许所有网络流量。请注意,此过程将有效禁用防火墙。因此,如果您想重新开始防火墙配置,则应仅遵循本部分。
您首先需要将每个内置链的默认策略设置为接受。我们这样做的主要原因是确保您不会被 SSH 锁定在服务器之外:
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
然后你需要刷新 nat 和 mangle 表,刷新所有链 (-F),并删除所有非默认链 (-X) 像这样:
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X
运行前面的命令后,防火墙将允许所有网络流量。如果您现在想列出您的规则,您会发现没有规则;仅保留三个默认链,例如 INPUT、FORWARD 和 OUTPUT 链。
如何在 Ubuntu 中设置 iptables?
与任何基本的防火墙行为一样,iptables 规则可以按每个链上列出的顺序读取,这意味着您必须按照正确的顺序设置规则。附加新规则后,您会将它们添加到规则列表的末尾。您可以通过使用以下命令插入新规则来将其添加到特定列表位置 iptables -I <索引> -命令。 这 <索引> 是您希望在此命令中插入规则的订单号。您可以使用以下命令来了解要输入哪个索引号:
sudo iptables -L --line-numbers
每条规则行开头的数字显示在链中的位置。要在特定的现有规则之上添加新规则,您必须使用该现有规则的索引号。例如,如果您想将新规则添加到链的顶部,则必须使用索引号为 1 的以下命令:
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
iptables 与firewalld 有何不同?
iptables 和firewalld 都是实用的工具,用于管理各种专门为数据包过滤(静态过滤)设计的Linux 系统上的防火墙。数据包过滤是一种防火墙策略,使用户能够通过管理传入和传出的信息包来控制对特定网络的访问。它们根据有关源和目标协议以及端口和 IP 地址的预设防火墙规则允许它们通过或拒绝它们。这些规则提供了非常有效的安全机制,使信息包过滤成为针对系统 LAN(局域网)外部路由的设备的强大防御。
请注意,firewalld 最初是作为处理 iptables 的软件引入的,以帮助用户更轻松地导航它。介绍完firewalld和iptables之后,我们来更详细地比较一下它们。
iptables 与firewalld:系统配置
Firewalld 和 iptables 使用不同的配置和默认存储设置。对于 iptables,每次更改都意味着清除所有旧规则并读取新规则,因此系统必须重新启动。然而,使用firewalld,规则不会被重新创建;相反,所做的差异和修改将应用于更改现有规则,以便您可以看到它们在运行时生效。
iptables 与firewalld:用户界面
Firewalld 使用图形用户界面 (GUI)。然而,iptables 使用命令行界面 (CLI),这对于某些人使用 iptables 访问 Linux 内核防火墙规则可能具有挑战性,这使得 firewalld 成为更直接的选择。最好考虑 iptables 的响应时间较短,因为您只使用短命令。除了所有这些之外,两者都有各自的用例,因此请选择您更喜欢使用的一个。
最后的想法:iptables 显示规则
Iptables 是专为 Linux 操作系统创建的高度灵活的防火墙实用程序。无论您是新来的 Linux 极客还是专业的系统管理员,都没关系; iptables 规则在某些方面可以对您有所帮助。本文主要介绍该防火墙实用程序的基本命令,包括 iptables showrules 和remove iptablesrules,旨在简要回顾 Linux 功能。此外,您还可以使用我们的 Linux VPS 托管解决方案 充分利用这个出色的操作系统的真正潜力。在 cloudzy,我们提供各种基于 KVM 的 Linux VPS 计划,适用于多种用例,例如 Web 托管、部署 Web 应用程序,甚至设置环境来开发、测试和自动化代码。
常问问题
如何按规范列出所有 Linux iptables 规则?
如果您想按规格或功能列出所有当前活动的 iptables 规则,可以通过 iptables 命令后跟 -S 标志。注意利用 须藤 本例中的关键字:
sudo iptables -S
如何删除iptables规则?
要删除特定链,这将删除链中的所有规则,您必须 使用 -F 或 –flush 选项和链的名称。 假设我们要删除 OUTPUT 链中的所有规则,该怎么办?好吧,你需要执行这个命令:
sudo iptables -F 输出
iptables 在 Ubuntu 中如何工作?
iptables 防火墙将网络流量与一组规则进行比较。 iptables 规则指定要匹配规则的数据包的特征以及数据包匹配时应采取的操作。当然,有很多选项可以设置哪些数据包匹配特定规则。
iptables规则立即生效吗?为什么?
是的,iptables规则立即生效;因为您的脚本将附加到 INPUT 和 OUTPUT 链,并且您的规则将添加到这些链的末尾。