不使用防火牆,您的網絡流量將沒有規則或限制,這將導致許多負面後果。Linux系統配備了一個默認的防火牆配置工具,即Uncomplicated Firewall(UFW)。但是,如何設置UFW防火牆呢?坐下來,放輕鬆,這個教程會為您提供幫助!
在這個教程中,您將學習如何配置UFW並在Linux系統上設置防火牆,以保護您的網絡並防範惡意行為。
準備好了嗎?繼續閱讀開始吧!
先決條件
本教程將進行實際演示。如果您想跟隨進行,請確保您具有以下內容:
- 一台Ubuntu機器 – 本教程使用Ubuntu 20.04 LTS,但其他Linux發行版也適用。
- Root權限訪問您的機器。
安裝UFW並啟用IPv6連接
儘管UFW已隨您的Ubuntu系統打包,但UFW不是默認安裝的。首先使用apt
包管理器安裝UFW,並配置它允許IPv6上的連接。
1. 打開終端機,並執行下面的apt update
命令以更新您的本地套件索引。在更新期間接受所有提示(-y
)以減少使用者介入。

2. 接下來,在安裝期間接受所有提示(-y
)的情況下,執行以下命令來安裝UFW(install uwf
)到您的系統中。

3. 用您喜歡的文本編輯器打開UFW配置文件(/etc/default/ufw)。UFW支持IPv6,但您需要確保防火牆配置為接受IPv6連接。
如果您僅啟用了IPv4,那麼您仍然暴露於IPv6攻擊。
4. 捲動到IPV6變量並將值設置為yes,如下所示,然後保存更改並退出編輯器。

5. 最後,執行以下命令來禁用並重新啟用UFW。該命令重新啟動UFW服務,以便更改生效。
命令完成後,您的防火牆現在可以寫入IPv4和IPv6防火牆規則集。
配置防火牆規則的默認策略
如果您剛開始使用UFW,建議為您的規則設置默認策略。默認策略適用於尚未定義任何特定規則的鏈。
設置UFW以拒絕所有傳入連接並允許所有傳出連接。因此,試圖從外界到達您的機器的任何人都會被拒絕,而您仍然可以自由連接到任何網站或服務器。
執行以下命令以禁止默認情況下的所有入站連接:ufw

現在執行以下命令以默認情況下允許所有出站連接。

在UFW防火牆上允許SSH連接
您剛剛在UFW防火牆上設置了默認策略,拒絕所有入站流量,“允許全部-拒絕全部”規則對於普通用戶來說是一個不錯的設置。但是,如果您正在運行服務器呢?您需要允許特定的流量進出。在UFW防火牆上允許SSH連接將解決允許特定流量進出的問題。
您將設置一個允許在端口22上進行入站SSH連接的SSH服務器。但為什麼是端口22而不是其他端口?在類Unix系統上,SSH守護進程默認監聽端口22,因此使用默認的SSH端口是一個好習慣,可以讓您的生活變得輕鬆一點。
1. 執行以下命令安裝您系統上的OpenSSH服務器(install openssh-server
)並啟動一個OpenSSH服務器(start ssh
)。
2. 現在執行以下命令以允許入站SSH連接。不指定端口22就足夠了,因為UFW知道SSH使用的端口。

/etc/services 文件包含系統上所有可用服務的列表。在您的文本編輯器中打開該文件,滾動到 ssh,查看端口號(22)是否作為服務描述的一部分,如下所示。

但也許您更喜歡指定端口號(22
)來允許 SSH。如果是這樣,請運行以下命令。
3. 現在運行以下命令啟用 UFW。
在確認提示中輸入 Y,如下所示,然後按 Enter 繼續運行命令。UFW 現在將在您的系統上過濾封包。

4. 最後,運行以下命令之一檢查您的 UFW 防火牆的狀態。
如果您使用 verbose
選項運行該命令,您將看到如下類似的輸出:
- 狀態:active – 表示防火牆當前正在運行。
- 日誌:on (低) – 表示 UFW 正在記錄防火牆處理的所有封包。
- 預設:拒絕(傳入),允許(傳出),停用(路由) – 表示預設策略為拒絕所有傳入連線並允許所有傳出連線。
- 新檔案:跳過 – 表示防火牆目前使用預設的規則集。

如果您使用 numbered
選項運行該命令,您將看到以下輸出。您可以查看編號規則的列表及其對應的允許或拒絕狀態。

允許 HTTP 和 HTTPS 連線
此時,您僅允許 UFW 防火牆上的 SSH 連線,但這限制了您的伺服器功能。允許其他類型的連線,如 HTTP 或 HTTPS,並添加更多規則到 UFW 防火牆。
執行以下任一命令以允許傳入的 HTTP 連線。

現在,執行以下命令中的任一個以允許傳入的 HTTPS 連線。

允許來自特定端口範圍和 IP 地址的連線
某些應用程式使用多個端口來提供其服務。也許您有一系列需要開啟的端口,或者需要允許來自特定 IP 地址的連線。在這種情況下,添加更多的 UFW 防火牆規則。
執行以下命令以允許來自端口5001到5009的入站連接。您應該始終在規則適用的端口範圍後指定協議(tcp
或udp
),因為並非所有端口都被兩個協議使用。
例如,常用的TCP端口包括80(HTTP)和443(HTTPS)。但常用的UDP端口包括53(DNS)和67/68(DHCP)。

如果您更喜歡允許來自特定IP地址的SSH連接,請運行以下命令。此命令僅允許來自IP地址192.168.1.2
的SSH連接(端口22
)。

允許從特定網絡接口的流量
UFW還允許您僅在特定網絡接口上允許流量,例如eth0是第一個以太網接口,wlan0是第一個Wi-Fi接口。
運行以下命令之一僅允許在eth0
和wlan0
接口上進行HTTP連接。

刪除UFW防火牆規則
也許一些 UFW 防火牆規則已經不再起作用。在這種情況下,您可能想要從 UFW 中刪除一些規則。但首先,您必須知道要刪除的規則的編號或名稱。
1. 執行下面的命令以獲得添加到 UFW 的規則的編號列表。
注意輸出中的規則編號或名稱,就像下面的例子一樣。

2. 接下來,執行以下命令以刪除規則編號為4
的規則,該規則是 5001:5010/tcp
端口範圍。

3. 執行下面的命令以按其實際名稱和 allow
狀態刪除規則。在此示例中,您將通過運行以下命令刪除 http
規則。

4. 現在運行以下命令以通過指定端口號(443
)和 allow
狀態刪除規則。

5. 最後,像在第一步中所做的那樣重新運行以下命令以列出所有規則。
正如下面所示,5001:5010/tcp
端口範圍、http
和 443
端口的規則現在已經被刪除。

重置 UFW 防火牆
有時您可能需要將 UFW 重置為其默認值,例如在配置了大量規則後。更新可能會更改您的配置,需要您重新配置 UFW,並可能從頭開始。
執行下面的 ufw reset
命令以將所有防火牆規則重置為默認設置。此命令會禁用 UFW 並刪除所有當前的防火牆規則。
輸入「Y」並按Enter以繼續重置您的UFW防火牆。

重置完成後,您將獲得一個全新安裝的UFW,完全被禁用,甚至您的默認策略也會消失。
現在執行以下命令重新啟用UFW,並從頭開始配置防火牆規則。
如果您決定不再使用UFW,則無需重新啟用它。或者執行下面的命令確保UFW被禁用。

結論
在本教程中,您已經意識到使用UFW設置防火牆並不太困難。現在,您應該已經很好地了解了如何在Ubuntu上使用UFW設置和實施自己的規則。
現在,為什麼不借此機會通過了解更多關於UFW和Linux機器上的Docker安全性的知識?