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

开始使用 GuardDuty

本教程介绍了 GuardDuty 的实际操作。步骤 1 中介绍了将 GuardDuty 作为独立账户或作为 Amazon Organizations 的 GuardDuty 管理员启用的最低要求。步骤 2 到 5 描述了使用 GuardDuty 推荐的其他功能来充分利用您的调查发现。

开始前的准备工作

GuardDuty 是一项威胁检测服务,用于监控 Amazon CloudTrail 管理事件、Amazon VPC 流日志和 Amazon Route 53 Resolver DNS 查询日志等 基础数据来源。GuardDuty 还会分析与其保护类型相关的功能,前提是单独启用这些功能。功能包括 Kubernetes 审计日志、RDS 登录活动、Amazon S3 的 Amazon CloudTrail 数据事件、Amazon EBS 卷、运行时监控和 Lambda 网络活动日志。使用这些数据来源和功能(如果启用),GuardDuty 会为您的账户生成安全调查发现。

启用 GuardDuty 后,将根据基础数据来源中的活动监控您的账户是否存在潜在威胁。默认情况下,所有已启用 GuardDuty 的 Amazon Web Services 账户均启用 扩展威胁检测。此功能可检测您账户中跨越多个基础数据来源、Amazon 资源和时间的多阶段攻击序列。要检测对特定 Amazon 资源的潜在威胁,您可以选择启用 GuardDuty 提供的以使用案例为中心的防护计划。有关更多信息,请参阅 GuardDuty 的功能

您不需要显式启用任何基础数据来源。启用 S3 防护后,您无需显式启用 Amazon S3 数据事件记录。同样,启用 EKS 防护后,您也无需显式启用 Amazon EKS 审计日志。Amazon GuardDuty 会直接从这些服务中提取独立的数据流。

对于新的 GuardDuty 账户,Amazon Web Services 区域中支持的某些可用防护类型会默认启用并包含在 30 天免费试用期内。您可以选择退出其中任何一个或全部退出。如果您有启用了 GuardDuty 的现有 Amazon Web Services 账户,则可以选择启用在您的区域可用的任何或所有防护计划。有关防护计划的简介以及默认情况下将启用哪些防护计划,请参阅 GuardDuty 中的定价

启用 GuardDuty 时,请考虑以下项目

  • GuardDuty 是一项区域性服务,这意味着您必须在要使用 GuardDuty 监控的每个区域中重复您在此页面上执行的任何配置过程。

    我们强烈建议您在所有受支持的 Amazon 区域启用 GuardDuty。这样,GuardDuty 就可以生成有关未经授权或异常活动的调查发现,甚至在您未主动使用的区域也是如此。这还将允许 GuardDuty 监控全球 Amazon 服务(如 IAM)的 Amazon CloudTrail 事件。如果未在所有受支持的区域中启用 GuardDuty,则其检测涉及全球服务的能力将会减弱。有关提供 GuardDuty 的区域的完整列表,请参阅 区域和端点

  • Amazon 账户中具有管理员权限的任何用户都可以启用 GuardDuty,但是,按照最低权限的安全最佳实践,建议您创建一个 IAM 角色、用户或组来专门管理 GuardDuty。有关启用 GuardDuty 所需权限的信息,请参阅 启用 GuardDuty 所需的权限

  • 默认情况下,在任何 Amazon Web Services 区域 区域首次启用 GuardDuty 时,也会启用该区域支持的所有可用防护类型,包括 EC2 恶意软件防护。GuardDuty 为您的账户创建一个名为 AWSServiceRoleForAmazonGuardDuty 的服务相关角色。该角色包括相应的权限和信任策略,允许 GuardDuty 直接使用和分析来自 GuardDuty 基础数据来源 的事件以生成安全调查发现。EC2 恶意软件防护会为您的账户创建另一个名为 AWSServiceRoleForAmazonGuardDutyMalwareProtection 的服务相关角色。该角色包括相应的权限和信任策略,从而允许 EC2 恶意软件防护执行无代理扫描,以检测 GuardDuty 账户中的恶意软件。还允许 GuardDuty 在您的账户中创建 EBS 卷快照,并与 GuardDuty 服务账户共享该快照。有关更多信息,请参阅 GuardDuty 的服务相关角色权限。有关服务相关角色的更多信息,请参阅使用服务相关角色

  • 当您在任何区域首次启用 GuardDuty 时,您的 Amazon 账户将自动注册该区域的 30 天 GuardDuty 免费试用版。

以下视频介绍了管理员账户如何开始使用 GuardDuty 并在多个成员账户中启用 GuardDuty。

步骤 1:启用 Amazon GuardDuty

使用 GuardDuty 的第一步是在您的账户中启用。启用后,GuardDuty 将立即开始监控当前区域中的安全威胁。

如果您想以 GuardDuty 管理员的身份管理组织内其他账户的 GuardDuty 调查发现,则必须添加成员账户并为其启用 GuardDuty。

注意

如果您想在不启用 GuardDuty 的情况下启用 GuardDuty S3 恶意软件防护,相关操作步骤请参阅 GuardDuty S3 恶意软件防护

Standalone account environment
  1. 通过以下网址打开 GuardDuty 控制台:https://console.aws.amazon.com/guardduty/

  2. 选择 Amazon GuardDuty – 所有功能选项。

  3. 选择开始

  4. 欢迎使用 GuardDuty 页面上,查看服务条款。选择 Enable GuardDuty (启用 GuardDuty)

Multi-account environment
重要

作为此过程的先决条件,您必须与要管理的所有账户属于同一个组织,并且有权访问 Amazon Organizations 管理账户,才能在组织内委派 GuardDuty 管理员。委托管理员可能需要其他权限,有关更多信息,请参阅 指定委派 GuardDuty 管理员账户所需的权限

指定委派 GuardDuty 管理员账户

  1. 使用管理账户打开 Amazon Organizations 控制台:https://console.aws.amazon.com/organizations/

  2. 通过以下网址打开 GuardDuty 控制台:https://console.aws.amazon.com/guardduty/

    您的账户中是否已启用 GuardDuty?

    • 如果尚未启用 GuardDuty,请选择开始,然后在欢迎使用 GuardDuty 页面上指定 GuardDuty 委托管理员。

    • 如果启用了 GuardDuty,则可以在设置页面上指定 GuardDuty 委托管理员。

  3. 输入要指定为组织的 GuardDuty 委托管理员的账户的 12 位 Amazon 账户 ID,然后选择委派

    注意

    如果尚未启用 GuardDuty,则指定委托管理员将在您的当前区域为该账户启用 GuardDuty。

要添加成员账户

此过程包括通过 Amazon Organizations 将成员账户添加到 GuardDuty 委托管理员账户。还可以选择通过邀请添加成员。要了解有关在 GuardDuty 中关联成员的两种方法的更多信息,请参阅 Amazon GuardDuty 中的多个账户

  1. 登录到委托管理员账户

  2. 通过以下网址打开 GuardDuty 控制台:https://console.aws.amazon.com/guardduty/

  3. 在导航窗格中,选择 Settings (设置),然后选择 Accounts (账户)

    账户表显示组织中的所有账户。

  4. 选中账户 ID 旁边的框,选择要添加作为成员的账户。然后从操作菜单中选择添加成员

    提示

    您可以打开自动启用功能,自动添加新账户作为成员;但这仅适用于启用该功能后加入组织的账户。

步骤 2:生成示例调查发现并浏览基本操作

当 GuardDuty 发现安全问题时,将会生成调查发现。GuardDuty 调查发现是一个数据集,其中包含与该安全问题相关的详细信息。调查发现的详细信息可以帮助您调查问题。

GuardDuty 支持生成具有占位符值的示例调查发现,用于测试 GuardDuty 功能,并在需要响应 GuardDuty 发现的实际安全问题之前熟悉调查发现。按照以下指南为 GuardDuty 中可用的每种调查发现类型生成示例调查发现,有关生成示例调查发现的其他方法,包括在您的账户中生成模拟安全事件,请参阅 示例发现结果

要创建和浏览示例调查发现

  1. 在导航窗格中,选择设置

  2. 设置页面上的示例调查发现下,选择生成示例调查发现

  3. 在导航窗格中,选择调查发现。示例调查发现显示在当前调查发现页面上,并带有前缀 [SAMPLE]

  4. 从列表中选择一个调查发现,显示该调查发现的详细信息。

    1. 您可以查看调查发现详细信息窗格中可用的不同信息字段。不同类型的调查发现可能有不同的字段。有关所有调查发现类型中的可用字段的更多信息,请参阅 调查发现详细信息。在详细信息窗格中,您可以执行以下操作:

      • 选择窗格顶部的调查发现 ID 以打开调查发现的完整 JSON 详细信息。也可以从此面板下载完整的 JSON 文件。JSON 包含控制台视图中未包含的一些附加信息,并且是可以由其他工具和服务摄取的格式。

      • 查看受影响的资源部分。在实际调查发现中,此处的信息将帮助您确定账户中应进行调查的资源,并包含指向可操作资源的相应 Amazon Web Services 管理控制台 控制台的链接。

      • 选择“+”或“-”视镜图标,为详细信息创建包含或排除筛选条件。有关调查发现筛选条件的更多信息,请参阅 在 GuardDuty 中筛选调查发现

  5. 存档所有示例调查发现

    1. 选中列表顶部的复选框以选择所有调查发现。

    2. 取消选择您要保留的所有调查发现。

    3. 选择操作菜单,然后选择存档以隐藏示例调查发现。

      注意

      要查看存档的调查发现,选择当前,然后选择已存档以切换调查发现视图。

步骤 3:配置将 GuardDuty 调查发现导出到 Amazon S3 存储桶

GuardDuty 建议配置设置以导出调查发现,因为 GuardDuty 允许您将调查发现导出到 S3 存储桶,以便在 GuardDuty 90 天保留期之后无限期存储。这样,您就可以随着时间的推移保留调查发现的记录或跟踪 Amazon 环境中的问题。GuardDuty 使用 Amazon Key Management Service(Amazon KMS key)对 S3 存储桶中的调查发现数据进行加密。要配置相关设置,必须授予 GuardDuty KMS 密钥的权限。有关详细步骤,请参阅将生成的调查发现导出到 Amazon S3

将 GuardDuty 调查发现导出到 Amazon S3 存储桶
  1. 将策略附加到 KMS 密钥
    1. 登录到 Amazon Web Services 管理控制台,然后通过以下网址打开 Amazon Key Management Service(Amazon KMS)控制台:https://console.aws.amazon.com/kms

    2. 要更改 Amazon Web Services 区域,请使用页面右上角的区域选择器。

    3. 在导航窗格中,选择客户托管密钥

    4. 选择现有的 KMS 密钥,或执行《Amazon Key Management Service Developer Guide》中的 Create a symmetric encryption KMS key 的步骤。

      KMS 密钥和 Amazon S3 存储桶必须位于同一区域。

      将密钥 ARN 复制到记事本,以便在后续步骤中使用。

    5. 密钥策略部分,选择编辑。如果显示切换到策略视图,请选择该选项以显示密钥策略,然后选择编辑

    6. 将以下策略块复制到 KMS 密钥策略中:

      { "Sid": "AllowGuardDutyKey", "Effect": "Allow", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "kms:GenerateDataKey", "Resource": "KMS key ARN", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012", "aws:SourceArn": "arn:aws:guardduty:Region2:123456789012:detector/SourceDetectorID" } } }

      通过替换以下策略示例中红色格式的值,从而编辑策略:

      1. KMS 密钥 ARN替换为该 KMS 密钥的 Amazon 资源名称(ARN)。要查找密钥 ARN,请参阅《Amazon Key Management Service 开发人员指南》中的 Finding the key ID and ARN

      2. 请将 123456789012 替换为拥有导出调查发现的 GuardDuty 账户的 Amazon Web Services 账户 ID。

      3. Region2 替换为生成 GuardDuty 调查发现的 Amazon Web Services 区域。

      4. SourceDetectorID 替换为生成调查发现的特定区域的 GuardDuty 账户的 detectorID

        要查找您账户和当前区域的 detectorId,请查看 https://console.aws.amazon.com/guardduty/ 控制台中的设置页面,或者运行 ListDetectors API。

  2. 将策略附加到 Amazon S3 存储桶

    如果您还没有要将这些调查发现导出到的 Amazon S3 存储桶,请参阅《Amazon S3 用户指南》中的创建存储桶

    1. 执行《Amazon S3 用户指南》中创建或编辑存储桶策略下的步骤,直到出现编辑存储桶策略页面。

    2. 示例策略展示了如何授予 GuardDuty 权限,以将调查发现导出到 Amazon S3 存储桶。如果在配置调查发现导出后更改路径,则必须修改策略以授予对新位置的权限。

      复制以下示例策略并将其粘贴到存储桶策略编辑器中。

      如果在最后一条语句之前添加了策略语句,请在添加该语句之前添加一个逗号。确保 KMS 密钥策略的 JSON 语法有效。

      S3 存储桶示例策略

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "Allow GetBucketLocation", "Effect": "Allow", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "s3:GetBucketLocation", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012", "aws:SourceArn": "arn:aws:guardduty:us-east-2:123456789012:detector/SourceDetectorID" } } }, { "Sid": "Allow PutObject", "Effect": "Allow", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket[optional prefix]/*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012", "aws:SourceArn": "arn:aws:guardduty:us-east-2:123456789012:detector/SourceDetectorID" } } }, { "Sid": "Deny unencrypted object uploads", "Effect": "Deny", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket[optional prefix]/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "aws:kms" } } }, { "Sid": "Deny incorrect encryption header", "Effect": "Deny", "Principal": { "Service": "guardduty.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket[optional prefix]/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } } }, { "Sid": "Deny non-HTTPS access", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket[optional prefix]/*", "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }
    3. 通过替换以下策略示例中红色格式的值,从而编辑策略:

      1. Amazon S3 存储桶 ARN 替换为Amazon S3 存储桶的 Amazon 资源名称(ARN)。您可以在 https://console.aws.amazon.com/s3/ 控制台的编辑存储桶策略页面上找到存储桶 ARN

      2. 请将 123456789012 替换为拥有导出调查发现的 GuardDuty 账户的 Amazon Web Services 账户 ID。

      3. Region2 替换为生成 GuardDuty 调查发现的 Amazon Web Services 区域。

      4. SourceDetectorID 替换为生成调查发现的特定区域的 GuardDuty 账户的 detectorID

        要查找您账户和当前区域的 detectorId,请查看 https://console.aws.amazon.com/guardduty/ 控制台中的设置页面,或者运行 ListDetectors API。

      5. S3 存储桶 ARN/[可选前缀]占位符值的 [可选前缀] 部分替换为要将结果导出到的可选文件夹位置。有关使用前缀的更多信息,请参阅《Amazon S3 用户指南》中的使用前缀组织对象

        如果您提供某个尚未存在的可选文件夹位置,则仅当与 S3 存储桶关联的账户与导出调查发现的账户相同时,GuardDuty 才会创建该位置。如果您将调查发现导出到属于其他账户的 S3 存储桶,则文件夹位置必须已经存在。

      6. KMS 密钥 ARN 替换为与对导出到 S3 存储桶中的调查发现进行加密相关的 KMS 密钥的 Amazon 资源名称(ARN)。要查找密钥 ARN,请参阅《Amazon Key Management Service 开发人员指南》中的 Finding the key ID and ARN

  3. GuardDuty 控制台中的步骤
    1. 通过以下网址打开 GuardDuty 控制台:https://console.aws.amazon.com/guardduty/

    2. 在导航窗格中,选择设置

    3. 设置页面的调查发现导出选项下,对于 S3 存储桶,选择立即配置(或根据需要选择编辑)。

    4. 对于 S3 存储桶 ARN,输入您要向其发送调查发现的 bucket ARN。要查找存储桶 ARN,请参阅《Amazon S3 用户指南》中的查看 S3 存储桶的属性

    5. 对于 KMS 密钥 ARN,请输入 key ARN。要查找密钥 ARN,请参阅《Amazon Key Management Service Developer Guide》中的 Finding the key ID and ARN

    6. 选择保存

步骤 4:通过 SNS 设置 GuardDuty 调查发现警报

GuardDuty 与 Amazon EventBridge 集成,可用于将调查发现数据发送到其他应用程序和服务进行处理。借助 EventBridge,您可以使用 GuardDuty 调查发现,通过将调查发现事件连接到 Amazon Lambda 函数、Amazon EC2 Systems Manager 自动化、Amazon Simple Notification Service(SNS)等目标来启动对结果的自动响应。

在本例中,您将创建一个 SNS 主题作为 EventBridge 规则的目标,然后使用 EventBridge 创建一条规则,从 GuardDuty 捕获调查发现数据。生成的规则会将调查发现详细信息转发到电子邮件地址。要了解如何将调查发现发送到 Slack 或 Amazon Chime,以及如何修改发送警报的调查发现类型,请参阅 设置 Amazon SNS 主题和端点

要为您的调查发现警报创建 SNS 主题

  1. 通过 https://console.aws.amazon.com/sns/v3/home 打开 Amazon SNS 控制台。

  2. 在导航窗格中,选择 Topics(主题)

  3. 选择创建主题

  4. 对于类型,选择标准

  5. 对于名称,请输入 GuardDuty

  6. 选择创建主题。这将打开新主题的主题详细信息。

  7. 订阅部分中,选择创建订阅

  8. 对于协议,选择电子邮件

  9. 对于端点,输入要向其发送通知的电子邮件地址。

  10. 选择创建订阅

    创建订阅后,必须通过电子邮件确认订阅。

  11. 要查看订阅消息,请进入您的电子邮件收件箱,然后在订阅消息中选择确认订阅

    注意

    要查看电子邮件确认状态,请进入 SNS 控制台,然后选择订阅

要创建 EventBridge 规则以捕获 GuardDuty 调查发现并对其进行格式化

  1. 打开位于 https://console.aws.amazon.com/events/ 的 EventBridge 控制台。

  2. 在导航窗格中,选择规则

  3. 选择创建规则

  4. 为规则输入名称和描述。

    规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

  5. 对于事件总线,选择默认

  6. 对于规则类型,选择具有事件模式的规则

  7. 选择下一步

  8. 对于事件源,选择 Amazon 事件

  9. 对于事件模式,选择事件模式表

  10. 对于事件源,选择Amazon 服务

  11. 对于 Amazon 服务,选择 GuardDuty

  12. 对于事件类型,选择 GuardDuty 调查发现

  13. 选择下一步

  14. 对于目标类型,选择Amazon 服务

  15. 对于选择目标,选择 SNS 主题;对于主题,选择您先前创建的 SNS 主题的名称。

  16. 其他设置部分,对于配置目标输入,选择输入转换器

    添加输入转换器会将从 GuardDuty 发送的 JSON 调查发现数据格式化为人类可读的消息。

  17. 选择 Configure input transformer(配置输入转换器)。

  18. 目标输入转换器部分,对于输入路径,粘贴以下代码:

    { "severity": "$.detail.severity", "Finding_ID": "$.detail.id", "Finding_Type": "$.detail.type", "region": "$.region", "Finding_description": "$.detail.description" }
  19. 要设置电子邮件格式,则对于模板,请粘贴以下代码,并确保将红色文本替换为适合您所在区域的值:

    "You have a severity severity GuardDuty finding type Finding_Type in the Region_Name Region." "Finding Description:" "Finding_Description." "For more details open the GuardDuty console at https://console.aws.amazon.com/guardduty/home?region=region#/findings?search=id%3DFinding_ID"
    "You have a severity severity GuardDuty finding type Finding_Type in the Region_Name Region." "Finding Description:" "Finding_Description." "For more details, open the GuardDuty console at GuardDuty_Console_Link_up_to_the_Finding_ID
  20. 选择确认

  21. 选择下一步

  22. (可选)为规则输入一个或多个标签。有关更多信息,请参阅《Amazon EventBridge 用户指南》中的 Amazon EventBridge 标签

  23. 选择下一步

  24. 查看规则详细信息并选择创建规则

  25. (可选)使用步骤 2 中的过程生成示例调查发现来测试新规则。对于生成的每个示例调查发现,您都会收到一封电子邮件。

后续步骤

随着您继续使用 GuardDuty,您将逐渐了解与您的环境相关的调查发现类型。每当收到新调查发现时,您都可以从调查发现详细信息窗格上的调查发现描述中选择了解更多,或在 GuardDuty 调查发现类型 上搜索调查发现名称来查找信息,包括有关调查发现的修复建议。

以下功能将帮助您调整 GuardDuty,使其能够为您的 Amazon 环境提供最相关的调查发现:

  • 要根据特定条件(如实例 ID、账户 ID、S3 存储桶名称等)对结果轻松进行排序,您可以在 GuardDuty 中创建并保存筛选条件。有关更多信息,请参阅 在 GuardDuty 中筛选调查发现

  • 如果您收到有关环境中预期行为的调查发现,则可以根据您使用抑制规则定义的标准自动存档调查发现。

  • 为了防止从可信 IP 的子集生成调查发现,或者让 GuardDuty 监控正常监控范围之外的 IP,您可以设置可信 IP 和威胁列表