Amazon EC2 实例的运行时间覆盖和故障排除 - Amazon GuardDuty

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

Amazon EC2 实例的运行时间覆盖和故障排除

对于 Amazon EC2 资源,运行时间覆盖率是在实例级别进行评估的。您的 Amazon EC2 实例可以在您的 AWS 环境中运行多种类型的应用程序和工作负载。此功能还支持亚马逊ECS托管的亚马逊EC2实例,如果您在亚马逊实例上运行亚马逊ECS集群,则EC2实例级别的覆盖问题将显示在亚马逊EC2运行时覆盖范围下。

查看覆盖率统计数据

与您自己的账户或成员账户关联的 Amazon EC2 实例的覆盖率统计数据是健康EC2实例占所选实例中所有EC2实例的百分比 AWS 区域。下式将其表示为:

(正常实例数/所有实例数)*100

如果您还为 Amazon ECS 集群部署了 GuardDuty 安全代理,则与在亚马逊实例上运行的 Amazon ECS 集群相关的任何EC2实例级别覆盖问题都将显示为亚马逊EC2实例运行时覆盖率问题。

选择一种访问方法来查看您账户的覆盖率统计数据。

Console
  • 登录 AWS Management Console 并打开 GuardDuty 控制台,网址为https://console.aws.amazon.com/guardduty/

  • 在导航窗格中,选择运行时监控

  • 选择运行时覆盖率选项卡。

  • EC2实例运行时覆盖率选项卡下,您可以查看按实例列表表中每个可用的 Amazon EC2 实例的覆盖状态汇总的覆盖率统计数据。

    • 您可以按以下列筛选实例列表

      • 账户 ID

      • 代理管理类型

      • 代理版本

      • 覆盖状态

      • 实例 ID

      • 集群 ARN

  • 如果您的任何EC2实例的覆盖状态为 “不健康”,则 “问题” 列将包含有关不健康状态的原因的其他信息。

API/CLI
  • ListCoverageAPI使用您自己的有效检测器 ID、当前区域和服务端点运行。您可以使用它对实例列表进行筛选和排序API。

    • 您可以使用以下 CriterionKey 选项之一更改示例 filter-criteria

      • ACCOUNT_ID

      • RESOURCE_TYPE

      • COVERAGE_STATUS

      • AGENT_VERSION

      • MANAGEMENT_TYPE

      • INSTANCE_ID

      • CLUSTER_ARN

    • filter-criteria包含RESOURCE_TYPE为时 EC2,运行时监控不支持使用作ISSUEAttributeName。如果你使用它,就会得到API响应InvalidInputException

      您可以使用以下选项更改 sort-criteria 中的示例 AttributeName

      • ACCOUNT_ID

      • COVERAGE_STATUS

      • INSTANCE_ID

      • UPDATED_AT

    • 您可以更改max-results(最多 50 个)。

    • 要查找与您的账户和当前地区detectorId对应的,请参阅https://console.aws.amazon.com/guardduty/控制台中的设置页面,或者运行 ListDetectors API.

    aws guardduty --region us-east-1 list-coverage --detector-id 12abc34d567e8fa901bc2d34e56789f0 --sort-criteria '{"AttributeName": "EKS_CLUSTER_NAME", "OrderBy": "DESC"}' --filter-criteria '{"FilterCriterion":[{"CriterionKey":"ACCOUNT_ID", "FilterCondition":{"EqualsValue":"111122223333"}}] }' --max-results 5
  • 运行GetCoverageStatisticsAPI以检索基于的覆盖率聚合统计信息statisticsType

    • 您可以使用以下选项之一更改示例 statisticsType

      • COUNT_BY_COVERAGE_STATUS— 表示按覆盖状态汇总的EKS集群的覆盖率统计信息。

      • COUNT_BY_RESOURCE_TYPE— 根据列表中的 AWS 资源类型汇总的覆盖率统计信息。

      • 您可以在命令中更改示例 filter-criteria。您可以对 CriterionKey 使用以下选项:

        • ACCOUNT_ID

        • RESOURCE_TYPE

        • COVERAGE_STATUS

        • AGENT_VERSION

        • MANAGEMENT_TYPE

        • INSTANCE_ID

        • CLUSTER_ARN

    • 要查找与您的账户和当前地区detectorId对应的,请参阅https://console.aws.amazon.com/guardduty/控制台中的设置页面,或者运行 ListDetectors API.

    aws guardduty --region us-east-1 get-coverage-statistics --detector-id 12abc34d567e8fa901bc2d34e56789f0 --statistics-type COUNT_BY_COVERAGE_STATUS --filter-criteria '{"FilterCriterion":[{"CriterionKey":"ACCOUNT_ID", "FilterCondition":{"EqualsValue":"123456789012"}}] }'

如果您的EC2实例的覆盖状态为 “运行状况不佳”,请参阅对 Amazon EC2 运行时覆盖问题进行故障排除

保险状态会随着 EventBridge通知而发生变化

您的 Amazon EC2 实例的覆盖状态可能显示为 “不健康”。要检测覆盖率状态何时变为不正常,我们建议您定期监控覆盖率状态,并在状态变为不正常时进行故障排除。或者,您可以创建 Amazon EventBridge 规则,以便在保险状态从 “不健康” 变为 “健康” 或其他情况时收到通知。默认情况下,会在EventBridge 公交车上为您的账户 GuardDuty 发布此内容。

示例通知架构

在 EventBridge 规则中,您可以使用预定义的示例事件和事件模式来接收覆盖状态通知。有关创建 EventBridge 规则的更多信息,请参阅 Amazon EventBridge 用户指南中的创建规则

此外,您还可以使用以下示例通知架构来创建自定义事件模式。确保替换账户的值。要在您的 Amazon EC2 实例的覆盖状态从变Healthy为时收到通知Unhealthydetail-type应为GuardDuty Runtime Protection Unhealthy。要在保险状态从变为时收到通知HealthyUnhealthy请将的detail-type值替换为GuardDuty Runtime Protection Healthy

{ "version": "0", "id": "event ID", "detail-type": "GuardDuty Runtime Protection Unhealthy", "source": "aws.guardduty", "account": "AWS 账户 ID", "time": "event timestamp (string)", "region": "AWS 区域", "resources": [ ], "detail": { "schemaVersion": "1.0", "resourceAccountId": "string", "currentStatus": "string", "previousStatus": "string", "resourceDetails": { "resourceType": "EC2", "ec2InstanceDetails": { "instanceId":"", "instanceType":"", "clusterArn": "", "agentDetails": { "version":"" }, "managementType":"" } }, "issue": "string", "lastUpdatedAt": "timestamp" } }

对 Amazon EC2 运行时覆盖问题进行故障排除

如果您的 Amazon EC2 实例的覆盖状态为 “不健康”,则可以在 “问题” 列下查看原因。

如果您的EC2实例与EKS集群相关联,并且的安全代理EKS是手动安装或通过自动代理配置安装的,则要解决覆盖范围问题,请参阅Amazon EKS 集群的运行时间覆盖和故障排除

下表列举了问题类型和相应的故障排除步骤。

问题类型 问题消息 故障排除步骤

无代理报告

正在等待SSM通知

接收SSM通知可能需要几分钟。

确保 Amazon EC2 实例处于SSM托管状态。有关更多信息,请参阅中的 “方法 1-使用 S AWS ystems Manager” 下的步骤手动安装安全代理

(特意留空)

如果您是手动管理 GuardDuty 安全客户端,请确保按照以下步骤操作手动管理 Amazon EC2 资源的安全代理

如果您启用了自动代理配置:

验证您的 Amazon EC2 实例的VPC终端节点配置是否正确。有关更多信息,请参阅 验证VPC端点配置

如果您的组织有服务控制策略 (SCP),请验证权限边界是否限制了guardduty:SendSecurityTelemetry权限。有关更多信息,请参阅 验证组织服务控制策略

代理已断开连接

  • 查看安全代理的状态。有关更多信息,请参阅 正在验证 GuardDuty安全代理安装状态

  • 查看安全代理日志以确定可能的根本原因。日志提供了详细的错误信息,您可以使用这些信息来自行排查问题。这些文件位于 /var/log/amzn-guardduty-agent/ 下。

    完成 sudo journalctl -u amazon-guardduty-agent

SSM创建关联失败

GuardDuty SSM您的账户中已存在关联

  1. 手动删除现有的关联。有关更多信息,请参阅《AWS Systems Manager 用户指南》中的删除关联

  2. 删除关联后,禁用 Amazon EC2 的 GuardDuty 自动代理配置,然后重新启用。

您的账户SSM关联过多

请选择以下两个选项之一

  • 删除所有未使用的SSM关联。有关更多信息,请参阅《AWS Systems Manager 用户指南》中的删除关联

  • 检查您的账户是否有资格申请增加配额。有关信息,请参阅《AWS 一般参考》中的 Systems Manager Service quotas

SSM关联更新失败

GuardDuty SSM您的账户中不存在关联

GuardDuty SSM您的账户中不存在关联。禁用运行时监控,然后重新启用。

SSM关联删除失败

GuardDuty SSM您的账户中不存在关联

您的账户中不存在该SSM关联。如果SSM关联是故意删除的,则无需执行任何操作。

SSM实例关联执行失败

不满足架构要求或其他先决条件。

有关经验证的操作系统发行版的信息,请参阅 Amazon EC2 实例支持的先决条件

如果您仍然遇到此问题,以下步骤将有助您识别和潜在解决问题:

  1. 打开 AWS Systems Manager 控制台,网址为https://console.aws.amazon.com/systems-manager/

  2. 在导航窗格中的节点管理下,选择状态管理器

  3. 按 “文档名称” 属性筛选并输入 AmazonGuardDuty-ConfigureRuntimeMonitoringSsmPlugin.

  4. 选择相应的关联 ID 并查看其执行历史记录

  5. 使用执行历史记录,查看失败的记录,确定可能的根本原因,然后尝试解决问题。

VPC终端节点创建失败

VPC共享不支持创建端点 VPC vpcId

运行时监控支持在组织VPC内使用共享。有关更多信息,请参阅 使用VPC与自动安全代理共享

仅当使用VPC与自动代理配置共享时

共享的所有者账户 ID 111122223333 VPC vpcId 未启用运行时监控、自动代理配置或两者兼而有之

共享VPC所有者账户必须为至少一种资源类型(Amazon EKS 或 Amazon ECS (AWS Fargate))启用运行时监控和自动代理配置。有关更多信息,请参阅 特定于 GuardDuty 运行时监控的先决条件

启用私有DNS需要将两者的enableDnsSupportenableDnsHostnamesVPC属性都设置truevpcId(服务:Ec2,状态代码:400,请求 ID:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111)。

确保将以下VPC属性设置为 trueenableDnsSupportenableDnsHostnames。有关更多信息,请参阅中的DNS属性VPC

如果您使用亚马逊VPC控制台创建亚马逊VPC,请务必同时选择 “启用DNS主机名” 和 “启用DNS解析”。https://console.aws.amazon.com/vpc/有关更多信息,请参阅VPC配置选项

共享VPC端点删除失败

不允许删除账户 ID、共享账户111122223333VPCvpcId、所有者账户 ID 的共享VPC端点555555555555

可能的步骤:
  • 禁用共享VPC参与者账户的运行时监控状态不会影响共享VPC端点策略和所有者账户中存在的安全组。

    要删除共享VPC端点和安全组,您必须在共享VPC所有者帐户中禁用运行时监控或自动代理配置状态。

  • 共享VPC参与者账户无法删除共享VPC所有者账户中托管的共享VPC端点和安全组。

代理未报告

(特意留空)

对该问题类型的支持已经终止。如果您仍然遇到此问题但尚未这样做,请为 Amazon 启用 GuardDuty 自动代理EC2。

如果问题仍然存在,可考虑禁用运行时监控几分钟,然后重新启用。