亚马逊AWS官方博客

如何自动导入第三方威胁情报 Feeds 到 Amazon GuardDuty

Amazon GuardDuty 是 AWS 推出的威胁检测服务,致力于保护您的 AWS 账号,以及通过持续监控针对您的工作负载的恶意和未授权访问行为。您可以通过 AWS 管理控制台一键启动该服务,其通过分析您的AWS账户中的数十亿个事件,并使用机器学习来检测账户和工作负载活动中的异常。然后它引用集成的威胁情报源来识别可疑的攻击者。在AWS区域内,GuardDuty 处理来自 AWS CloudTrail 日志,VPC 流日志,和 DNS 日志的数据,并且所有的日志在传输过程中加密。GuardDuty 从日志中提取各种字段以进行性能分析和异常检测,然后丢弃日志。 GuardDuty 的威胁情报调查结果基于来自 AWS 的内部威胁情报以及来自第三方供应商 CrowdStrike 和 Proofpoint 的威胁情报源。

除了使用内置的威胁源外,您还可以通过两种方式来自定义您的保护。如果您需要实施行业特定的威胁源(例如金融服务或医疗保健领域的威胁源),则自定义功能就非常有用。第一种自定义选项是可以自己提供白名单的IP列表。第二种是可以上传第三方的威胁列表到 GuardDuty 来生成调查结果。但是,维持 Guard Duty 中第三方威胁列表的最新状态需要许多手动步骤,您需要:

  • 授权管理员访问权限
  • 从第三方提供商处下载列表
  • 将生成的文件上传到服务
  • 替换过时的威胁源

这篇文章将向您展示如何在使用第三方威胁源时,自动执行这些步骤。我们将使用 FireEye iSIGHT威胁情报源作为例子,来展示如何将获得许可的威胁源上传到 GuardDuty,这个解决方案也可以适用于其他威胁情报源。如果使用默认参数来部署,则构建的环境如下图所示:

此解决方案中使用以下资源:

  • 一个定期调用 AWS Lambda 函数的 Amazon CloudWatch 事件。默认情况下,CloudWatch 将每六天调用一次该函数,但如果您愿意,您可以修改该值。
  • AWS Systems Manager 参数存储,可安全地存储您提供的公钥和私钥。下载威胁源时需要这些密钥。
  • AWS Lambda 函数,由一个脚本组成,该脚本以编程方式将许可的 FireEye iSIGHT 威胁情报源导入 Amazon GuardDuty。
  • 一个 AWS 身份和访问管理(IAM)角色,使 Lambda 函数可以访问以下内容:
    • a.    GuardDuty,列出,创建,获取和更新威胁列表。
    • b.    CloudWatch 日志,用于监控,存储和访问 AWS Lambda 生成的日志文件。
    • c.  Amazon S3,用于在 Amazon S3 上传威胁列表并将其提取到 GuardDuty。
  • 用于存储威胁列表的 Amazon Simple Storage Service(S3)存储桶。部署解决方案后,除非您手动删除,否则将保留该存储桶。
  • Amazon GuardDuty,需要在要部署解决方案的同一 AWS 区域中启用。

注意⚠️:在所有地区启用 GuardDuty 是一种最佳安全实践。

实施部署:

完成先决条件后,请按照下列步骤操作:

  1. 点击下面链接来启动您账号里的 CloudFormation 堆栈。CloudFormation 堆栈大约需要5分钟才能完成部署:

https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=GuardDutyThreatFeed&templateURL=https://s3.amazonaws.com/awsiammedia/public/sample/guard-duty-threat-feed/latest/guard-duty-threat-feed.template

注意⚠️:如果您邀请其他帐户来启用 GuardDuty 并与您的AWS账户关联(以便您可以代表他们查看和管理他们的 GuardDuty 调查结果),请从主账户运行此解决方案。 在此处可以找到有关管理主人和成员 GuardDuty 帐户的更多信息。 从主帐户执行此解决方案可确保 Guard Duty 使用导入的威胁列表报告来自所有成员帐户的结果。

该模板将在美国东部(弗吉尼亚北部)地区启动。 要在其他 AWS 区域中启动解决方案,请使用控制台导航栏中的区域选择器。 这是因为 Guard Duty 是一项针对特定地区的服务。

所有代码在:https://github.com/aws-samples/amazon-guardduty-threat-feed

  1. 在“选择模板”页面上,选择“下一步”
  1. 在“指定详细信息”页面上,为您的解决方案堆栈命名。
  1. 在“参数”下,查看模板的默认参数并根据需要修改相应的值。
Parameter Value Description
Public Key <Requires input> FireEye iSIGHT Threat Intelligence public key.
Private Key <Requires input> FireEye iSIGHT Threat Intelligence private key
Days Requested 7 The maximum age (in days) of the threats you want to collect. (min 1 – max 30)
Frequency 6 The number of days between executions – when the solution downloads a new threat feed (min 1 – max 29)
  1. 选择“下一步”
  2. 在“选项”页面,您能给您的资源指定 tags (键值对)
  3. 在“预览”页面,预览和确认配置,并确认勾选“模板将使用自定义名称创建 AWS Identity and Access Management(IAM)资源“
  4. 点击”创建“

大概5分钟后,栈将新建完成,您可以通过“事件”选项卡来确认

在您配置解决方案部署成功后,Lambda 函数会立即更新 GuardDuty 威胁列表。它还设置为定期运行以保持您的环境更新。但是,在需要更快更新威胁情报列表的情况下,例如发现新的 Zero Day 漏洞,您可以手动运行 Lambda 函数以避免延迟等到 Lambda 函数计划的更新事件。 要手动运行Lambda 函数,请按照此处描述的步骤创建并将新下载的威胁源提取到 Amazon GuardDuty 中。

总结:

我们通过该文描述了如何部署自动化的解决方案,该解决方案可以下载您从第三方提供商(如FireEye)获得许可的最新威胁情报源到 GuardDuty。 该解决方案为 GuardDuty 提供了大量的个人威胁情报数据,以便处理和报告调查结果。 此外,由于FireEye(或您选择的威胁情报提供商)发布了较新的威胁,它们将自动被导入到 GuardDuty。

Original article: https://aws.amazon.com/blogs/security/how-to-automate-import-third-party-threat-intelligence-feeds-into-amazon-guardduty/