Amazon Linux 2 上的内核实时修补 - Amazon Elastic Compute Cloud
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon Linux 2 上的内核实时修补

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

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 上使用内核实时修补,必须使用:

  • 一个 64 位 (x86_64) 架构,该架构由 Amazon Linux 2 支持

  • 内核版本为 4.14.165-131.185 或更高版本的 Amazon Linux 2

注意

不支持 64 位 ARM (arm64) 架构。

使用内核实时修补

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

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

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

启用内核实时修补

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

先决条件

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

$ sudo yum install binutils

启用内核实时修补

  1. 内核实时修补程序适用于内核版本为 4.14.165-131.185 或更高版本的 Amazon Linux 2。要检查内核版本,请运行以下命令。

    $ 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。

  6. 更新并启动 kpatch 服务。此服务在初始化或启动时会加载所有内核实时修补程序。

    $ sudo yum update kpatch-runtime
    $ sudo systemctl enable kpatch.service
  7. 配置 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-4.14.165-133.209-1.0-3.amzn2.x86_64 ALAS2LIVEPATCH-2020-005 medium/Sec. kernel-livepatch-4.14.165-133.209-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-4.14.165-133.209-1.0-3.amzn2.x86_64 CVE-2019-20096 important/Sec. kernel-livepatch-4.14.165-133.209-1.0-3.amzn2.x86_64 CVE-2020-8648 medium/Sec. kernel-livepatch-4.14.165-133.209-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 内核版本 4.14.165-133.209 应用内核实时修补程序。

    $ sudo yum install kernel-livepatch-4.14.165-133.209-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 (4.14.165-133.209.amzn2.x86_64) livepatch_CVE_2019_20096 (4.14.165-133.209.amzn2.x86_64) livepatch_CVE_2020_8648 (4.14.165-133.209.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 输出文件。

  • 不支持具有 64 位 ARM (arm64) 架构的 Amazon Linux 2 实例。

常见问题

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