如何在 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,但如果沒有,只需從儲存庫安裝它:
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 80/tcp
sudo ufw allow 443/tcp
如果您需要更多規則,只需按照上述方法添加即可。
如果您有一個靜態 IP 位址,並且只需要能夠從一個位置透過 ssh 連接,那麼您也可以將 ssh 連接限製到單一來源位址,如下所示:
當然,請輸入您自己的 IP 位址。
完成後,輸入以下指令啟用 ufw:
您已經完成了!防火牆正在運行,並將在您重新啟動伺服器時自動啟動:-)
如果您對 ufw 配置進行了更改,則可能需要停用並再次啟用它以使它們生效,如下所示:
sudo ufw enable
若要查看目前配置,只需輸入:
如果未啟用 ufw,這將僅顯示「不活動」訊息,否則它將列出目前定義的規則。