补丁基准规则在基于 Linux 的系统上的工作原理 - AWS Systems Manager

补丁基准规则在基于 Linux 的系统上的工作原理

对于 Linux 分发版,补丁基准中规则的工作方式因分发版类型的不同而有所差异。与 Windows Server 托管式节点上的补丁更新不同,将在每个节点上评估规则,以便考虑实例上配置的存储库。Patch Manager(AWS Systems Manager 中的一项工具)使用本机软件包管理器推动安装补丁基准批准的补丁。

对于报告修补程序严重性级别的基于 Linux 的操作系统类型,Patch Manager 将软件发布商报告的严重性级别用于更新通知或单个修补程序。Patch Manager 不会从第三方来源(例如常见漏洞评分系统 (CVSS)),或者国家漏洞数据库 (NVD) 发布的指标中获取严重性级别。

补丁基准规则在 Amazon Linux 2 和 Amazon Linux 2023 上的工作原理

注意

Amazon Linux 2023(AL2023)使用版本控制的存储库,这些存储库可以通过一个或多个系统设置锁定到特定版本。对于 AL2023 EC2 实例的所有修补操作,Patch Manager 使用最新的存储库版本,与系统配置无关。有关更多信息,请参阅《Amazon Linux 2023 User Guide》中的 Deterministic upgrades through versioned repositories

在 Amazon Linux 2 和 Amazon Linux 2023 上,补丁选择过程如下:

  1. 在托管节点上,YUM 库(Amazon Linux 2)或 DNF 库(Amazon Linux 2023)将访问每个已配置存储库的 updateinfo.xml 文件。

    如果未找到 updateinfo.xml 文件,是否安装补丁将取决于包括非安全性更新自动批准设置。例如,如果允许非安全更新,则会在自动批准时间到达时安装这些更新。

  2. updateinfo.xml 中的每个更新通知都包含几个属性,它们表示通知中的软件包的属性,如下表所述。

    更新通知属性
    属性 描述
    type

    对应于补丁基准的 PatchFilter 数据类型中 Classification 键属性的值。表示更新通知中包含的软件包的类型。

    可以使用 AWS CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    severity

    对应于补丁基准的 PatchFilter 数据类型中 Severity 键属性的值。表示更新通知中包含的软件包的严重性。通常只适用于安全性更新通知。

    可以使用 AWS CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    update_id

    表示建议 ID,例如 ALAS-2017-867。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用建议 ID。

    重点

    包含有关更新通知的其他信息,例如 CVE ID (格式:CVE-2017-1234567)。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用 CVE ID。

    已更新

    对应于补丁基准中的 ApproveAfterDays。表示更新通知中包含的软件包的发行日期(更新的日期)。将当前时间戳与此属性的值比较并配合 ApproveAfterDays 可用来确定补丁是否已获得部署批准。

    有关已批准的补丁和已拒绝的补丁列表的已接受格式的信息,请参阅 已批准补丁和已拒绝补丁列表的程序包名称格式

  3. 托管式节点的产品由 SSM Agent 确定。此属性对应于补丁基准的 PatchFilter 数据类型中 Product 键属性的值。

  4. 根据以下准则为更新选择程序包。

    安全性选项 补丁选择

    AWS 提供的预定义默认补丁基准和选中包括非安全性更新复选框的自定义补丁基准

    对于 updateinfo.xml 中的每个更新通知,补丁基准用作筛选器,只允许更新包含符合条件的软件包。如果应用补丁基准定义后有多个软件包适用,则使用最新版本。

    对于 Amazon Linux 2,此工作流程的等效 yum 命令为:

    sudo yum update-minimal --sec-severity=Critical,Important --bugfix -y

    对于 Amazon Linux 2023,此工作流程的等效 dnf 命令为:

    sudo dnf upgrade-minimal --sec-severity=Critical --sec-severity=Important --bugfix -y

    选中包括非安全性更新复选框,并且严重性列表为 [Critical, Important] ,分类列表为 [Security, Bugfix] 的自定义补丁基准

    除了应用已从 updateinfo.xml 中选择的安全性更新,Patch Manager 还会应用符合补丁筛选规则的非安全性更新。

    对于 Amazon Linux 2,此工作流程的等效 yum 命令为:

    sudo yum update --security --sec-severity=Critical,Important --bugfix -y

    对于 Amazon Linux 2023,此工作流程的等效 dnf 命令为:

    sudo dnf upgrade --security --sec-severity=Critical --sec-severity=Important --bugfix -y
    注意

    如果您在 Patch Manager 之外运行这些 yumdnf 命令,则会使用不同的名称安装新软件包,来替换现已过时软件包。但是,这些软件包无法通过等效的 Patch Manager 操作安装。

有关补丁合规性状态值的信息,请参阅 补丁合规性状态值

补丁基准规则在 Debian Server 上的工作原理

在 Debian Server上,补丁基准服务提供对优先级部分字段的筛选。这些字段通常存在于所有 Debian Server 软件包中。为确定补丁基准是否选择了某个补丁,Patch Manager 执行以下操作:

  1. 在 Debian Server 系统上,运行等效于 sudo apt-get update 的程序刷新可用软件包列表。不配置存储库,从 sources 列表中配置的存储库提取数据。

  2. 如果某个更新可用于 python3-apt (一个 libapt 的 Python 库接口),则将升级到最新版本。(即使您没有选择包括非安全更新选项,该非安全软件包也会更新。)

  3. 接下来将应用 GlobalFiltersApprovalRulesApprovedPatchesRejectedPatches 列表。

    注意

    由于无法可靠地确定 Debian Server 更新程序包的发布日期,因此该操作系统不支持自动审批选项。

    但是,批准规则也取决于在创建或上次更新补丁基准时是否选中包括非安全更新复选框。

    如果不包含非安全更新,则应用一条隐式规则,以便只选择在安全存储库中有升级的软件包。对于每个软件包,软件包的候选版本(通常为最新版本)必须包含在安全存储库中。在这种情况下,对于 Debian Server,补丁候选版本仅限于以下存储库中包含的补丁:

    这些存储库的命名如下:

    • Debian Server 11:debian-security bullseye

    • Debian Server 12:debian-security bookworm

    如果包含非安全更新,也会考虑来自其他存储库的补丁。

    有关已批准的补丁和已拒绝的补丁列表的已接受格式的信息,请参阅 已批准补丁和已拒绝补丁列表的程序包名称格式

要查看 PrioritySection 字段的内容,运行以下 aptitude 命令:

注意

您需要先在 Debian Server 系统上安装 Aptitude。

aptitude search -F '%p %P %s %t %V#' '~U'

在对此命令的响应中,按以下格式报告所有可升级软件包:

name, priority, section, archive, candidate version

有关补丁合规性状态值的信息,请参阅 补丁合规性状态值

补丁基准规则在 macOS 上的工作原理

在 macOS 上,补丁选择过程如下:

  1. 在托管式节点上,Patch Manager 访问 InstallHistory.plist 文件的已解析内容并标识软件包名称和版本。

    有关解析过程的详细信息,请参阅 如何安装补丁 中的 macOS 选项卡。

  2. 托管式节点的产品由 SSM Agent 确定。此属性对应于补丁基准的 PatchFilter 数据类型中 Product 键属性的值。

  3. 根据以下准则为更新选择程序包。

    安全性选项 补丁选择

    AWS 提供的预定义默认补丁基准和选中包括非安全性更新复选框的自定义补丁基准

    对于每个可用软件包更新,补丁基准用作筛选器,只允许更新包含符合条件的软件包。如果应用补丁基准定义后有多个软件包适用,则使用最新版本。

    选中包括非安全性更新复选框的自定义补丁基准

    除了应用使用 InstallHistory.plist 标识出来的安全性更新,Patch Manager 还会应用符合补丁筛选规则的非安全性更新。

有关补丁合规性状态值的信息,请参阅 补丁合规性状态值

补丁基准规则在 Oracle Linux 上的工作原理

在 Oracle Linux 上,补丁选择过程如下:

  1. 在托管式节点上,YUM 库可访问每个已配置存储库的 updateinfo.xml 文件。

    注意

    如果存储库不是由 Oracle 管理的,则可能不存在 updateinfo.xml 文件。如果未找到 updateinfo.xml,是否安装补丁将取决于包括非安全性更新自动批准设置。例如,如果允许非安全更新,则会在自动批准时间到达时安装这些更新。

  2. updateinfo.xml 中的每个更新通知都包含几个属性,它们表示通知中的软件包的属性,如下表所述。

    更新通知属性
    属性 描述
    type

    对应于补丁基准的 PatchFilter 数据类型中 Classification 键属性的值。表示更新通知中包含的软件包的类型。

    可以使用 AWS CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    severity

    对应于补丁基准的 PatchFilter 数据类型中 Severity 键属性的值。表示更新通知中包含的软件包的严重性。通常只适用于安全性更新通知。

    可以使用 AWS CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    update_id

    表示建议 ID,例如 CVE-2019-17055。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用建议 ID。

    重点

    包含有关更新通知的其他信息,例如 CVE ID(格式:CVE-2019-17055)或 Bugzilla ID(格式:1463241)。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用 CVE ID 和 Bugzilla ID。

    已更新

    对应于补丁基准中的 ApproveAfterDays。表示更新通知中包含的软件包的发行日期(更新的日期)。将当前时间戳与此属性的值比较并配合 ApproveAfterDays 可用来确定补丁是否已获得部署批准。

    有关已批准的补丁和已拒绝的补丁列表的已接受格式的信息,请参阅 已批准补丁和已拒绝补丁列表的程序包名称格式

  3. 托管式节点的产品由 SSM Agent 确定。此属性对应于补丁基准的 PatchFilter 数据类型中 Product 键属性的值。

  4. 根据以下准则为更新选择程序包。

    安全性选项 补丁选择

    AWS 提供的预定义默认补丁基准和选中包括非安全性更新复选框的自定义补丁基准

    对于 updateinfo.xml 中的每个更新通知,补丁基准用作筛选器,只允许更新包含符合条件的软件包。如果应用补丁基准定义后有多个软件包适用,则使用最新版本。

    对于版本 7 托管式节点,此工作流的等效 yum 命令为:

    sudo yum update-minimal --sec-severity=Important,Moderate --bugfix -y

    对于版本 8 和 9 托管式节点,此工作流的等效 DNF 命令为:

    sudo dnf upgrade-minimal --security --sec-severity=Moderate --sec-severity=Important

    选中包括非安全性更新复选框,并且严重性列表为 [Critical, Important],分类列表为 [Security, Bugfix] 的自定义补丁基准

    除了应用已从 updateinfo.xml 中选择的安全性更新,Patch Manager 还会应用符合补丁筛选规则的非安全性更新。

    对于版本 7 托管式节点,此工作流的等效 yum 命令为:

    sudo yum update --security --sec-severity=Critical,Important --bugfix -y

    对于版本 8 和 9 托管式节点,此工作流的等效 DNF 命令为:

    sudo dnf upgrade --security --sec-severity=Critical, --sec-severity=Important --bugfix y
    注意

    如果您在 Patch Manager 之外运行这些 yumdnf 命令,则会使用不同的名称安装新软件包,来替换现已过时软件包。但是,这些软件包无法通过等效的 Patch Manager 操作安装。

有关补丁合规性状态值的信息,请参阅 补丁合规性状态值

补丁基准规则在 AlmaLinux、RHEL 和 Rocky Linux 上的工作原理

在 AlmaLinux、Red Hat Enterprise Linux(RHEL)和 Rocky Linux 上,补丁选择过程如下:

  1. 在托管式节点上,YUM 库 (RHEL 7) 或 DNF 库(AlmaLinux 8 和 9、RHEL 8、9 和 10 以及 Rocky Linux 8 和 9)访问每个已配置存储库的 updateinfo.xml 文件。

    注意

    如果存储库不是由 Red Hat 管理的,可能不存在 updateinfo.xml 文件。如果找不到 updateinfo.xml,则不会应用任何补丁。

  2. updateinfo.xml 中的每个更新通知都包含几个属性,它们表示通知中的软件包的属性,如下表所述。

    更新通知属性
    属性 描述
    type

    对应于补丁基准的 PatchFilter 数据类型中 Classification 键属性的值。表示更新通知中包含的软件包的类型。

    可以使用 AWS CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    severity

    对应于补丁基准的 PatchFilter 数据类型中 Severity 键属性的值。表示更新通知中包含的软件包的严重性。通常只适用于安全性更新通知。

    可以使用 AWS CLI 命令 describe-patch-properties 或 API 操作 DescribePatchProperties 来查看受支持值的列表。您也可以在 Systems Manager 控制台中创建补丁基准页面或编辑补丁基准页面中的审批规则区中查看列表。

    update_id

    表示建议 ID,例如 RHSA-2017:0864。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用建议 ID。

    重点

    包含有关更新通知的其他信息,例如 CVE ID (格式:CVE-2017-1000371) 或 Bugzilla ID (格式:1463241)。补丁基准中的 ApprovedPatchesRejectedPatches 属性可以使用 CVE ID 和 Bugzilla ID。

    已更新

    对应于补丁基准中的 ApproveAfterDays。表示更新通知中包含的软件包的发行日期(更新的日期)。将当前时间戳与此属性的值比较并配合 ApproveAfterDays 可用来确定补丁是否已获得部署批准。

    有关已批准的补丁和已拒绝的补丁列表的已接受格式的信息,请参阅 已批准补丁和已拒绝补丁列表的程序包名称格式

  3. 托管式节点的产品由 SSM Agent 确定。此属性对应于补丁基准的 PatchFilter 数据类型中 Product 键属性的值。

  4. 根据以下准则为更新选择程序包。

    安全性选项 补丁选择

    AWS 提供的预定义默认补丁基准和在任何规则中选中包括非安全性更新复选框的自定义补丁基准

    对于 updateinfo.xml 中的每个更新通知,补丁基准用作筛选器,只允许更新包含符合条件的软件包。如果应用补丁基准定义后有多个软件包适用,则使用最新版本。

    对于 RHEL 7,此工作流程的等效 Yum 命令为:

    sudo yum update-minimal --sec-severity=Critical,Important --bugfix -y

    对于 AlmaLinux 8 和 9、RHEL 8、9 和 10 以及 Rocky Linux 8 和 9,此工作流的等效 DNF 命令为:

    sudo dnf upgrade-minimal --sec-severity=Critical --sec-severity=Important --bugfix -y

    选中包括非安全性更新复选框,并且严重性列表为 [Critical, Important],分类列表为 [Security, Bugfix] 的自定义补丁基准

    除了应用已从 updateinfo.xml 中选择的安全性更新,Patch Manager 还会应用符合补丁筛选规则的非安全性更新。

    对于 RHEL 7,此工作流程的等效 Yum 命令为:

    sudo yum update --security --sec-severity=Critical,Important --bugfix -y

    对于 AlmaLinux 8 和 9、RHEL 8、9 和 10 以及 Rocky Linux 8 和 9,此工作流的等效 DNF 命令为:

    sudo dnf upgrade --sec-severity=Critical --sec-severity=Important --bugfix -y
    注意

    如果您在 Patch Manager 之外运行这些 yumdnf 命令,则会使用不同的名称安装新软件包,来替换现已过时软件包。但是,这些软件包无法通过等效的 Patch Manager 操作安装。

有关补丁合规性状态值的信息,请参阅 补丁合规性状态值

补丁基准规则在 Ubuntu Server 上的工作原理

在 Ubuntu Server上,补丁基准服务提供对 Priority (优先级)Section (部分) 字段的筛选。这些字段通常存在于所有 Ubuntu Server 软件包中。为确定补丁基准是否选择了某个补丁,Patch Manager 执行以下操作:

  1. 在 Ubuntu Server 系统上,运行等效于 sudo apt-get update 的程序刷新可用软件包列表。不配置存储库,从 sources 列表中配置的存储库提取数据。

  2. 如果某个更新可用于 python3-apt (一个 libapt 的 Python 库接口),则将升级到最新版本。(即使您没有选择包括非安全更新选项,该非安全软件包也会更新。)

  3. 接下来将应用 GlobalFiltersApprovalRulesApprovedPatchesRejectedPatches 列表。

    注意

    由于无法可靠地确定 Ubuntu Server 的更新程序包的发布日期,因此此操作系统不支持自动批准选项。

    但是,批准规则也取决于在创建或上次更新补丁基准时是否选中包括非安全更新复选框。

    如果不包含非安全更新,则应用一条隐式规则,以便只选择在安全存储库中有升级的软件包。对于每个软件包,软件包的候选版本(通常为最新版本)必须包含在安全存储库中。在这种情况下,对于 Ubuntu Server,补丁候选版本仅限于以下存储库中包含的补丁:

    • Ubuntu Server 16.04 LTS:xenial-security

    • Ubuntu Server 18.04 LTS:bionic-security

    • Ubuntu Server 20.04 LTS:focal-security

    • Ubuntu Server 22.04 LTS:jammy-security

    • Ubuntu Server 24.04 LTS (noble-security)

    • Ubuntu Server 25.04 (plucky-security)

    如果包含非安全更新,也会考虑来自其他存储库的补丁。

    有关已批准的补丁和已拒绝的补丁列表的已接受格式的信息,请参阅 已批准补丁和已拒绝补丁列表的程序包名称格式

要查看 PrioritySection 字段的内容,运行以下 aptitude 命令:

注意

您需要先在 Ubuntu Server 16 系统上安装 Aptitude。

aptitude search -F '%p %P %s %t %V#' '~U'

在对此命令的响应中,按以下格式报告所有可升级软件包:

name, priority, section, archive, candidate version

有关补丁合规性状态值的信息,请参阅 补丁合规性状态值