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

Amazon EC2 实例支持的先决条件

本节包含监控 Amazon EC2 实例的运行时行为的先决条件。满足这些先决条件后,请参阅启用 GuardDuty 运行时监控

将 EC2 实例设为由 SSM 托管(仅限自动代理配置)

GuardDuty 使用 Amazon Systems Manager(SSM)在您的实例上自动部署、安装和管理安全代理。如果您计划手动安装和管理 GuardDuty 代理,则不需要 SSM。

要使用 Systems Manager 管理 Amazon EC2 实例,请参阅《Amazon Systems Manager 用户指南》中的为 Amazon EC2 实例设置 Systems Manager

验证架构要求

操作系统发行版的架构可能会影响 GuardDuty 安全代理的行为方式。在为 Amazon EC2 实例使用运行时监控之前,您必须满足以下要求:

  • 内核支持包括 eBPFTracepointsKprobe。对于 CPU 架构,运行时监控支持 AMD64 (x64) 和 ARM64(Graviton2 及更高版本)1

    下表列举了已验证能够支持适用于 Amazon EC2 实例的 GuardDuty 安全代理的操作系统发行版。

    操作系统发行版2 内核版本3
    Amazon Linux 2

    5.44、5.104、5.15

    Amazon Linux 2023

    5.44、5.104、5.15、6.1、6.5、6.8、6.12

    Ubuntu 20.04 和 Ubuntu 22.04

    5.4、5.10、5.15、6.1、6.5、6.84, 5.104

    Debian 11 和 Debian 12

    5.4、5.10、5.15、6.1、6.5、6.84, 5.104

    Ubuntu 24.04

    6.8

    6.13 5、6.14 5

    RedHat 9.4

    5.14

    Fedora 34.0

    5.11、5.17

    Fedora 40

    6.8

    Fedora 41

    6.12

    CentOS Stream 9

    5.14

    Oracle Linux 8.9

    5.15

    Oracle Linux 9.3

    5.15

    Rocky Linux 9.5

    5.14

    1. Amazon EC2 资源运行时监控不支持第一代 Graviton 实例,例如 A1 实例类型。

    2. 支持多种操作系统:已验证 GuardDuty 能够支持在上表所列操作系统上的运行时监控。虽然 GuardDuty 安全代理可以在上表中未列出的操作系统上运行,但 GuardDuty 团队无法保证预期的安全值。

    3. 对于任何内核版本,都必须将 CONFIG_DEBUG_INFO_BTF 标志设置为 y(含义为 true)。这是必需的,这样 GuardDuty 安全代理才能按预期运行。

    4. 对于内核 5.10 版本及更早版本,GuardDuty 安全代理使用 RAM (RLIMIT_MEMLOCK) 中的锁定内存来按预期运行。如果您系统的 RLIMIT_MEMLOCK 值设置得太低,GuardDuty 建议将硬限制和软限制都设置为至少 32 MB。有关验证和修改默认 RLIMIT_MEMLOCK 值的信息,请参阅查看和更新 RLIMIT_MEMLOCK 值

    5. 对于 Ubuntu 24.04,内核 6.13 和 6.14 版本仅支持 EC2 代理 1.9.0 版本及更高版本。

  • 其他要求:仅限您使用 Amazon ECS/Amazon EC2 时

    对于 Amazon ECS/Amazon EC2,我们建议使用最新的 Amazon ECS 优化版 AMI(日期为 2023 年 9 月 29 日或之后),或者使用 Amazon ECS 代理版本 v1.77.0。

查看和更新 RLIMIT_MEMLOCK

当您的系统 RLIMIT_MEMLOCK 限制设置得太低时,GuardDuty 安全代理可能无法按设计运行。GuardDuty 建议硬限制和软限制都必须至少为 32 MB。如果您不更新限制,GuardDuty 将无法监控您的资源的运行时事件。当 RLIMIT_MEMLOCK 超过规定的最低限额时,您可以选择更新这些限制。

您可以在安装 GuardDuty 安全代理之前或之后修改默认 RLIMIT_MEMLOCK 值。

查看 RLIMIT_MEMLOCK
  1. 运行 ps aux | grep guardduty。这将输出进程 ID (pid)。

  2. 从上一条命令的输出中复制进程 ID (pid)。

  3. pid 替换为从上一步中复制的进程 ID,然后运行 grep "Max locked memory" /proc/pid/limits

    这将显示运行 GuardDuty 安全代理所需的最大锁定内存。

更新 RLIMIT_MEMLOCK
  1. 如果 /etc/systemd/system.conf.d/NUMBER-limits.conf 文件存在,则从该文件中注释掉 DefaultLimitMEMLOCK 行。此文件将默认 RLIMIT_MEMLOCK 设置为高优先级,这会覆盖您在 /etc/systemd/system.conf 文件中的设置。

  2. 打开 /etc/systemd/system.conf 文件并取消注释包含 #DefaultLimitMEMLOCK= 的行。

  3. 更新默认值,将 RLIMIT_MEMLOCK 硬限制和软限制设置为至少 32 MB。更新后的策略应如下所示:DefaultLimitMEMLOCK=32M:32M。格式为 soft-limit:hard-limit

  4. 运行 sudo reboot

在多账户环境中验证组织服务控制策略

如果您设置了服务控制策略(SCP)来管理组织中的权限,请验证权限边界允许 guardduty:SendSecurityTelemetry 操作。GuardDuty 需要此权限才能支持不同资源类型的运行时监控。

如果您是成员账户,则连接到关联的委派管理员。有关管理组织的 SCP 的信息,请参阅 Service control policies (SCPs)

使用自动代理配置时

使用自动代理配置(推荐),您的 Amazon Web Services 账户必须满足以下先决条件:

  • 将包含标签与自动代理配置结合使用时,为了让 GuardDuty 能为新实例创建 SSM 关联,请确保新实例由 SSM 托管并在 https://console.aws.amazon.com/systems-manager/ 控制台的实例集管理器下显示。

  • 将排除标签与自动代理配置结合使用时

    • 在为您的账户配置 GuardDuty 自动代理之前,请添加 GuardDutyManaged:false 标签。

      务必要在启动 Amazon EC2 实例之前添加排除标签。为 Amazon EC2 启用自动代理配置后,任何在没有使用排除标签的情况下启动的 EC2 实例都将属于 GuardDuty 自动代理配置的覆盖范围。

    • 为您的实例启用允许在元数据中添加标签设置。此设置为必要设置,因为 GuardDuty 需要从实例元数据服务(IMDS)读取排除标签,确定是否应将该实例排除在代理安装之外。有关更多信息,请参阅《Amazon EC2 用户指南》中的启用对实例元数据中标签的访问权限

GuardDuty 代理的 CPU 和内存限制

CPU 限制

对于与 Amazon EC2 实例关联的 GuardDuty 安全代理,最大 CPU 限制为 vCPU 核心总数的 10%。例如,假设您的 EC2 实例有 4 个 vCPU 核心,则在 400% 的总可用容量中,安全代理最多可以使用 40%。

内存限制

对于与 Amazon EC2 实例关联的内存,也存在 GuardDuty 安全代理可以使用的内存限制。

具体内存限制详见下表。

Amazon EC2 实例内存大小

GuardDuty 代理可使用的最大内存大小

小于 8 GB

128MB

小于 32 GB

256 MB

大于等于 32 GB

1 GB

后续步骤

下一步是配置运行时监控并管理安全代理(自动或手动)。