

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AL2023 上的核心即時修補
<a name="live-patching"></a>

您可以使用適用於 AL2023 的 Kernel Live Patching，將特定安全性漏洞和關鍵錯誤修補程式套用至執行中的 Linux 核心，而不會重新啟動或中斷執行中的應用程式。此外，核心即時修補有助於改善應用程式的可用性，同時套用這些修正，直到系統可以重新啟動為止。

AWS 為 AL2023 發行兩種類型的核心即時修補程式：
+ **安全性更新** – 包含 Linux 常見漏洞和入侵程式 (CVE) 的更新。這些更新通常會使用 Amazon Linux 安全建議分級評定為 *important (重要)* 或 *critical (嚴重)*。它們通常對應到通用漏洞評分系統 (CVSS) 分數的 7 及以上。在某些情況下， AWS 可能會在指派 CVE 之前提供更新。在這些情況下，修補程式可能會顯示為錯誤修正。
+ **錯誤修正** – 包含與 CVE 無關的重大錯誤和穩定性問題修正。

AWS 提供 AL2023 核心版本的核心即時修補程式，最長可達發行後 3 個月。經過此期間後，您必須更新至更新的核心版本，才能繼續接收核心即時修補程式。

AL2023 核心即時修補程式會在現有 AL2023 軟體庫中以已簽署的 RPM 套件形式提供。這些修補程式可以透過現有 **DNF 套件管理員**工作流程安裝至個別執行個體。或者，它們可以使用 AWS Systems Manager 安裝在一組受管執行個體上。

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

**Topics**
+ [限制](#live-patching-limitations)
+ [支援的組態和先決條件](#live-patching-prereq)
+ [使用 Kernel Live Patching](#working-with-live-patching)

## 限制
<a name="live-patching-limitations"></a>

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

**注意**  
由於技術限制，即時修補無法解決某些問題。因此，這些修正不會在核心即時修補程式套件中運送，只會在原生核心套件更新中運送。您可以安裝原生核心套件，並照常[更新和重新啟動](https://docs.aws.amazon.com/linux/al2023/ug/updating.html)系統以啟用修補程式。

## 支援的組態和先決條件
<a name="live-patching-prereq"></a>

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

若要在 AL2023 上使用 Kernel Live Patching，您必須使用下列：
+ 64 位元 `x86_64` 或 `ARM64` 架構
+ 核心版本`6.1`或 `6.12`

### 政策要求
<a name="policy-requirements"></a>

若要從 AL2023 儲存庫下載套件，Amazon EC2 需要存取服務擁有的 Amazon S3 儲存貯體。如果您在環境中使用 Amazon S3 的 Amazon Virtual Private Cloud (VPC) 端點，請確定您的 VPC 端點政策允許存取這些公有儲存貯體。 Amazon S3 下表說明 Amazon EC2 存取 Kernel Live Patching 可能需要的 Amazon S3 儲存貯體。 Amazon EC2 


| S3 儲存貯體 ARN | 描述 | 
| --- | --- | 
|  arn：aws：s3：：al2023-repos-*region*-de612dc2/\$1  |  包含 AL2023 儲存庫的 Amazon S3 儲存貯體 AL2023   | 

## 使用 Kernel Live Patching
<a name="working-with-live-patching"></a>

您可以透過執行個體本身的命令列，在個別執行個體啟用和使用 Kernel Live Patching。或者，您也可以使用 AWS 系統管理員，在受管執行個體群組啟用和使用 Kernel Live Patching。

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

如需有關在受管執行個體群組上啟用並使用 Kernel Live Patching 的詳細資訊，請參閱 *AWS Systems Manager 使用者指南*中的[在 AL2023 執行個體上使用 Kernel Live Patching](https://docs.aws.amazon.com/systems-manager/latest/userguide/kernel-live-patching.html)。

**Topics**
+ [啟用 Kernel Live Patching](#live-patching-enable)
+ [檢視可用的核心即時修補程式](#live-patching-view-available)
+ [套用核心即時修補程式](#live-patching-apply)
+ [檢視套用的核心即時修補程式](#live-patching-view)
+ [停用核心即時修補](#live-patching-disable)

### 啟用 Kernel Live Patching
<a name="live-patching-enable"></a>

Kernel Live Patching 在 AL2023 上預設為停用狀態。若要使用即時修補，您必須安裝 Kernel Live Patching 的 **DNF** 外掛程式，並啟用即時修補功能。

**啟用 Kernel Live Patching**

1. 核心即時修補程式適用於搭載核心版本 `6.1` 的 AL2023。若要檢查您的核心版本，請執行下列命令。

   ```
   $ sudo dnf list kernel
   ```

1. 安裝 Kernel Live Patching 的 **DNF** 外掛程式。

   ```
   $ sudo dnf install -y kpatch-dnf
   ```

1. 啟用 Kernel Live Patching 的 **DNF** 外掛程式。

   ```
   $ sudo dnf kernel-livepatch -y auto
   ```

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

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

   當您啟用 Kernel Live Patching 時，系統會自動套用空白的核心即時修補程式 RPM。如果成功啟用核心即時修補，此命令會傳回包含初始空白核心即時修補 RPM （以及另一個 RPM 設定包含即時修補的 DNF 儲存庫） 的清單。

   ```
   $ sudo rpm -qa | grep kernel-livepatch
   kernel-livepatch-repo-s3-2023.7.20250428-0.amzn2023.noarch
   kernel-livepatch-6.1.134-150.224-1.0-0.amzn2023.x86_64
   ```

1. 安裝 **kpatch** 套件。

   ```
   $ sudo dnf install -y kpatch-runtime
   ```

1. 如果之前已安裝 **kpatch** 服務，請更新此服務。

   ```
   $ sudo dnf upgrade kpatch-runtime
   ```

1. 啟動 **kpatch** 服務。此服務會在初始化或開機時載入所有核心即時修補程式。

   ```
   $ sudo systemctl enable kpatch.service && sudo systemctl start kpatch.service
   ```

### 檢視可用的核心即時修補程式
<a name="live-patching-view-available"></a>

Amazon Linux 安全性警示會發佈至資訊 Amazon Linux 安全中心。如需有關 AL2023 安全性警示 (包括核心即時修補程式警示) 的詳細資訊，請參閱 [Amazon Linux 安全中心](https://alas.aws.amazon.com/alas2023.html)。核心即時修補程式的字首為 `ALASLIVEPATCH`。Amazon Linux 安全中心可能不會列出解決錯誤的核心即時修補程式。

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

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

```
$ sudo dnf updateinfo list
Last metadata expiration check: 1:06:23 ago on Mon 13 Feb 2023 09:28:19 PM UTC.
ALAS2LIVEPATCH-2021-123   important/Sec. kernel-livepatch-6.1.12-17.42-1.0-4.amzn2023.x86_64
ALAS2LIVEPATCH-2022-124   important/Sec. kernel-livepatch-6.1.12-17.42-1.0-3.amzn2023.x86_64
```

**列出 CVE 的所有可用核心即時修補程式**  
使用下列 命令。

```
$ sudo dnf updateinfo list cves
Last metadata expiration check: 1:07:26 ago on Mon 13 Feb 2023 09:28:19 PM UTC.
CVE-2022-0123    important/Sec. kernel-livepatch-6.1.12-17.42-1.0-4.amzn2023.x86_64
CVE-2022-3210    important/Sec. kernel-livepatch-6.1.12-17.42-1.0-3.amzn2023.x86_64
```

### 套用核心即時修補程式
<a name="live-patching-apply"></a>

您可以使用 **DNF** 套件管理員來套用核心即時修補程式，方法與套用定期更新相同。適用於 Kernel Live Patching 的 **DNF** 外掛程式會管理可供套用的核心即時修補程式。

**提示**  
我們建議您定期使用 Kernel Live Patching 更新核心，以確保它收到特定的重要和關鍵安全修正，直到系統可以重新啟動為止。也請檢查是否已為無法部署為即時修補程式的原生核心套件提供其他修正，並針對這些情況[更新和重新啟動](https://docs.aws.amazon.com/linux/al2023/ug/updating.html)核心更新。

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

**套用特定核心即時修補程式**

1. 使用 [檢視可用的核心即時修補程式](#live-patching-view-available) 中描述的其中一個命令取得核心即時修補程式版本。

1. 為您的 AL2023 核心套用核心即時修補程式。

   ```
   $ sudo dnf install kernel-livepatch-kernel_version-package_version.amzn2023.x86_64
   ```

   例如，下列命令會針對 AL2023 核心版本 `6.1.12-17.42` 套用核心即時修補程式。

   ```
   $ sudo dnf install kernel-livepatch-6.1.12-17.42-1.0-4.amzn2023.x86_64
   ```

**套用任何可用的核心即時修補程式，以及您的定期安全性更新**  
使用下列命令。

```
$ sudo dnf upgrade --security
```

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

**重要**  
套用核心即時修補程式後，核心版本不會更新。只有在執行個體重新啟動後，版本才會更新為新版本。
AL2023 核心會接收核心即時修補程式，為期三個月。經過此期間後，該核心版本不會發行任何新的核心即時修補程式。
若要在 3 個月後繼續接收核心即時修補程式，您必須重新啟動執行個體，才能轉換到新的核心版本。執行個體會在您更新核心後的 3 個月內繼續收到核心即時修補程式。
若要檢查核心版本的支援視窗，請執行下列命令：  

  ```
  $ sudo dnf kernel-livepatch support
  The current version of the Linux kernel you are running will no longer receive live patches after 2025-07-22.
  ```

### 檢視套用的核心即時修補程式
<a name="live-patching-view"></a>

**檢視套用的核心即時修補程式**  
使用下列命令。

```
$ sudo kpatch list
Loaded patch modules:
livepatch_CVE_2022_36946 [enabled]

Installed patch modules:
livepatch_CVE_2022_36946 (6.1.57-29.131.amzn2023.x86_64)
livepatch_CVE_2022_36946 (6.1.57-30.131.amzn2023.x86_64)
```

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

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

### 停用核心即時修補
<a name="live-patching-disable"></a>

如果您不再需要使用 Kernel Live Patching，您可以隨時停用它。
+ 停用使用 livepatches：

  1. 停用外掛程式：

     ```
     $ sudo dnf kernel-livepatch manual
     ```

  1. 停用 kpatch 服務：

     ```
     $ sudo systemctl disable --now kpatch.service
     ```
+ 完全移除 livepatch 工具：

  1. 移除外掛程式：

     ```
     $ sudo dnf remove kpatch-dnf
     ```

  1. 移除 kpatch-runtime：

     ```
     $ sudo dnf remove kpatch-runtime
     ```

  1. 移除任何已安裝的 livepatches：

     ```
     $ sudo dnf remove kernel-livepatch\*
     ```