本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
023 上的 Kernel Live AL2 补丁
您可以使用适用于 AL2 023 的 Kernel Live Patching 将安全漏洞和严重错误补丁应用于正在运行的 Linux 内核,而无需重新启动或中断正在运行的应用程序。此外,内核实时修补还有助于提高应用程序的可用性,同时保持基础设施安全可靠且处于最新状态。
AWS 为 AL2 023 发布了两种类型的内核实时补丁:
-
安全更新-包括 Linux 常见漏洞和漏洞的更新(CVE)。通常使用 Amazon Linux 安全公告评级将这些更新评为重要 或关键。它们通常映射到通用漏洞评分系统 (CVSS) 分数为 7 及更高。在某些情况下, AWS 可能会在分配之前提供CVE更新。在这些情况下,补丁可能会显示为错误修复。
-
错误修复-包括针对与之无关的关键错误和稳定性问题的修复CVEs。
AWS 在 AL2 023 内核版本发布后,为其提供最长 3 个月的内核实时补丁。三个月之后,您必须更新为更高的内核版本才能继续收到内核实时补丁。
AL2023 内核实时补丁作为已签名的RPM软件包在现有 AL2 023 存储库中提供。可以使用现有的DNF软件包管理器工作流程将补丁安装在单个实例上。或者,也可以使用 S AWS ystems Manager 将它们安装在一组托管实例上。
AL2023 上提供的内核实时补丁无需支付额外费用。
限制
在应用内核实时补丁时,无法执行休眠以及使用高级调试工具(例如 SystemTap
、kprobes
和基于 eBPF
的工具),或者访问内核实时修补基础设施使用的 ftrace
输出文件。
支持的配置和先决条件
运行 AL2 023 的 Amazon EC2 实例和本地虚拟机支持内核实时补丁。
要在 AL2 023 上使用 Kernel Live Patching,必须使用以下内容:
-
64 位
x86_64
或ARM64
架构 -
内核版本
6.1
策略要求
要从 AL2 023 存储库下载软件包,亚马逊EC2需要访问服务拥有的 Amazon S3 存储桶。如果您在环境中使用适用于 Amazon S3 的 Amazon Virtual Private Cloud (VPC) 终端节点,请确保您的VPC终端节点策略允许访问这些公有存储桶。下表描述了亚马逊EC2可能需要访问的 Amazon S3 存储桶,才能进行内核实时补丁。
S3 存储桶 ARN | 描述 |
---|---|
arn: aws: s3::: al2023-repos- |
包含 AL2 023 个存储库的亚马逊 S3 存储桶 |
使用内核实时修补
要在单独的实例上启用和使用内核实时修补,可在该实例本身上使用命令行。要在一组托管实例上启用和使用内核实时修补,可以使用 AWS Systems Manager。
以下部分介绍如何在单独的实例上使用命令行来启用和使用内核实时修补。
有关在一组托管实例上启用和使用内核实时补丁的更多信息,请参阅《用户指南》中的 “在 AL2 023 实例上使用内核实时补丁”AWS Systems Manager 。
启用内核实时修补
默认情况下,内核实时补丁在 AL2 023 处于禁用状态。要使用实时补丁,必须安装内核实时补丁DNF插件并启用实时补丁功能。
启用内核实时修补
-
内核实时补丁适用于内核版本
6.1
的 AL2 023。要检查内核版本,请运行以下命令。$
sudo dnf list kernel
-
安装内核实时补丁DNF插件。
$
sudo dnf install -y kpatch-dnf
-
启用内核实时补丁DNF插件。
$
sudo dnf kernel-livepatch -y auto
此命令还会RPM从已配置的存储库中安装最新版本的内核实时补丁。
-
要确认用于内核实时补丁的DNF插件已成功安装,请运行以下命令。
启用 Kernel Live Patching 时,会自动应用一个空的内核实时补丁RPM。如果成功启用了 Kernel Live Patching,则此命令将返回一个包含初始空内核实时补丁RPM的列表。
$
sudo rpm -qa | grep kernel-livepatch
dnf-plugin-kernel-livepatch-1.0-0.11.amzn2023.noarch kernel-livepatch-6.1.12-17.42-1.0-0.amzn2023.x86_64
-
安装 kpatch 软件包。
$
sudo dnf install -y kpatch-runtime
-
如果之前安装过 kpatch 服务,请更新它。
$
sudo dnf upgrade kpatch-runtime
-
启动 kpatch 服务。此服务在初始化或启动时会加载所有内核实时补丁。
$
sudo systemctl enable kpatch.service && sudo systemctl start kpatch.service
查看可用的内核实时补丁
Amazon Linux 安全警报会发布到 Amazon Linux 安全中心。有关 AL2 023 安全警报的更多信息,包括内核实时补丁警报,请参阅 Amazon Linux 安全中心ALASLIVEPATCH
。Amazon Linux 安全中心可能不会列出解决错误的内核实时补丁。
您还可以CVEs使用命令行查找可用的内核实时补丁以获取公告。
列出所有可用的内核实时补丁以获取公告
使用以下命令。
$
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
列出所有可用的内核实时补丁 CVEs
使用以下命令。
$
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
应用内核实时补丁
使用DNF软件包管理器应用内核实时补丁的方式与应用常规更新的方式相同。Kernel Live Patching 的DNF插件可以管理您应用的内核实时补丁,无需重新启动。
提示
建议您使用内核实时修补定期更新内核,以保持内核安全并处于最新状态。
您可以选择应用特定的内核实时补丁,或者应用任何可用的内核实时补丁以及定期安全更新。
应用特定内核实时补丁
-
使用 查看可用的内核实时补丁 中描述的命令之一获取内核实时补丁版本。
-
为您的 AL2 023 内核应用内核实时补丁。
$
sudo dnf install kernel-livepatch-
kernel_version
-package_version
.amzn2023.x86_64例如,以下命令应用了 AL2 0.23 内核版本的内核实时补丁
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 个月的内核实时补丁。之后,不会为该内核版本发布新的内核实时补丁。
-
要想在三个月后继续收到内核实时补丁,您必须重启实例以移至新的内核版本。更新后,实例将在接下来的三个月内继续收到内核实时补丁。
-
要查看内核版本的支持窗口,请运行以下命令。
$
sudo dnf kernel-livepatch support
查看应用的内核实时补丁
查看应用的内核实时补丁
使用以下命令。
$
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)
该命令返回已加载和安装的安全更新内核实时补丁的列表。下面是示例输出。
注意
单个内核实时补丁可以包含和安装多个实时补丁。
禁用内核实时修补
如果您不再需要使用内核实时修补,可以随时禁用它。
-
要禁用 livepatches,可执行以下操作:
-
禁用插件:
$
sudo dnf kernel-livepatch manual
-
禁用 kpatch 服务:
$
sudo systemctl disable --now kpatch.service
-
-
要完全移除 livepatch 工具,可执行以下操作:
-
移除插件:
$
sudo dnf remove kpatch-dnf
-
移除 kpatch-runtime:
$
sudo dnf remove kpatch-runtime
-
移除任何已安装的 livepatches:
$
sudo dnf remove kernel-livepatch\*
-