简介
设置防火墙是确保任何现代操作系统安全的必要步骤。大多数Linux发行版都附带了一些不同的防火墙工具,您可以使用这些工具来配置防火墙。在本指南中,我们将介绍`iptable‘防火墙。
默认情况下,IPTABLes是大多数Linux发行版中包含的标准防火墙。它是内核级netfilter钩子的命令行界面,可以操作Linux网络堆栈。它的工作原理是将通过网络接口的每个数据包与一组规则进行匹配,以确定要执行的操作。
在本指南中,您将回顾iptabes的工作原理。有关更深入的方法,请阅读深入研究iptabes和NetFilter Architecture.
iptabLes工作原理
首先,让我们回顾一些术语并讨论iptabes是如何工作的。
IPTABLES防火墙通过将网络流量与一组规则 进行比较来运行。这些规则定义了网络数据包需要匹配的特征,以及匹配数据包应采取的操作。
有许多选项可以确定哪些数据包与特定规则匹配。您可以匹配数据包协议类型、源或目的地址或端口、正在使用的接口及其与以前数据包的关系等。
当定义的模式匹配时,发生的操作称为目标 。目标可以是数据包的最终策略决策,例如ACCEPT
或DROP
。它还可以将数据包移动到不同的链进行处理,或记录遇到的情况。有很多选择。
这些规则被组织成称为链 的组。链是按顺序检查数据包所依据的一组规则。当数据包与其中一个规则匹配时,它将执行相关操作并跳过链中的其余规则。
用户可以根据需要创建链。缺省情况下定义了三条链。它们是:
- 输入 :此链处理发往您的服务器的所有数据包。
- 输出 :该链包含您的服务器创建的流量规则。
- 转发 :该链用于处理不是在您的服务器上创建的其他服务器的流量。此链用于配置您的服务器以将请求路由到其他计算机。
每条链可以包含零条或多条规则,并且有一个默认的策略 。该策略确定当数据包丢弃链中的所有规则并且不匹配任何规则时发生的情况。如果没有匹配的规则,您可以丢弃或接受该数据包。
Iptable还可以跟踪连接。这意味着您可以创建规则,根据信息包与以前信息包的关系定义信息包的处理方式。该功能是状态跟踪
、连接跟踪
或配置状态机
。
IPv4与IPv6
Linux内核中包含的NetFilter防火墙使IPv4和IPv6流量完全分开。用于操作包含防火墙规则集的表的iptable工具也是不同的。如果您的服务器上启用了IPv6,则必须配置这两个表来处理服务器上的流量。
<$>[注] 注意: ** Nftables* 是Iptables的后继产品,它更紧密地集成了IPv4和IPv6的处理。可以使用iptables-translate命令将Iptables规则迁移到Nftables。 <$>
常规的ipables
命令用于操作包含管理IPv4流量的规则的表。对于IPv6流量,使用名为ip6ables
的配套命令。您使用ipables
设置的任何规则都只会影响使用IPv4寻址的数据包,但这些命令之间的语法是相同的。ipables
命令将制定适用于IPv4流量的规则,ip6ables
命令将制定适用于IPv6流量的规则。不要忘了使用您的服务器的IPv6地址来制定`ip6表‘规则。
要记住的事情
现在您已经了解了iptabes如何定向通过其接口到达的信息包--将信息包定向到适当的链,根据每个规则进行检查,直到有一个匹配,如果没有找到匹配项,则发出链的默认策略--您可以开始创建规则了。
首先,如果您实施默认丢弃策略,则需要确保您有保持当前连接活动的规则。如果您通过SSH连接到服务器,这一点尤其重要。如果意外实施了断开当前连接的规则或策略,则可能需要使用基于浏览器的故障恢复控制台登录到服务器。
另一件需要记住的事情是,每条链中规则的顺序很重要。如果数据包要匹配更具体的规则,则它不能遇到与其匹配的更一般规则。
正因为如此,接近链顶端的规则应该比位于底部的规则具有更高级别的专用性。您应该首先匹配特定案例,然后提供更通用的规则以匹配更广泛的模式。如果一个包穿过了整个链条(如果它不符合任何规则),它将遵循最通用的规则,即默认策略。
因此,链的默认策略强烈规定了链中将包括的规则类型。默认策略为ACCEPT
的链将包含显式丢包的规则。默认为DROP
的链会包含应该明确接受的数据包的例外。
总结
此时,您已经准备好实现您自己的防火墙了。对于这一点,你应该阅读如何在Ubuntu 22.04.上使用Nfables设置防火墙或者,对于更高层次的方法,如何在Ubuntu 22.04.上使用UFW设置防火墙如果您希望将防火墙作为托管服务层运行,您也可以尝试DigitalOcean的云Firewalls.