Amazon Linux 2 上的 Kernel Live Patching - Amazon Elastic Compute Cloud

Amazon Linux 2 上的 Kernel Live Patching

Amazon Linux 2 的 Kernel Live Patching 可讓您將安全性漏洞和重大錯誤修補程式套用至執行中的 Linux 核心,而不需要重新啟動或中斷執行中的應用程式。這可讓您從改善的服務和應用程式可用性中受益,同時保持基礎架構的安全和最新狀態。

如需 Amazon Linux 2023 的核心即時修補相關資訊,請參閱《Amazon Linux 2023 使用者指南》中的 Amazon Linux 2023 的核心即時修補

AWS 發行了兩種類型的 Amazon Linux 2 核心即時修補程式:

  • 安全性更新 – 包含 Linux 常見漏洞和入侵程式 (CVE) 的更新。這些更新通常會使用 Amazon Linux 安全建議分級評定為 important (重要)critical (嚴重)。它們通常對應到通用漏洞評分系統 (CVSS) 分數的 7 及以上。在某些情況下,AWS 可能會在指派 CVE 之前提供更新。在這些情況下,修補程式可能會顯示為錯誤修正。

  • 錯誤修正 – 包含修正與 CVE 無關的重大錯誤和穩定性問題。

AWS 會在 Amazon Linux 2 核心版本發行後最多 3 個月內提供核心即時修補程式。在 3 個月期間之後,您必須更新至更新的核心版本,才能繼續接收核心即時修補程式。

Amazon Linux 2 核心即時修補程式會在現有 Amazon Linux 2 軟體庫中以已簽署的 RPM 套件形式提供。這些修補程式可以透過現有 yum 工作流程安裝在個別執行個體上,或者也可以透過 AWS Systems Manager 安裝在受管執行個體群組上。

Amazon Linux 2 的 Kernel Live Patching 以無需額外費用的方式提供。

支援的組態和先決條件

Amazon EC2 執行個體和執行 Amazon Linux 2 的內部部署虛擬機器支援 Kernel Live Patching。

若要在 Amazon Linux 2 上使用 Kernel Live Patching,您必須使用:

  • x86_64 架構上的核心版本 4.145.10

  • ARM64 架構上的核心版本 5.10

政策要求

若要從 Amazon Linux 儲存庫下載套件,Amazon Elastic Compute Cloud 需要存取服務擁有的 Amazon S3 儲存貯體。如果您在環境中使用適用於 Amazon S3 的 Amazon 虛擬私有雲端 (VPC) 端點,則需要確保您的 VPC 端點政策允許存取這些公有儲存貯體。

下表說明對於 Kernel Live Patching,EC2 可能需要存取的每個 Amazon S3 儲存貯體。

S3 儲存貯體 ARN 描述
arn:aws:s3:::packages.region.amazonaws.com/*

含有 Amazon Linux AMI 套件的 Amazon S3 儲存貯體

arn:aws:s3:::repo.region.amazonaws.com/*

含有 Amazon Linux AMI 儲存庫的 Amazon S3 儲存貯體

arn:aws:s3:::amazonlinux.region.amazonaws.com/*

含有 Amazon Linux 2 儲存庫的 Amazon S3 儲存貯體

arn:aws:s3:::amazonlinux-2-repos-region/*

含有 Amazon Linux 2 儲存庫的 Amazon S3 儲存貯體

下方政策會說明如何限制存取屬於您組織的 Amazon S3 儲存貯體的身分和資源,並提供 Kernel Live Patching 所需的 Amazon S3 儲存貯體的存取權限。使用您組織的值取代 regionprincipal-org-id 以及 resource-org-id

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRequestsByOrgsIdentitiesToOrgsResources", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "principal-org-id", "aws:ResourceOrgID": "resource-org-id" } } }, { "Sid": "AllowAccessToAmazonLinuxAMIRepositories", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::packages.region.amazonaws.com/*", "arn:aws:s3:::repo.region.amazonaws.com/*", "arn:aws:s3:::amazonlinux.region.amazonaws.com/*", "arn:aws:s3:::amazonlinux-2-repos-region/*" ] } ] }

使用 Kernel Live Patching

您可以透過執行個體本身上的命令列在個別執行個體上啟用並使用 Kernel Live Patching,或者也可以透過 AWS Systems Manager 在受管執行個體群組上啟用並使用 Kernel Live Patching。

下列各節說明如何透過命令列在個別執行個體上啟用並使用 Kernel Live Patching。

如需有關在受管執行個體群組上啟用並使用 Kernel Live Patching 的詳細資訊,請參閱 AWS Systems Manager 使用者指南中的在 Amazon Linux 2 執行個體上使用 Kernel Live Patching

啟用 Kernel Live Patching

Kernel Live Patching 在 Amazon Linux 2 上預設為停用狀態。若要使用即時修補,您必須安裝 Kernel Live Patching 的 yum 外掛程式,並啟用即時修補功能。

先決條件

Kernel Live Patching 需要 binutils。如果您未安裝 binutils,請使用下列命令進行安裝:

$ sudo yum install binutils
啟用 Kernel Live Patching
  1. 核心即時修補程式適用於以下 Amazon Linux 2 核心版本:

    • x86_64 架構上的核心版本 4.145.10

    • ARM64 架構上的核心版本 5.10

    若要檢查您的核心版本,請執行下列命令。

    $ sudo yum list kernel
  2. 如果您已經有支援的核心版本,請略過此步驟。如果您沒有支援的核心版本,請執行下列命令,將核心更新為最新版本,並重新啟動執行個體。

    $ sudo yum install -y kernel
    $ sudo reboot
  3. 安裝 Kernel Live Patching 的 yum 外掛程式。

    $ sudo yum install -y yum-plugin-kernel-livepatch
  4. 啟用 Kernel Live Patching 的 yum 外掛程式。

    $ sudo yum kernel-livepatch enable -y

    此命令也會從設定的軟體庫安裝最新版本的核心即時修補程式 RPM。

  5. 若要確認核心即時修補的 yum 外掛程式是否成功安裝,請執行下列命令。

    $ rpm -qa | grep kernel-livepatch

    當您啟用 Kernel Live Patching 時,系統會自動套用空白的核心即時修補程式 RPM。如果 Kernel Live Patching 已順利啟用,此命令會傳回包含初始空白核心即時修補程式 RPM 的清單。下列為範例輸出。

    yum-plugin-kernel-livepatch-1.0-0.11.amzn2.noarch kernel-livepatch-5.10.102-99.473-1.0-0.amzn2.x86_64
  6. 安裝 kpatch 套件。

    $ sudo yum install -y kpatch-runtime
  7. 如果之前已安裝 kpatch 服務,請更新此服務。

    $ sudo yum update kpatch-runtime
  8. 啟動 kpatch 服務。此服務會在初始化或開機時載入所有核心即時修補程式。

    $ sudo systemctl enable kpatch.service
  9. 啟用 Amazon Linux 2 Extras Library 的 Kernel Live Patching 主題。本主題包含核心即時修補程式。

    $ sudo amazon-linux-extras enable livepatch

檢視可用的核心即時修補程式

Amazon Linux 安全性警示會發佈至資訊 Amazon Linux 安全中心。如需有關 Amazon Linux 2 安全性警示 (包括核心即時修補程式警示) 的詳細資訊,請參閱 Amazon Linux 安全中心。核心即時修補程式的字首為 ALASLIVEPATCH。Amazon Linux 安全中心可能不會列出解決錯誤的核心即時修補程式。

您也可以使用命令列來探索建議和 CVE 的可用核心即時修補程式。

列出所有可用的核心即時修補程式以供建議使用

使用下列命令。

$ yum updateinfo list

下面顯示了範例輸出。

Loaded plugins: extras_suggestions, kernel-livepatch, langpacks, priorities, update-motd ALAS2LIVEPATCH-2020-002 important/Sec. kernel-livepatch-5.10.102-99.473-1.0-3.amzn2.x86_64 ALAS2LIVEPATCH-2020-005 medium/Sec. kernel-livepatch-5.10.102-99.473-1.0-4.amzn2.x86_64 updateinfo list done
列出 CVE 的所有可用核心即時修補程式

使用下列命令。

$ yum updateinfo list cves

下面顯示了範例輸出。

Loaded plugins: extras_suggestions, kernel-livepatch, langpacks, priorities, update-motdamzn2-core/2/x86_64 | 2.4 kB 00:00:00 CVE-2019-15918 important/Sec. kernel-livepatch-5.10.102-99.473-1.0-3.amzn2.x86_64 CVE-2019-20096 important/Sec. kernel-livepatch-5.10.102-99.473-1.0-3.amzn2.x86_64 CVE-2020-8648 medium/Sec. kernel-livepatch-5.10.102-99.473-1.0-4.amzn2.x86_64 updateinfo list done

套用核心即時修補程式

您可以使用 yum 套件管理員來套用核心即時修補程式,方法與套用定期更新相同。Kernel Live Patching 的 yum 外掛程式會管理要套用的核心即時修補程式,而不需要重新開機。

提示

我們建議您定期使用 Kernel Live Patching 來更新您的核心,以確保安全與最新狀態。

您可以選擇套用特定的核心即時修補程式,或套用任何可用的核心即時修補程式,以及定期的安全性更新。

套用特定核心即時修補程式
  1. 使用 檢視可用的核心即時修補程式 中描述的其中一個命令取得核心即時修補程式版本。

  2. 為您的 Amazon Linux 2 核心套用核心即時修補程式。

    $ sudo yum install kernel-livepatch-kernel_version.x86_64

    例如,下列命令會針對 Amazon Linux 2 核心版本 5.10.102-99.473 套用核心即時修補程式。

    $ sudo yum install kernel-livepatch-5.10.102-99.473-1.0-4.amzn2.x86_64
套用任何可用的核心即時修補程式,以及您的定期安全性更新

使用下列命令。

$ sudo yum update --security

省略包含錯誤修正的 --security 選項。

重要
  • 套用核心即時修補程式後,核心版本不會更新。只有在執行個體重新啟動後,版本才會更新為新版本。

  • Amazon Linux 2 核心會接收核心即時修補程式,為期三個月。三個月期間過後,該核心版本不會發行任何新的核心即時修補程式。若要在三個月後繼續接收核心即時修補程式,您必須重新啟動執行個體才能移至新的核心版本,然後才能在接下來的三個月內繼續接收核心即時修補程式。若要檢查核心版本的支援視窗,請執行 yum kernel-livepatch supported

檢視套用的核心即時修補程式

檢視套用的核心即時修補程式

使用下列命令。

$ kpatch list

此命令會傳回已載入及已安裝的安全性更新核心即時修補程式清單。下列為範例輸出。

Loaded patch modules: livepatch_cifs_lease_buffer_len [enabled] livepatch_CVE_2019_20096 [enabled] livepatch_CVE_2020_8648 [enabled] Installed patch modules: livepatch_cifs_lease_buffer_len (5.10.102-99.473.amzn2.x86_64) livepatch_CVE_2019_20096 (5.10.102-99.473.amzn2.x86_64) livepatch_CVE_2020_8648 (5.10.102-99.473.amzn2.x86_64)
注意

單一核心即時修補程式可包含並安裝多個即時修補程式。

停用核心即時修補

如果您不再需要使用 Kernel Live Patching,您可以隨時停用它。

停用 Kernel Live Patching
  1. 移除套用的核心即時修補程式 RPM 套件。

    $ sudo yum kernel-livepatch disable
  2. 解除安裝 Kernel Live Patching 的 yum 外掛程式。

    $ sudo yum remove yum-plugin-kernel-livepatch
  3. 重新啟動執行個體。

    $ sudo reboot

限制

Kernel Live Patching 有以下限制:

  • 套用核心即時修補程式時,您無法執行休眠、使用進階偵錯工具 (例如 SystemTap、kprobes 和 eBPF 為基礎的工具),或存取 Kernel Live Patching 基礎架構所使用的 ftrace 輸出檔案。

常見問答集

如需有關 Amazon Linux 2 的 Kernel Live Patching 常見問答集,請參閱 Amazon Linux 2 Kernel Live Patching 常見問答集