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 ssh或sudo ufw allow 22/tcp後,再重新連線。
Q2: 如何開放 UDP 埠口?
ufw 預設僅處理 TCP。若需開放 DNS(53)或 DHCP 等 UDP 服務,需明確指定協定。
- 範例:
sudo ufw allow 53/udp
小結
ufw 以其簡單直覺的特性,成為 Ubuntu/Debian 生態系中防火牆管理的首選。透過設定預設拒絕策略、精準開放必要埠口,並定期檢視規則列表,你可以以極低的學習成本大幅提升伺服器的安全性。記住,防火牆規則應遵循「最小權限原則」,僅開放服務所需的最少資源,這是防禦外部攻擊的第一道防線。