ufw 防火牆快速入門 文章首圖

ufw 防火牆快速入門

ufw 防火牆快速入門

在 Linux 系統管理的世界裡,網路安全是重中之重。雖然 iptables 是底層的強大工具,但其複雜的語法和繁瑣的規則設定往往讓初學者望而卻步。對於大多數伺服器管理者而言,ufw(Uncomplicated Firewall)是更優雅的解決方案。它專為簡化 iptables 的複雜性而設計,特別是在 Ubuntu 和 Debian 系統中預設安裝。這篇文章將帶你快速掌握 ufw 的核心用法,讓你的伺服器在幾分鐘內就擁有堅固的防禦。

安裝與初始化

雖然 Ubuntu 22.04 和 Debian 12 通常預設內建 ufw,但確認安裝狀態是良好的習慣。若未安裝,可透過以下指令取得:

sudo apt update
sudo apt install ufw

安裝完成後,首要任務是設定預設政策(Default Policy)。一個安全的系統應拒絕所有未經明確允許的連線。

sudo ufw default deny incoming
sudo ufw default allow outgoing

上述指令將所有進入伺服器的連線預設為拒絕,而出站連線預設為允許。這意味著除非你明確開放某個埠,否則外部無法觸及你的服務。

基礎規則設定

ufw 的語法直觀且易於記憶。基本格式為 sudo ufw allow/deny [port/protocol]

1. 開放特定埠口

假設你需要運行 SSH 服務(埠口 22)和 Nginx Web 伺服器(埠口 80 和 443)。

# 開放 SSH
sudo ufw allow 22/tcp

# 開放 HTTP 和 HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 或者使用服務名稱(若 /etc/services 中有定義)
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

注意: 在開放 SSH 之前,請務必確認你不會因此被鎖在伺服器外。若你使用的是雲端伺服器,建議先透過控制台確認 SSH 連線正常,或先開放其他管理埠口。

2. 開放特定 IP 或子網段

有時我們只希望特定的管理 IP 能存取 SSH,以減少暴力破解風險。

# 僅允許特定 IP 存取 SSH
sudo ufw allow from 192.168.1.100 to any port 22 proto tcp

# 僅允許特定子網段存取
sudo ufw allow from 10.0.0.0/24 to any port 22 proto tcp

規則管理與狀態檢查

隨著服務增加,規則列表會變得雜亂。善用管理指令能保持系統整潔。

查看狀態與規則

sudo ufw status verbose

輸出範例:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
80/tcp (v6)                ALLOW IN    Anywhere (v6)
443/tcp (v6)                ALLOW IN    Anywhere (v6)

刪除規則

當你需要移除規則時,可以指定規則編號或完整條件。

# 先查看規則編號
sudo ufw status numbered

# 假設第 3 條規則是不需要的,刪除它
sudo ufw delete 3

# 或直接指定條件刪除
sudo ufw delete allow 80/tcp

啟用與停用

# 啟用防火牆(啟用後現有 SSH 連線不會斷,但新連線需符合規則)
sudo ufw enable

# 停用防火牆(緊急情況使用)
sudo ufw disable

常見問題與解決

Q1: 啟用 ufw 後 SSH 連線斷開怎麼辦? 這通常發生在啟用 ufw 前未開放 SSH 埠口,或規則順序錯誤導致被預設策略拒絕。

  • 解決方法: 若已斷線,需透過主機控制台(Console)登入。在控制台終端機執行 sudo ufw allow sshsudo ufw allow 22/tcp 後,再重新連線。

Q2: 如何開放 UDP 埠口? ufw 預設僅處理 TCP。若需開放 DNS(53)或 DHCP 等 UDP 服務,需明確指定協定。

  • 範例:
    sudo ufw allow 53/udp

小結

ufw 以其簡單直覺的特性,成為 Ubuntu/Debian 生態系中防火牆管理的首選。透過設定預設拒絕策略、精準開放必要埠口,並定期檢視規則列表,你可以以極低的學習成本大幅提升伺服器的安全性。記住,防火牆規則應遵循「最小權限原則」,僅開放服務所需的最少資源,這是防禦外部攻擊的第一道防線。