07. 修補和更新 Ubuntu Server:全面指南

保持 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”

      發表留言