介绍
设置防火墙是保护任何现代操作系统的重要步骤。大多数Linux发行版都配备了几种不同的防火墙工具,您可以使用这些工具来配置防火墙。在本指南中,我们将介绍iptables
防火墙。
Iptables是大多数Linux发行版默认包含的标准防火墙。它是一个命令行界面,用于操纵Linux网络堆栈的内核级netfilter钩子。它通过将通过网络接口的每个数据包与一组规则进行匹配来决定要执行的操作。
在本指南中,您将了解Iptables的工作原理。如需更深入的了解,您可以阅读深入探讨Iptables和Netfilter架构。
Iptables的工作原理
首先,让我们回顾一些术语并讨论iptables的工作原理。
iptables防火墙通过将网络流量与一组规则进行比较来运行。这些规则定义了网络数据包需要具备的特征以及匹配数据包时应采取的操作。
有许多选项可以确定哪些数据包与特定规则匹配。您可以匹配数据包协议类型、源或目的地址或端口、正在使用的接口、与先前数据包的关系等等。
当定义的模式匹配时,发生的动作称为目标。目标可以是数据包的最终策略决定,例如接受
或丢弃
。它还可以将数据包移动到另一个链以进行处理,或记录该事件。有许多选择。
这些规则被组织成称为链的群组。链是一组数据包按顺序检查的规则。当数据包与其中一条规则匹配时,它执行相关的操作并跳过链中的其余规则。
A user can create chains as needed. There are three chains defined by default. They are:
- 输入:此链处理发送到您服务器的所有数据包。
- 输出:此链包含由您服务器创建的流量的规则。
- 转发:此链用于处理发送到不在您服务器上创建的其他服务器的流量。这是一种配置服务器以将请求路由到其他机器的方法。
每个链可以包含零个或多个规则,并具有默认的策略。当数据包通过链中的所有规则并且不匹配任何规则时,策略决定会发生什么。您可以丢弃数据包,或者如果没有规则匹配,则接受数据包。
iptables 也可以跟踪连接。这意味着您可以创建规则,根据数据包与先前数据包的关系来定义数据包的处理方式。这种能力称为“状态跟踪”、“连接跟踪”或配置“状态机”。
IPv4 与 IPv6
包含在 Linux 内核中的 netfilter 防火墙将 IPv4 和 IPv6 流量完全分开。用于操作包含防火墙规则集的表的 Iptables 工具也是不同的。如果在服务器上启用了 IPv6,您将需要配置两个表来处理服务器上的流量。
注意: Nftables,作为 Iptables 的后继者,更紧密地集成了对 IPv4 和 IPv6 的处理。可以使用 iptables-translate 命令将 Iptables 规则迁移到 Nftables。
常规iptables
命令用于操作包含管理IPv4流量规则的表。对于IPv6流量,使用一个名为ip6tables
的配套命令。您使用iptables
设置的任何规则都只会影响使用IPv4寻址的数据包,但这些命令之间的语法是相同的。iptables
命令将创建适用于IPv4流量的规则,而ip6tables
命令将创建适用于IPv6流量的规则。不要忘记使用您服务器的IPv6地址来制定ip6tables
规则。
需要牢记的事情
现在您已经知道iptables如何引导通过其接口的数据包 – 将数据包引导到适当的链,检查它是否与每个规则匹配,如果找不到匹配,则发出链的默认策略 – 您可以开始创建规则。
首先,您需要确保如果实施默认拒绝策略,则有规则保持当前连接处于活动状态。如果您通过SSH连接到服务器,则这一点尤为重要。如果您意外地实施了一个规则或策略以断开当前连接,则可能需要使用基于浏览器的恢复控制台登录到服务器。
另一点需要牢记的是,每个链中规则的顺序很重要。如果数据包打算匹配更具体的规则,则不能遇到更一般的规则。
因此,链顶部附近的规则应比底部的规则具有更高的特异性级别。您应首先匹配特定情况,然后提供更一般的规则以匹配更广泛的模式。如果数据包通过整个链(如果不匹配任何规则),它将遵循最通用的规则,即默认策略。
因此,链的默认策略强烈决定了将包含在链中的规则类型。默认策略为ACCEPT
的链将包含明确丢弃数据包的规则。默认为DROP
的链将包含应明确接受的数据包的异常。
结论
在这一点上,您已经准备好实施自己的防火墙。为此,您应阅读如何在Ubuntu 22.04上使用Nftables设置防火墙。或者,对于更高层次的方法,如何在Ubuntu 22.04上使用UFW设置防火墙。如果您希望将防火墙作为托管服务层运行,还可以尝试 DigitalOcean的云防火墙。
Source:
https://www.digitalocean.com/community/tutorials/how-the-iptables-firewall-works