保持 Ubuntu Server 及時修補和更新對於維護安全性、穩定性和合規性至關重要。定期更新可以防範弱點、提高系統效能,並確保遵守行業標準。本指南提供了可操作的見解、實用範例和工具,用於自動更新和有效處理核心修補程式。
上一篇文章:
01. Ubuntu Server 簡介 – SysOSX: AI & Cloud
02. 如何搭建你的第一台 Ubuntu Server:初學者指南 – SysOSX: AI & Cloud
03. 掌握 Ubuntu Server 的 Linux 命令列 – SysOSX: AI & Cloud
04. Ubuntu Server 使用者與權限管理:全面指南 – SysOSX: AI & Cloud
05. Ubuntu Server 網路基礎:全面指南 – SysOSX: AI & Cloud
06. 在 Ubuntu Server 上安裝和管理軟體:完整指南 – SysOSX: AI & Cloud
為什麼定期更新 Ubuntu Server 至關重要
1. 安全防護
未修補的弱點是重大安全風險。據 CISA 稱,87% 的入侵針對使用未修補軟體的系統。定期更新透過解決已知弱點來降低這些風險。
真實範例:
2023 年的 OpenSSL 弱點(CVE-2023-0286)使攻擊者能夠竊取敏感資料。及時套用修補程式的伺服器避免了被利用。
2. 系統穩定性
更新通常包括錯誤修正和效能問題修正,以確保穩定運作。它們還提高了硬體相容性,特別是對於在 AWS 和 Azure 等雲端平台上執行的伺服器。
真實範例:
2022 年 Linux 核心 5.15 的「Dirty Pipe」問題導致記憶體洩漏和系統不穩定。一個核心修補程式解決了該問題,恢復了系統的可靠性。
3. 合規要求
許多行業要求定期更新以滿足安全和隱私標準。不合規可能導致罰款、法律後果和聲譽損害。
標準範例:
- PCI-DSS:支付系統必需。
- HIPAA:保護醫療保健資料。
- GDPR:確保歐盟公民的隱私。
Ubuntu 更新命令速查表
以下是 Ubuntu 更新命令的快速參考指南:
| 命令 | 用途 | 何時使用 |
|---|---|---|
sudo apt update | 重新整理軟體套件清單 | 任何安裝之前 |
sudo apt upgrade | 安裝安全性更新 | 每週維護 |
sudo apt full-upgrade | 主要版本更新 | Ubuntu 版本升級 |
sudo apt autoremove | 清理舊軟體套件 | 更新之後 |
自動修補設定(5 分鐘指南)
使用unattended-upgrades自動更新可確保重要修補程式在無需人工干預的情況下套用。請按下列步驟設定自動更新:
第 1 步:安裝 unattended-upgrades
sudo apt install unattended-upgrades
第 2 步:設定安全性更新
編輯設定檔:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
取消註解下列行:
"Ubuntu:${distro_codename}-security";
"Ubuntu:${distro_codename}-updates";
第 3 步:啟用自動重新啟動
將下列行新增到同一檔案,以在更新後啟用自動重新啟動:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
何時使用自動修補
自動修補非常適合停機可接受或人工干預不切實際的環境。範例包括:
- 非關鍵系統:正常運作時間不重要的開發或測試環境。
- 小型企業或個人使用:為沒有專職 IT 人員的使用者確保安全。
- 邊緣裝置或物聯網系統:無法手動更新的遠端裝置。
但是,自動修補並不適合所有環境。在下列案例中請避免使用:
- 關鍵任務系統:應在預發佈環境中測試更新,以避免引入錯誤或停機。
- 高可用性 (HA) 環境:自動修補可能會擾亂叢集系統或容錯移轉機制。
- 受監管行業:合規標準通常要求更新經過審批和測試流程。
- 自訂設定:具有獨特設定的伺服器可能會遇到與自動更新的相容性問題。
對於此類情況,請考慮手動修補或使用 Ansible 等工具,以保持對更新過程的控制。
核心更新管理
核心更新對於修正弱點和提高系統效能至關重要。以下是有效管理核心更新的方法:
1. 檢查待處理的核心更新
使用下列命令檢查可用的核心更新:
apt list --upgradable | grep linux-image
2. 無需重新啟動即可套用更新(Livepatch)
Ubuntu Livepatch 僅適用於 Ubuntu Pro 訂閱,它允許你在不重新啟動的情況下套用核心更新,從而最大限度地減少停機時間。
啟用 Livepatch 的步驟:
- 安裝 Livepatch:
sudo snap install canonical-livepatch
- 使用你的權杖啟用 Livepatch:
sudo canonical-livepatch enable YOUR_TOKEN
3. 安全重新啟動流程
如果需要重新啟動,請按下列步驟優雅地重新啟動:
檢查是否需要重新啟動:
Ubuntu 會在更新後需要重新啟動時建立檔案/var/run/reboot-required。如果此檔案不存在,則表示不需要重新啟動。不過,你可以手動檢查下列內容:
- 檢查核心版本:
將正在執行的核心版本與最新安裝的核心進行比較:
uname -r apt list --installed | grep linux-image
- 檢查使用已刪除檔案的正在執行的處理程序:
識別使用過時檔案的處理程序:
sudo lsof | grep deleted
提醒使用者注意停機:
wall "Maintenance reboot in 10 minutes"
安排重新啟動:
sudo shutdown -r +10
企業自動化範本
用於多伺服器更新的 Ansible Playbook
要在多台伺服器上管理更新,請使用 Ansible 自動執行該過程。
範例 Playbook:
- name: Apply security patches
hosts: all
become: yes
tasks:
- name: Update apt cache
ansible.builtin.apt:
update_cache: yes
- name: Apply security updates
ansible.builtin.apt:
upgrade: yes
cache_valid_time: 3600
執行該 playbook:
ansible-playbook update.yml
用於非尖峰時段更新的 Cron 工作
使用 cron 工作在非尖峰時段安排更新。
範例 Cron 工作:
編輯 crontab:
sudo crontab -e
新增下列行,以安排每週日凌晨 3 點進行更新:
0 3 * * 7 apt update && apt upgrade -y
常見問題與解決方案
1. 更新期間磁碟空間不足
如果伺服器在更新期間磁碟空間不足,請清理不必要的檔案:
命令:
sudo apt clean
sudo apt autoremove --purge
檢查磁碟使用情況:
df -h
2. 更新失敗復原
如果更新失敗,請使用下列命令復原:
修正損毀的相依性套件:
sudo apt --fix-broken install
重設軟體套件狀態:
sudo dpkg --configure -a
3. 離線伺服器更新
對於沒有網際網路存取權限的伺服器,請使用apt-offline在已連線的電腦上下載更新並離線套用。
在已連線的電腦上:
apt-offline set update.sig
傳輸檔案並套用:
apt-offline install update.sig
維護清單
請遵循此清單,以確保你的 Ubuntu Server 保持安全和穩定:
- 每週:執行手動安全性更新。
- 每月:在預發佈環境中測試完整升級。
- 每季:清理儲存空間並刪除未使用的軟體套件。
- 每年:進行合規稽核以滿足行業標準。
官方文件:安裝和管理軟體套件 – Ubuntu Server 文件
結論
定期修補和更新 Ubuntu Server 對於維護安全性、穩定性和合規性至關重要。透過了解更新的重要性、掌握apt命令、使用unattended-upgrades自動更新並有效管理核心修補程式,管理員可以確保伺服器保持穩健可靠。對於企業環境,Ansible 和 Livepatch 等工具進一步簡化了流程,減少了停機時間並提高了效率。
展望未來:保護你的 Ubuntu Server
既然你已經了解如何保持 Ubuntu Server 更新和修補,下一步是確保它能夠抵禦外部威脅。在我們的下一篇文章保護你的 Ubuntu Server中,我們將介紹強化伺服器的實用步驟,包括:
- 設定防火牆,使用ufw.
- 安全地設定 SSH 以防止未授權存取。
- 使用fail2ban等工具防範暴力破解攻擊。
敬請期待可操作的見解,以保護你的伺服器並保護你的基礎架構免受潛在威脅!
3 thoughts on “07. Patching and Updating Ubuntu Server: A Comprehensive Guide”