介紹
設置防火牆是保護任何現代操作系統的必要步驟。大多數Linux發行版都提供了幾個不同的防火牆工具,您可以使用這些工具來配置防火牆。在本指南中,我們將介紹iptables
防火牆。
Iptables是大多數Linux發行版中默認包含的標準防火牆。它是一個命令行界面,用於操作Linux內核級netfilter鉤子,可以操作Linux網絡堆棧。它的工作方式是將每個通過網絡接口的封包與一組規則進行匹配,以決定該做什麼。
在本指南中,您將了解Iptables的工作原理。要進一步深入了解,您可以閱讀深入解析Iptables和Netfilter架構。
Iptables的工作原理
首先,讓我們回顧一些術語並討論iptables的工作原理。
iptables防火牆通過將網絡流量與一組規則進行比較來運作。這些規則定義了網絡封包需要具備的特徵以進行匹配,以及應對匹配封包採取的操作。
有許多選項可用來建立哪些封包符合特定的規則。您可以匹配封包的協議類型、來源或目的地地址或端口、使用的介面、與先前封包的關係等。
當定義的模式匹配時,發生的動作稱為目標。目標可以是對封包的最終策略決定,例如ACCEPT
或DROP
。它也可以將封包移動到不同的鏈進行處理,或者記錄該次遭遇。選項很多。
這些規則組織成稱為鏈的群組。鏈是一組對封包逐個檢查的規則。當封包符合其中一條規則時,它執行相應的動作並跳過鏈中剩餘的規則。
A user can create chains as needed. There are three chains defined by default. They are:
- INPUT:此鏈處理所有發送到您的伺服器的封包。
- OUTPUT:此鏈包含由您的伺服器創建的流量的規則。
- FORWARD:此鏈用於處理發送到未在您的伺服器上創建的其他伺服器的流量。此鏈是配置您的伺服器將請求路由到其他機器的一種方式。
每個鏈可以包含零個或多個規則,並具有默認的策略。當封包通過鏈中的所有規則並且不匹配任何規則時,策略決定發生的情況。您可以捨棄封包,或者如果沒有任何規則匹配,則接受封包。
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