SSD Nodes Learn
指南 Matt Connor作者: Matt Connor · 已更新 2026-07-24

Ubuntu 24.04 自動更新設定教學

本文說明 Ubuntu 24.04 如何啟用 unattended-upgrades。雖然系統預設安裝,但需透過 20auto-upgrades 確認啟用狀態。文中詳細解析 Automatic-Reboot 設定與使用 dry run 驗證更新內容的方法。

為什麼設定自動安全性更新很有價值

未進行修補的伺服器是網路上最容易被攻擊的目標。大多數針對小型伺服器的入侵並非高明手段;通常只是因為擁有者從未更新舊套件中的已知漏洞。Ubuntu 提供了一個工具來自動填補此漏洞:unattended-upgrades 會依照排程自動安裝安全性更新,無需您登入。對於 VPS 而言,這是成本最低的安全提升方式,在 Ubuntu 上只需幾分鐘即可完成設定。

此工具的設計方針非常保守。預設情況下,它僅套用安全性更新,而非所有套件升級,因為安全性修補風險較低,值得在不經審核的情況下直接套用;而功能升級可能會改變您所依賴的行為。對於大多數伺服器而言,預設設定是正確的,本指南將保留此設定,並向您展示少數值得更改的選項。

Step 1: 安裝並啟用它

在 Ubuntu 24.04 上,該套件通常已預裝,但不一定已啟用。請安裝並開啟它:

sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

dpkg-reconfigure 提示會詢問一個單一的 yes/no 問題,即是否自動下載並安裝穩定更新。請回答 yes。這會寫入開啟每日作業的檔案:

cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

第一行會每天更新套件清單;第二行則每天執行 unattended upgrade。兩者皆設定為 1,代表系統會透過 systemd timer 每天檢查並套用安全性更新,無需您進行額外操作。

Step 2: 決定哪些更新會自動套用

策略定義在 /etc/apt/apt.conf.d/50unattended-upgrades。開啟該檔案並查看頂部的 Allowed-Origins 區塊:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}";
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESMApps:${distro_codename}-apps-security";
    "${distro_id}ESM:${distro_codename}-infra-security";
};

-security 欄位是關鍵,且預設為啟用狀態。這就是保守的策略:僅套用安全性更新,而一般的軟體功能更新則留待您自行決定何時手動套用。您可以加入 "${distro_id}:${distro_codename}-updates" 來源行來自動套用所有更新,但對於託管重要服務的伺服器,僅自動套用安全性修補是較安全的預設做法。除非有特殊需求,否則請保持預設設定。

Step 3: 處理重新啟動

某些更新(如核心 kernel 或核心函式庫 core library)必須在重新啟動後才能完全生效。除非您明確指示,否則 unattended-upgrades 不會重新啟動您的伺服器,這意味著已修補的核心可能會一直處於未啟用的狀態,直到您手動重啟。請決定您的處理方式,並在 50unattended-upgrades 中明確設定:

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

這會在凌晨 4 點且僅在更新需要時重新啟動伺服器。對於沒有叢集可進行容錯移轉的單機 VPS 而言,清晨進行短暫重啟通常是為了保持核心修補最新狀態的最佳折衷方案。如果您的伺服器運行著絕對不能意外重啟的服務,請關閉自動重啟,並養成在檢查 /var/run/reboot-required 後自行重啟的習慣。

Step 4: 驗證運作狀況

不要等一天才去確認作業是否執行。執行一次 dry run(模擬執行)來查看預計套用的內容,而不會更動任何設定:

sudo unattended-upgrade --dry-run --debug

輸出結果會列出它考慮的套件及其來源,讓您看到策略的執行情況。在實際作業至少執行過一次後,紀錄會儲存在此:

cat /var/log/unattended-upgrades/unattended-upgrades.log

該日誌可以回答「我的伺服器是否真的有在自行修補」的問題。如果日誌顯示正依排程安裝安全性套件,則表示作業運作正常。

應用場景

自動更新只是強化伺服器防禦層級中的其中一層,而非全部。它們能防止已知漏洞長期存在,但無法解決登入權限或暴露面問題。請將它們與以下技術搭配使用:僅限金鑰的 SSH hardening 以防止暴力破解;預設拒絕的 UFW firewall 以確保僅允許必要的連線;以及 unprivileged service users 以防止受害應用程式取得整個系統的控制權。修補能封堵您已知的漏洞;其他防禦層則用於限制未知漏洞造成的損害。

FAQ

unattended-upgrades 是套用所有更新還是僅限安全性更新?

預設僅套用安全性更新。/etc/apt/apt.conf.d/50unattended-upgrades 中的 Allowed-Origins 區塊會啟用 -security 來源,並將一般功能更新留待您手動套用。這是刻意設計的:安全性修補風險低,值得自動套用;而功能升級可能會改變行為,因此大多數伺服器應保持保守的預設設定。

自動更新會重新啟動我的伺服器嗎?

除非您指示它。在設定中設定 Unattended-Upgrade::Automatic-Reboot "true"Automatic-Reboot-Time,伺服器會在更新需要時(例如核心修補後)於指定時間重啟。若未開啟此功能,已修補的核心會一直等待直到您手動重啟;請檢查 /var/run/reboot-required 以得知是否有待處理的重啟需求。

我該如何檢查自動更新是否真的在執行?

執行 sudo unattended-upgrade --dry-run --debug 以查看目前預計套用的內容(不更動任何設定),並閱讀 /var/log/unattended-upgrades/unattended-upgrades.log 查看過往執行紀錄;每次自動安裝的紀錄也會記錄在 /var/log/apt/history.log。如果日誌顯示每天都有安裝安全性套件,則 timer 運作正常。如果 dry run 輸出 No packages found that can be upgraded unattended,則代表系統已是最新狀態,或是您允許的來源範圍太窄,無法匹配安全性套件庫。

unattended-upgrades 足以保持伺服器安全嗎?

不足夠,但這是必要的一環。它能防止已知漏洞長期未修補,從而阻斷最常見的入侵方式,但它無法控制存取權限或暴露面。請結合 SSH hardening、預設拒絕的防火牆以及最小權限的服務使用者,才能打造真正難以攻破的伺服器。

#unattended-upgrades#ubuntu-24-04#security#updates#hardening