Miklix

如何在 Ubuntu 伺服器上設定防火牆

已發佈: 2025年2月15日 晚上9:34:44 [UTC]

本文解釋並提供了一些如何使用 ufw 在 GNU/Linux 上設定防火牆的範例。


該頁面是由英語機器翻譯而來的,以便盡可能多的人可以訪問。不幸的是,機器翻譯還不是一項完善的技術,因此可能會出現錯誤。如果您願意,可以在這裡查看原始英文版本:

How to Set Up a Firewall on Ubuntu Server

這篇文章中的資訊是基於 Ubuntu Server 14.04 x64。對於其他版本來說它可能有效,也可能無效。 (更新:我可以確認這篇文章中的信息在 Ubuntu Server 24.04 中仍然有效並且可以運行,然而在這十年間,ufw 已經變得更加“智能”,因為它擁有常見伺服器應用程式的設定檔(例如,你可以啟用“Nginx full”而不是分別啟用連接埠 80 和 443),並且不再需要停用新防火牆來啟用整個防火牆)

當我第一次開始使用 GNU/Linux(Ubuntu)伺服器時,設定防火牆需要手動建立和維護一個可能很複雜的 iptables 設定檔。然而,我最近發現了ufw ,它是「Uncomplicated Firewall」的縮寫——它確實是 :-)

我安裝的 Ubuntu Server 14.04 已經安裝了 ufw,但如果沒有,只需從儲存庫安裝它:

sudo apt-get install ufw

UFW 實際上只是一個簡化 iptables 配置的工具——在幕後,仍然是 iptables 和 Linux 核心防火牆進行過濾,因此 ufw 的安全性既不比這些低,也不比它們高。但是,由於 ufw 使正確配置防火牆變得更加容易,它可以降低人為錯誤的風險,因此對於缺乏經驗的管理員來說可能更安全。

如果您的伺服器配置了 IPv6 和 IPv4,請確保也為 UFW 啟用了此功能。編輯檔案/etc/default/ufw並尋找行IPV6=yes 。在我的安裝中它已經存在了,但如果它不存在或顯示“否”,你應該編輯它

然後只需使用命令提示字元來啟用您想要開啟的連接埠。如果您透過 ssh 連接到您的伺服器,請確保也允許該操作,否則它可能會中斷您的連接,並可能在您啟動它時將您鎖定在伺服器之外 - 取決於您是否具有對伺服器的實體存取權限,這可能會有點不方便 ;-)

例如,如果您在標準連接埠 22 上使用 ssh,並且正在設定支援未加密(連接埠 80 上的 HTTP)和加密(連接埠 443 上的 HTTPS)連線的 Web 伺服器,則您可以發出下列命令來設定 ufw:

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

如果您需要更多規則,只需按照上述方法添加即可。

如果您有一個靜態 IP 位址,並且只需要能夠從一個位置透過 ssh 連接,那麼您也可以將 ssh 連接限製到單一來源位址,如下所示:

sudo ufw allow from 192.168.0.1 to any port 22

當然,請輸入您自己的 IP 位址。

完成後,輸入以下指令啟用 ufw:

sudo ufw enable

您已經完成了!防火牆正在運行,並將在您重新啟動伺服器時自動啟動:-)

如果您對 ufw 配置進行了更改,則可能需要停用並再次啟用它以使它們生效,如下所示:

sudo ufw disable
sudo ufw enable

若要查看目前配置,只需輸入:

sudo ufw status

如果未啟用 ufw,這將僅顯示「不活動」訊息,否則它將列出目前定義的規則。

分享至 Bluesky在 Facebook 分享在 LinkedIn 分享在 Tumblr 上分享分享至 X在 LinkedIn 分享固定在 Pinterest 上

米克爾·邦·克里斯滕森

關於作者

米克爾·邦·克里斯滕森
麥可 是 miklix.com 的創建者和所有者。他有超過 20 年的專業電腦程式設計師/軟體開發人員經驗,目前全職受僱於一家歐洲大型 IT 公司。不寫部落格時,他會將業餘時間花在各種各樣的興趣、愛好和活動上,這在一定程度上反映在本網站所涵蓋的主題的多樣性上。