跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 管理指南 / 一般任務 / 使用 KLP 的即時核心修補
適用範圍 SUSE Linux Enterprise Server 15 SP5

11 使用 KLP 的即時核心修補

本文件介紹核心即時修補 (KLP) 技術的基本原理,並提供 SLE Live Patching 服務的使用指導方針。

KLP 讓您無需重新開機便可套用 Linux 核心的最新安全性更新。如此可最大程度地提高系統運作時間和可用性,這對於任務關鍵性系統而言尤為重要。

本文件中提供的資訊與 AMD64/Intel 64、POWER 和 IBM Z 架構相關。

11.1 核心即時修補的優勢

KLP 提供了多項優勢。

  • 對於需獲得或維護特定合規認證的組織而言,確保大量伺服器自動保持最新狀態至關重要。KLP 可在協助實現合規的同時,減少對費用高昂的維護期間的需求。

  • 簽訂了服務等級合約的公司必須保證其系統可用性和運作時間達到特定的等級。即時修補可在不產生停機時間的情況下修補系統。

  • 由於 KLP 是標準系統更新機制的一部分,因此無需專門培訓或引入複雜的維護常式。

11.2 核心即時修補綜覽

透過內含已修改代碼的套件提供核心即時修補程式,此類套件與主核心套件不同。即時修補程式具有累積性,因此最新的修補程式包含核心套件先前修補程式的所有修復。每個核心即時套件都與為其發佈的確切核心修正版關聯。每新增一個修復,即時修補程式套件版本號碼都會相應增加。

重要
重要:即時修補程式和核心更新的對比

即時修補程式僅包含關鍵修復,不會取代常規的核心更新,後者需要系統重新開機。可以將即時修補程式視為在執行適當的核心更新和重新開機前用於暫時保護核心的措施。

下圖闡述了即時修補程式與核心更新之間的總體關係。使用 klp -v patches 指令可以檢視目前作用中即時修補程式所解決的 CVE 清單和缺陷報告。

Image

您可以安裝多個版本的核心套件及其即時修補程式。這些套件不會衝突。您可以為執行中核心安裝更新的核心套件及即時修補程式。在此情況下,您可能會收到將系統重新開機的提示。訂閱了 SLE Live Patching 的使用者有權獲享技術支援,只要執行中核心存在即時修補程式更新 (請參閱第 11.5.1 節 「檢查即時修補程式的過期日期」)。

啟用 KLP 後,每個核心更新都會隨附即時修補程式套件。此即時修補程式不包含任何修復,而是做為相應核心未來即時修補程式的種子。這些空種子修補程式稱為 initial patches

11.2.1 核心即時修補範圍

SLE Live Patching 的修補範圍包括 SUSE 通用弱點評分系統 (CVSS;SUSE CVSS 基於 CVSS v3.0 系統開發) 7 級以上系統穩定或資料損毀相關的弱點和錯誤修復。但從技術上而言,為屬於指定類別的所有修復都建立即時修補程式可能並不現實。因此,SUSE 保留在因技術原因而無法建立核心即時修補程式的情況下跳過相應修復的權利。目前超過 95% 的合格修復都是以即時修補程式的形式發行的。如需 CVSS (SUSE CVSS 評分基礎) 的詳細資訊,請參閱 Common Vulnerability Scoring System SIG

11.2.2 核心即時修補限制

KLP 涉及取代功能和妥善處理互相依存的功能集的取代。透過將舊代碼呼叫重新導向至不同記憶體位置的更新代碼來完成此操作。資料結構的變更使情況變得更加複雜,因為資料會保持原狀,無法延伸或重新解譯。儘管使用某些技術可以間接變更資料結構,但有些修復無法轉換為即時修補程式。在此情況下,只能透過系統重新啟動來套用修復。

11.3 使用 YaST 啟用核心即時修補

若要在您的系統上啟用 KLP,您需要擁有作用中 SLES 和 SLE Live Patching 訂閱。請造訪 SUSE Customer Center 以檢查您的訂閱的狀態,並獲取 SLE Live Patching 訂閱的註冊代碼。

若要在您的系統上啟用核心即時修補,請執行以下步驟:

  1. 執行 yast2 registration 指令,然後按一下選取延伸

  2. 在可用延伸清單中選取 SUSE Linux Enterprise Live Patching 15,然後按下一步

  3. 確認授權條款並按下一步

  4. 輸入您的 SLE Live Patching 註冊代碼並按一下下一步

  5. 檢查安裝摘要和所選的模式。系統應該會自動選擇安裝 Live PatchingSLE Live Patching Lifecycle Data 模式以及一些其他套件,以滿足相依關係。

  6. 按一下接受完成安裝。這樣會在您的系統上安裝基礎核心即時修補元件、初始即時修補程式,以及所需的相依項。

11.4 從指令列啟用核心即時修補

若要啟用核心即時修補,您需要擁有作用中 SLES 和 SLE Live Patching 訂閱。請造訪 SUSE Customer Center 以檢查您的訂閱的狀態,並獲取 SLES Live Patching 訂閱的註冊代碼。

  1. 執行 sudo SUSEConnect --list-extensions.請記住 SLES Live Patching 的確切啟用指令。範例指令輸出 (縮略版):

    $ SUSEConnect --list-extensions
    ...
    SUSE Linux Enterprise Live Patching 15 SP5 x86_64
    Activate with: SUSEConnect -p sle-module-live-patching/15.5/x86_64 \
      -r ADDITIONAL REGCODE
  2. 使用獲得的指令後接 -r LIVE_PATCHING_REGISTRATION_CODE 啟用 SLES Live Patching,例如:

    SUSEConnect -p sle-module-live-patching/15.5/x86_64 \
      -r LIVE_PATCHING_REGISTRATION_CODE
  3. 使用 zypper install -t pattern lp_sles 指令安裝所需的套件和相依項。

至此,系統已完成即時修補。

幕後作業的程序如下:當套件安裝系統偵測到某個安裝的核心可以即時修補,並且軟體通道中存在相應的即時修補程式時,系統會選擇安裝該即時修補程式。然後核心會在套件安裝過程中接收到即時修補程式修復。在產品安裝完成前,就會對核心進行即時修補。

11.5 執行核心即時修補

在常規的系統更新過程中安裝核心即時修補程式。但您應瞭解以下幾點事項。

  • 如果已為執行中核心安裝 kernel-livepatch-* 套件,核心會進行即時修補。您可以使用 zypper se --details kernel-livepatch-* 指令來檢查系統上安裝了哪些核心即時修補程式套件。

  • 如果安裝了 kernel-default 套件,更新管理員會提示您將系統重新開機。為避免此訊息顯示,您可以將核心更新從修補操作中濾除。可以透過使用 Zypper 新增套件鎖定來實現此目的。您也可以使用 SUSE Manager 來過濾通道內容 (請參閱 Live Patching with SUSE Manager)。

  • 可以使用 klp status 指令來檢查修補狀態。若要檢查安裝的修補程式,請執行 klp -v patches 指令。

  • 請記住,雖然系統上可能會安裝多個核心套件,但任何時間只有一個套件在執行。同樣,雖然系統上可能會安裝多個即時修補程式套件,但只有一個即時修補程式會載入到核心中。

  • initrd 中會包含作用中即時修補程式。這表示如果發生了未預期的重新開機,系統啟動時會套用即時修補程式修復,因此不需要再次執行修補。

11.5.1 檢查即時修補程式的過期日期

請確認已安裝 lifecycle-data-sle-module-live-patching,然後執行 zypper lifecycle 指令。在輸出的 Package end of support if different from product 區段中應該可以看到即時修補程式的過期日期。

每個即時修補程式自基礎核心套件發行起一年內都會收到更新。您可以使用 Maintained kernels, patch updates and lifecycle 頁面根據執行中核心版本檢查過期日期,而無需安裝產品延伸。

11.6 核心即時修補問題疑難排解

11.6.1 手動降級修補程式

如果您發現最新的即時修補程式有問題,可以將目前安裝的即時修補程式降級回之前的版本。我們建議在系統開始顯現出問題前執行修補程式降級。請注意,在系統記錄中追蹤核心警告或核心錯誤的系統可能不適合使用修補程式降級程序。如果您不確定系統是否符合修補程式降級的要求,請聯絡 SUSE 技術支援部門以獲得協助。

程序 11.1︰ 手動降級修補程式
  1. 使用 klp -v patches 指令確定執行中即時修補程式。以 RPM: 開頭的行中顯示的就是目前的執行中修補程式。例如:

    RPM: kernel-livepatch-5_3_18-24_29-default-2-2.1.x86_64

    上例中的 5_3_18-24_29-default 指的就是執行中核心版本。

  2. 使用 zypper search -s kernel-livepatch-RUNNING_KERNEL_VERSION-default 指令搜尋修補程式的先前版本。該指令會傳回可用套件版本清單。請注意,每個新即時修補程式套件發行版本的版本號碼會加 1。請務必選擇版本號碼低於目前版本號碼的發行版本。

  3. 使用 zypper in --oldpackage kernel-livepatch-RUNNING_KERNEL_VERSION-default=DESIRED_VERSION 指令安裝所需的版本。