iT邦幫忙

2026 iThome 鐵人賽

DAY 25
0
IT Operation

大學生的VirtualBox虛擬機與Ubuntu實戰30天系列 第 25 篇

Day 25|Linux UFW 防火牆基礎與連接埠安全管制

  • 分享至 

  • xImage
  •  

在前面的篇章中,我們成功讓 Python 爬蟲與資料監控腳本以 Systemd 服務的方式在背景穩定運作。隨著虛擬機或雲端主機開始提供各類網路服務(例如之後若架設 Web 伺服器、API 接口或遠端 SSH 連線),主機就等於直接暴露在網路環境中。

如果沒有設定訪問控制,任何外部設備都能嘗試探測主機上開放的通訊埠(Port),這會帶來潛在的資安風險。在 Ubuntu 系統中,管理網路邊界最簡單、直覺的工具就是UFW(Uncomplicated Firewall)。今天我們就來把主機的大門關好,只允許我們信任的連線通過。


1.什麼是通訊埠與防火牆?
可以把你的 Linux 主機想像成一棟辦公大樓:

  • IP 位址:這棟大樓的實體地址。
  • 連接埠(Port):大樓裡的各個專屬出入口(共有 0 到 65535 號)。不同的服務習慣走不同的門,例如:
    • 22 號 Port:SSH 遠端連線專用門。
    • 80 號 Port:HTTP 網頁未加密通訊門。
    • 443 號 Port:HTTPS 網頁加密通訊門。
  • 防火牆(UFW):大樓門口的警衛管理室。它的工作是根據管理員訂下的規則,決定「誰可以從哪扇門進來」,並直接將未經許可的訪客擋在門外。

什麼是 UFW?
Linux 核心底層原本使用的是強大但語法極為複雜的 iptables。Ubuntu 為了解決新手設定容易出錯的痛點,開發了UFW(Uncomplicated Firewall,直譯為「不複雜的防火牆」)。它用非常口語、簡短的指令,幫我們輕鬆搞定進出連線規則。


2.注意事項
重要提醒:切勿直接啟動防火牆!
UFW 預設的安全原則是:「阻擋所有外部連進來的請求,允許所有本機連出去的請求」。
如果你目前是透過 SSH 遠端連線進虛擬機或雲端主機操作,在「還沒放行 SSH(Port 22)」之前就直接啟用防火牆,你的連線會瞬間被切斷,且再也連不進去(就像把自己鎖在門外)!
因此標準的操作 SOP 應該是:先放行管理連線(SSH)➔ 檢查規則 ➔ 最後才啟用防火牆。


3.UFW 設定
(1)檢查目前防火牆狀態
在終端機中輸入以下指令

sudo ufw status

https://ithelp.ithome.com.tw/upload/images/20260924/201838868BLUQO2KbD.png
(Ubuntu 剛裝好時的預設狀態是把防火牆關閉)
(2)建立預設防護原則
確保阻擋所有外部主動連線,並允許本機正常的對外上網需求(例如我們的 Python 腳本對外抓取 CoinGecko API):

sudo ufw default deny incoming
sudo ufw default allow outgoing

(3)放行必要的服務連線(以 SSH 為例)
先把我們自己要通行的 22 號 Port 放進白名單,你可以使用服務名稱或埠號:

sudo ufw allow 22/tcp
# 或者輸入:sudo ufw allow ssh

終端機會回傳已更新防火牆規則,代表放行規則已成功登錄。

若未來有架設網頁伺服器需求,也可預先放行 80 與 443 Port

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

(4)正式啟用 UFW 防火牆
確認規則都新增好之後,執行啟用指令:

sudo ufw enable

系統會跳出警告訊息:
「指令可能會中斷現有的 ssh 連接。繼續執行(y|n)?」
因為我們剛才已經確認放行了 22 號 Port,直接輸入 y 並按下 Enter 即可。
終端機顯示在系統啟動時啟用防火牆,表示防火牆已正式啟動,且開機時會自動載入生效。


4.驗證與常用規則管理
(1)檢視詳細規則清單
使用 verbose 參數查看目前啟用的細節與預設政策:

sudo ufw status verbose

正常輸出範例:
https://ithelp.ithome.com.tw/upload/images/20260924/20183886d3vwZPQQth.png
可以看到除了 22 號 Port 允許從任何地方連入(ALLOW IN)外,其餘所有連入請求一律遵循 Default: deny 被擋下。
(2)常用維運指令速查

維運需求 指令寫法
依編號列出規則 sudo ufw status numbered
刪除指定規則(透過編號) sudo ufw delete <編號>(例如:sudo ufw delete 2)
刪除指定規則(透過語法) sudo ufw delete allow 80/tcp
只允許特定 IP 連線(提高安全性) sudo ufw allow from 192.168.1.50 to any port 22
臨時停用防火牆 sudo ufw disable
重設所有規則回到初始狀態 sudo ufw reset

|明日目標:主機的網路門禁就定位後,明天將進入「遠端安全存取篇」,學習如何停用危險的密碼登入,改用 SSH 金鑰配對登入主機,打造無密碼且更安全的連線機制!|


上一篇
Day 24|服務化架構:從 Crontab 邁向 Systemd 系統服務管理
下一篇
Day 26|SSH 金鑰配對認證與伺服器登入強化
系列文
大學生的VirtualBox虛擬機與Ubuntu實戰30天 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言