使用 Amazon Inspector 扫描 Amazon EC2 实例 - Amazon Inspector
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon Inspector 扫描 Amazon EC2 实例

适用于 Amazon EC2 的 Amazon Inspector 无代理扫描目前为预览版。您对无代理 Amazon EC2 扫描功能的使用受 Amazon 服务条款第 2 部分(“测试版和预览”)的约束。

Amazon Inspector EC2 扫描会从 EC2 实例提取元数据,然后将这些元数据与从安全公告中收集的规则进行比较,以得出调查发现。Amazon Inspector 会扫描实例中是否存在程序包漏洞和网络可访问性问题。有关针对这些问题得出的调查发现类型的信息,请参阅Amazon Inspector 中的调查发现类型

Amazon Inspector 每 24 小时执行一次网络可访问性扫描,而程序包漏洞扫描的执行节奏各不相同,具体取决于与实例关联的扫描方法。

扫描方法

程序包漏洞扫描可以使用基于代理无代理的扫描方法执行。这些扫描方法决定了 Amazon Inspector 如何以及何时从 EC2 实例收集软件清单,以进行程序包漏洞扫描。基于代理的方法依赖 SSM 代理来收集软件清单,而无代理方法使用 Amazon EBS 快照(而不是代理)。

Amazon Inspector 使用的扫描方法取决于您账户的扫描模式设置。有关更多信息,请参阅管理扫描模式

要激活 Amazon EC2 扫描,请参阅激活扫描类型

基于代理的扫描

在所有符合条件的实例上,我们使用 SSM 代理持续执行基于代理的扫描。对于基于代理的扫描,Amazon Inspector 使用 SSM 关联以及通过这些关联安装的插件从实例收集软件清单。除了对操作系统程序包进行程序包漏洞扫描外,Amazon Inspector 基于代理的扫描还可以通过Amazon EC2 Linux 实例的 Amazon Inspector 深度检查,检测基于 Linux 的实例中的应用程序编程语言包是否存在程序包漏洞。

以下过程说明了 Amazon Inspector 如何使用 SSM 收集清单和执行基于代理的扫描:

  1. Amazon Inspector 会在您的账户中创建 SSM 关联,以便从实例中收集清单。对于某些实例类型(Windows 和 Linux),这些关联会在单个实例上安装插件以收集清单。

  2. Amazon Inspector 使用 SSM 从实例中提取程序包清单。

  3. Amazon Inspector 会评估提取的清单,并针对检测到的任何漏洞生成调查发现。

符合条件的实例

如果实例满足以下条件,Amazon Inspector 将使用基于代理的方法对其进行扫描:

  • 该实例具有支持的操作系统。有关支持的操作系统列表,请参阅支持的操作系统:Amazon EC2 扫描基于代理的扫描支持列。

  • 未使用 Amazon Inspector EC2 排除标签将该实例排除在扫描范围之外。

  • 该实例由 SSM 托管。有关验证和配置该代理的说明,请参阅配置 SSM 代理

基于代理的扫描行为

使用基于代理的扫描方法时,在以下情况下,Amazon Inspector 会对 EC2 实例启动新的漏洞扫描:

  • 启动新 EC2 实例时。

  • 在现有 EC2 实例(Linux 和 Mac)上安装新软件时。

  • Amazon Inspector 在其数据库中添加新的常见脆弱性和风险 (CVE) 项目,且该 CVE 与您的 EC2 实例(Linux 和 Mac)相关时。

初始扫描完成后,Amazon Inspector 会更新 EC2 实例的上次扫描时间字段。此后,当 Amazon Inspector 评估 SSM 清单时(默认为每 30 分钟一次),或者由于影响实例的新 CVE 被添加到 Amazon Inspector 数据库而需要重新扫描该实例时,上次扫描时间字段就会更新。

您可以通过账户管理页面的“实例”选项卡或通过 ListCoverage 命令查看上次扫描 EC2 实例是否存在漏洞的时间。

配置 SSM 代理

为了让 Amazon Inspector 检测到使用基于代理的扫描方法的 Amazon EC2 实例的软件漏洞,该实例必须是 Amazon EC2 Systems Manager(SSM)中的托管实例。SSM 托管实例已安装并运行了 SSM 代理,SSM 有权管理该实例。如果您已经在使用 SSM 来管理实例,那么无需执行其他步骤,即可开始基于代理的扫描。

使用某些亚马逊机器映像 (AMI) 创建的 EC2 实例默认安装了 SSM 代理。有关更多信息,请参阅 Amazon Systems Manager 用户指南中的关于 SSM 代理。但是,即使已经安装了 SSM 代理,您也可能需要手动激活 SSM 代理,并授予 SSM 管理实例的权限。

以下步骤介绍了如何使用 IAM 实例配置文件将 Amazon EC2 实例配置为托管实例。这些步骤还提供了指向 Amazon Systems Manager 用户指南中更多详细信息的链接。

附加实例配置文件时,建议使用 AmazonSSMManagedInstanceCore 策略。该策略拥有 Amazon Inspector EC2 扫描所需的所有权限。

注意

您还可以使用 SSM 默认主机管理配置,自动通过 SSM 管理所有 EC2 实例,而无需使用 IAM 实例配置文件。有关更多信息,请参阅默认主机管理配置

为 Amazon EC2 实例配置 SSM
  1. 如果操作系统供应商未安装 SSM 代理,请先安装。有关更多信息,请参阅使用 SSM 代理

  2. Amazon CLI 使用验证 SSM 代理是否正在运行。有关更多信息,请参阅检查 SSM 代理状态并启动代理

  3. 向 SSM 授予管理实例的权限。您可以通过创建 IAM 实例配置文件并将其附加到实例来授予相应权限。我们建议使用 AmazonSSMManagedInstanceCore 策略,因为该策略具有 Amazon Inspector 扫描所需的 SSM Distributor、SSM Inventory 和 SSM State Manager 权限。有关创建具有这些权限的实例配置文件并将其附加到实例的说明,请参阅为 Systems Manager 配置实例权限

  4. (可选)激活 SSM 代理的自动更新。有关更多信息,请参阅自动更新 SSM 代理

  5. (可选)将 Systems Manager 配置为使用 Amazon Virtual Private Cloud(Amazon VPC)端点。有关更多信息,请参阅创建 Amazon VPC 端点

重要

Amazon Inspector 需要您的账户中具有 Systems Manager State Manager 关联才能收集软件应用程序清单。如果不存在相应关联,Amazon Inspector 会自动创建一个名为 InspectorInventoryCollection-do-not-delete 的关联。

Amazon Inspector 还需要资源数据同步,如果不存在相应同步,则会自动创建一个名为 InspectorResourceDataSync-do-not-delete 的同步。有关更多信息,请参阅 Amazon Systems Manager 用户指南中的配置清单的资源数据同步。每个账户可在每个区域拥有一定数量的资源数据同步。有关更多信息,请参阅 SSM 端点和配额中资源数据同步的最大数量( Amazon Web Services 账户 每个区域)。如果您已达到此最大值,则需要删除一个资源数据同步,请参阅管理资源数据同步

为扫描创建的 SSM 资源

Amazon Inspector 需要您的账户中有大量 SSM 资源才能运行 Amazon EC2 扫描。以下资源是在您首次激活 Amazon Inspector EC2 扫描时创建的:

注意

如果在为您的账户激活 Amazon Inspector Amazon EC2 扫描时删除了这些 SSM 资源中的任何一个,Amazon Inspector 将在下一个扫描间隔尝试重新创建它们。

InspectorInventoryCollection-do-not-delete

这是一个 Systems Manager State Manager (SSM) 关联,Amazon Inspector 使用它从您的 Amazon EC2 实例收集软件应用程序清单。如果您的账户已经有用于从 InstanceIds* 中收集清单的 SSM 关联,则 Amazon Inspector 将使用该关联而不是自己创建。

InspectorResourceDataSync-do-not-delete

这是一个资源数据同步,Amazon Inspector 使用它将收集的清单数据从 Amazon EC2 实例发送到 Amazon Inspector 拥有的 Amazon S3 存储桶。有关更多信息,请参阅 Amazon Systems Manager 用户指南中的配置清单的资源数据同步

InspectorDistributor-do-not-delete

这是 Amazon Inspector 用于扫描 Windows 实例的 SSM 关联。此关联会在 Windows 实例上安装 Amazon Inspector SSM 插件。如果插件文件被无意中删除,则此关联将在下一个关联间隔重新安装它。

InvokeInspectorSsmPlugin-do-not-delete

这是 Amazon Inspector 用于扫描 Windows 实例的 SSM 关联。此关联使 Amazon Inspector 可以使用该插件启动扫描,您也可以使用它来设置扫描 Windows 实例的自定义间隔。有关更多信息,请参阅为 Windows 实例扫描设置自定义计划

InspectorLinuxDistributor-do-not-delete

这是 Amazon Inspector 用于亚马逊 EC2 Linux 深度检查的 SSM 关联。此关联会在 Linux 实例上安装 Amazon Inspector SSM 插件。

InvokeInspectorLinuxSsmPlugin-do-not-delete

这是亚马逊 Inspector 用于亚马逊 EC2 Linux 深度检查的 SSM 关联。此关联使 Amazon Inspector 可以使用该插件启动扫描。

注意

当你停用 Amazon Inspector Amazon EC2 扫描或深度检查时,所有 SSM 资源都将自动从相应的 Linux 主机上卸载。

无代理扫描

当您的账户处于混合扫描模式时(包括基于代理的扫描和无代理扫描),Amazon Inspector 会对符合条件的实例使用无代理扫描方法。对于无代理扫描,Amazon Inspector 使用 EBS 快照从您的实例收集软件清单。它会对使用无代理方法扫描的实例进行扫描,看其是否存在操作系统程序包和应用程序编程语言包漏洞。

注意

扫描 Linux 实例是否存在应用程序编程语言包漏洞时,无代理方法会扫描所有可用路径,而基于代理的扫描仅扫描默认路径和您在Amazon EC2 Linux 实例的 Amazon Inspector 深度检查中指定的其他路径。这可能会导致同一个实例有不同的调查发现,具体取决于它是使用基于代理的方法还是使用无代理方法进行扫描。

以下过程说明了 Amazon Inspector 如何使用 EBS 快照收集清单和执行无代理扫描:

  1. Amazon Inspector 会为附加到实例的所有卷创建一个 EBS 快照。当 Amazon Inspector 使用它时,快照存储在您的账户中,会使用 InspectorScan 标签键进行标记,并使用唯一的扫描 ID 作为标签值。

  2. Amazon Inspector 使用 EBS 直接 API 从快照中检索数据,并评估它们是否存在漏洞。针对任何检测到的漏洞,都会生成调查发现。

  3. Amazon Inspector 会删除它在您的账户中创建的 EBS 快照。

符合条件的实例

如果实例满足以下条件,Amazon Inspector 将使用无代理方法对其进行扫描:

  • 该实例具有支持的操作系统。有关支持的操作系统列表,请参阅支持的操作系统:Amazon EC2 扫描基于代理的扫描支持列。

  • 未使用 Amazon Inspector EC2 排除标签将该实例排除在扫描范围之外。

  • 该实例的状态为Unmanaged EC2 instanceStale inventory、或No inventory

  • 该实例由 EBS 支持,具有以下文件系统格式之一:

    • ext3

    • ext4

    • xfs

无代理扫描行为

当您的账户配置为混合扫描时,Amazon Inspector 会每 24 小时对符合条件的实例执行一次无代理扫描。Amazon Inspector 每小时都会检测和扫描新的符合条件的实例,其中包括没有 SSM 代理的新实例,或者状态已更改为 SSM_UNMANAGED 的现有实例。

每当 Amazon Inspector 在无代理扫描后扫描从实例提取的快照时,都会更新 Amazon EC2 实例的上次扫描时间字段。

您可以通过账户管理页面的“实例”选项卡或通过 ListCoverage 命令查看上次扫描 EC2 实例是否存在漏洞的时间。

管理扫描模式

EC2 扫描模式决定了 Amazon Inspector 在您的账户中执行 EC2 扫描时将使用哪些扫描方法。您可以在常规设置下的 EC2 扫描设置页面查看账户的扫描模式。独立账户或 Amazon Inspector 委派管理员可以更改扫描模式。当您将扫描模式设置为 Amazon Inspector 委派管理员时,系统会为您组织中的所有成员账户设置该扫描模式。Amazon Inspector 具有以下扫描模式:

基于代理的扫描 – 在此扫描模式下,Amazon Inspector 在扫描程序包漏洞时将仅使用基于代理的扫描方法。此扫描模式仅扫描您账户中的 SSM 托管实例,但其好处是可以提供持续扫描,以响应新的 CVE 或对实例的更改。基于代理的扫描还可以为符合条件的实例提供 Amazon Inspector 深度检查。这是新激活账户的默认扫描模式。

混合扫描 – 在此扫描模式下,Amazon Inspector 将结合使用基于代理和无代理的方法来扫描程序包漏洞。对于安装并配置了 SSM 代理的符合条件的 EC2 实例,Amazon Inspector 会使用基于代理的方法。对于不受 SSM 管理的符合条件的实例,Amazon Inspector 将对符合条件且由 EBS 支持的实例使用无代理方法。

更改扫描模式
  1. 打开 Amazon Inspector 控制台,网址为 https://console.aws.amazon.com/inspector/v2/home

  2. 使用页面右上角的选择 Amazon Web Services 区域 器,选择要更改 EC2 扫描模式的区域。

  3. 在侧面导航面板的常规设置下,选择 EC2 扫描设置

  4. 扫描模式下,选择编辑

  5. 选择一个扫描模式,然后选择保存更改

从 Amazon Inspector 扫描中排除实例

您可以标记某些实例,将其排除在 Amazon Inspector 扫描之外。从扫描中排除实例有助于防止出现无法操作的警报。您无需为排除的实例付费。

要将 EC2 实例排除在扫描范围之外,请使用以下键标记实例:

  • InspectorEc2Exclusion

值是可选的。

有关添加标签的更多信息,请参阅标记 Amazon EC2 资源

此外,您可以通过使用标签标记用于加密该卷的 Amazon KMS 密钥,将加密的 EBS 卷排除在无代理扫描之外。InspectorEc2Exclusion有关更多信息,请参阅标记密钥

支持的操作系统

Amazon Inspector 会扫描支持的 Mac、Windows 和 Linux EC2 实例,查找操作系统程序包中的脆弱性。对于 Linux 实例,Amazon Inspector 可以使用 Amazon EC2 Linux 实例的 Amazon Inspector 深度检查 生成应用程序编程语言包的调查发现。对于 Mac 和 Windows 实例,仅扫描操作系统程序包。

有关支持的操作系统的信息,包括无需 SSM 代理即可扫描哪些操作系统,请参阅Amazon EC2 扫描支持的操作系统