Amazon Linux 2 上的内核实时修补 - Amazon Elastic Compute Cloud

Amazon Linux 2 上的内核实时修补

借助适用于 Amazon Linux 2 的内核实时修补,您可以将安全漏洞和严重错误补丁应用于正在运行的 Linux 内核,而无需重启或中断正在运行的应用程序。您可从改进的服务和应用程序可用性中受益,同时保持基础设施的安全和最新状态。

有关 Amazon Linux 2023 的内核实时补丁的信息,请参阅《AL2023 User Guide》中的 Kernel Live Patching on AL2023

AWS 发布了两种适用于 Amazon Linux 2 的内核实时修补程序:

  • 安全更新 - 包括 Linux 常见漏洞和风险(CVE)的更新。通常使用 Amazon Linux 安全公告评级将这些更新评为重要关键。它们通常对应于通用漏洞评分系统 (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 上提供内核实时修补功能,无需额外费用。

支持的配置和先决条件

运行 Amazon Linux 2 的 Amazon EC2 实例和本地虚拟机支持内核实时修补。

要在 Amazon Linux 2 上使用内核实时修补,必须使用:

  • x86_64 架构的内核版本 4.145.10

  • ARM64 架构的内核版本 5.10

策略要求

要从 Amazon Linux 存储库下载程序包,Amazon Elastic Compute Cloud 需要访问服务拥有的 Amazon S3 存储桶。如果您在环境中使用 Amazon S3 的 Amazon Virtual Private Cloud(VPC)端点,则需要确保您的 VPC 端点策略允许访问这些公有存储桶。

此表介绍了 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 存储桶的访问权。使用您组织的相应值替换 regionprincipal-org-idresource-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/*" ] } ] }

使用内核实时修补

对于单个实例,您可以在实例本身上使用命令行启用并使用内核实时修补,或者使用 AWS Systems Manager 在一组托管实例上启用和使用内核实时修补。

以下各节说明如何使用命令行在单个实例上启用并使用内核实时修补。

有关在一组托管实例上启用并使用内核实时修补的更多信息,请参阅 AWS Systems Manager 用户指南中的在 Amazon Linux 2 实例上使用内核实时修补

启用内核实时修补

默认情况下,在 Amazon Linux 2 上内核实时修补处于禁用状态。要使用实时修补,必须为内核实时修补安装 yum 插件,并启用实时修补功能。

先决条件

内核实时修补需要 binutils。如果尚未安装 binutils,请使用以下命令进行安装:

$ sudo yum install binutils
启用内核实时修补
  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. 为内核实时修补安装 yum 插件。

    $ sudo yum install -y yum-plugin-kernel-livepatch
  4. 为内核实时修补启用 yum 插件。

    $ sudo yum kernel-livepatch enable -y

    此命令还会从配置的存储库安装最新版本的内核实时修补程序 RPM。

  5. 要确认用于内核实时修补的 yum 插件已成功安装,请运行以下命令。

    $ rpm -qa | grep kernel-livepatch

    启用内核实时修补时,将自动应用空的内核实时修补程序 RPM。如果成功启用了内核实时修补,则此命令将返回一个列表,其中包括初始的空内核实时补丁 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 额外资源库中启用内核实时修补主题。本主题包含内核实时修补程序。

    $ 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 程序包管理器应用内核实时修补程序,方式与应用定期更新相同。用于内核实时修补功能的 yum 插件可管理要应用的内核实时修补程序,无需重启。

提示

我们建议您使用内核实时修补功能定期更新内核,以确保内核保持安全和最新状态。

您可以选择应用特定的内核实时修补程序,或者应用任何可用的内核实时修补程序以及定期安全更新。

应用特定内核实时补丁
  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)
注意

单个内核实时补丁可以包含和安装多个实时补丁。

禁用内核实时修补

如果您不再需要使用内核实时修补,可以随时禁用它。

禁用内核实时修补功能
  1. 删除应用的内核实时修补程序的 RPM 软件包。

    $ sudo yum kernel-livepatch disable
  2. 卸载内核实时修补功能的 yum 插件。

    $ sudo yum remove yum-plugin-kernel-livepatch
  3. 重启实例。

    $ sudo reboot

限制

内核实时修补具有以下限制:

  • 在应用内核实时修补程序时,无法执行休眠、使用高级调试工具(例如 SystemTap、kprobes 和基于 eBPF 的工具)或者访问内核实时修补基础设施使用的 ftrace 输出文件。

常见问题

有关 Amazon Linux 2 的内核实时修补的常见问题,请参阅 Amazon Linux 2 内核实时修补常见问题