亚马逊AWS官方博客

亚马逊云科技 Shield 部署小指南(一)Shield Advanced Onboard

AWS Shield 是一项托管服务,旨在保护应用程序和网站免受分布式拒绝服务(DDoS)攻击的影响。它提供了两个层级的保护:AWS Shield Standard 和 AWS Shield Advanced。

AWS Shield Standard 是一项免费服务,为所有 AWS 客户提供基本的 DDoS 保护。它可以自动检测并缓解常见的网络和传输层 DDoS 攻击,如大流量的泛洪攻击、各种协议反射攻击等。Shield Standard 致力于保护亚马逊云科技平台的稳定性。防止被攻击的客户影响其他的客户的工作稳定性。是对于 DDoS 事件不敏感的客户的常见选择。

AWS Shield Advanced 是一项可选的付费服务,提供更高级别的 DDoS 防护。它利用 AWS 的全球网络和智能检测系统,可以有效应对更复杂和大规模的 DDoS 攻击。除了网络和传输层保护外,它还覆盖应用层攻击,如 HTTP 洪水和 DNS 查询洪水。此外,AWS Shield Advanced 还提供 24/7 的专家支持和保护服务。我们会在这篇博客里为大家讲解如何启用和部署 Shield Advanced。

内容简介

本文分为两个部分,为您详细介绍如何启用和部署 Shield Advanced,以及相关的优化配置建议。

第一部分重点阐述了在常见的 HTTP 三层 WEB 架构中,如何将关键资源纳入 Shield Advanced 的防护范围。

第二部分介绍了 Shield Advanced 中一些其他的建议配置,以提高防护效果。包括创建 Protection Group 对资源进行分组管理、使用 Firewall Manager 实现组织级的统一管理,以及满足特殊需求的定制化防护等。遵循这些最佳实践,能够让您的应用获得更全面、更高效的 DDoS 防护。

第一部分:在常见的 HTTP 三层 WEB 架构中,如何把资源加入 Shield Advanced 的保护中

图 1.1

图 1.1 展示了一种常见的 HTTP 应用三层 Web 架构。在该架构中,用户请求可以通过 Amazon CloudFront 或应用负载均衡器(ALB)流入后端应用程序。为了有效防护应用免受 DDoS 攻击的影响,我们需要将请求流量的入口收敛到 CloudFront,并在 CloudFront 层启用 AWS WAF 和 AWS Shield Advanced 服务,对所有经 CloudFront 传入的流量进行审查和防护。

第一步:限制 ALB 仅通过 CloudFront 访问

步骤一:将 CloudFront 托管 IP 前缀添加到 ALB 安全组

图 1.1.1

步骤二:在 CloudFront 和 ALB 上添加固定 Header

虽然我们已经通过安全组配置只允许来自 CloudFront 的流量访问 ALB,但是攻击者可能会配置一个 CloudFront 分发,试图绕过这一限制直接向 ALB 发起攻击。因此,我们需要采取额外的措施,确保 ALB 只能被我们自己配置的 CloudFront 分发访问。

在 CloudFront 端,我们需要为 Origin 添加一个自定义的回源 HTTP 头部。这个特殊的头部值将作为 CloudFront 发出请求的标记。

在 ALB 端,我们需要在监听器上配置相应的规则,检查每个传入请求是否携带了我们预先设置的那个特殊头部值。如果请求没有包含该头部或头部值不正确,则直接拒绝该请求,返回 403 Forbidden 的响应。只有来自我们自己的 CloudFront 分发的请求,才能通过这一检查,被正常路由到后端服务器。

通过在 CloudFront 和 ALB 两端分别添加并验证这个自定义头部,我们就构建了一个额外的防护层,确保 ALB 只能被我们可信的 CloudFront 分发访问,有效降低了遭受直接攻击的风险。

CloudFront:在 Origin 中添加回源 Header

图 1.1.2

ALB:新建 listener,在 listener 的 condition 中添加 header,将 default 规则配置为 403

图 1.1.3

第二步:对 CloudFront 启用 WAF

目前 CloudFront 支持一键启用 WAF,在启用时,最佳实践是先将 WAF 设置为监控模式,以防止对正常业务流量造成误拦截。同时,还需要开启 WAF 的 Rate Limiting,这是有效缓解 DDoS 攻击的关键手段之一。

图 1.2

启用 WAF 后,您可以自定义 Web ACL 规则,根据特定的 IP 地址、HTTP 头部、请求体等字段来检查传入的请求,识别并阻挡可疑的恶意流量。WAF 提供了一个可管理的规则列表,并支持与 AWS Shield Advanced 服务无缝集成,当检测到 DDoS 攻击时,自动应用缓解规则。

值得注意的是,启用 Shield Advanced 后,WAF 的 Web ACL 费用可以获得部分减免(前 1500 个 WCU 单位请求次数免费)。因此,将 WAF 与 Shield Advanced 一起使用,不仅能够提高应用程序的安全性,还可以降低运营成本。

第三步:启用 Shield Advanced

步骤一:订阅 Shield Advanced

您需要先在 AWS 账户中订阅 Shield Advanced 服务。该服务目前在组织的管理账号下收取每月 3000 美元的订阅费用。一旦订阅,整个 AWS 组织内的所有账户都可以使用 Shield Advanced。

图 1.3.1

步骤二:添加需要防护的资源

在 Shield Advanced 控制台的概览页面,点击”添加要保护的资源”:

图 1.3.2

您可以选择需要防护的 CloudFront 分发、Route 53 托管区域、Global Accelerator、应用负载均衡器、弹性 IP 地址(网络负载均衡器以此形式添加)等 AWS 资源:

图 1.3.3

如果需要应用层 DDoS 防护,请确保已为这些资源关联 AWS WAF Web ACL:

图 1.3.4

配置自动应用层 DDoS 防护(可选)

Shield Advanced 支持在 WAF 里配置自动对七层攻击进行缓解。启用此功能后,WAF 将自动应用一个前缀名为”ShieldMitigationRuleGroup”的预定义规则组,对可疑流量进行处理(阻挡或计数)。此规则的 Capacity 为 150WCU,请预先确保 WAF 有足够的容量单位。

启用自动应用层 DDoS 防护后,可以选择命中此规则的请求是 Block 还是 Count。

图 1.3.5

配置 Route53 健康检测(推荐):

将您的应用程序与 Route 53 健康检查关联,Shield Advanced 就能以客户期望的流量阈值更快地检测到影响应用程序健康状况的攻击,提高防护效率。SRT(Shield Response Team) 也可获得资源健康状态,以便适当优先响应不健康的应用程序。

图 1.3.6

由于我们的架构是 User -> CloudFront -> ALB -> Backend,您可以分别为 CloudFront、ALB 等资源配置健康检查,再通过一个聚合规则将它们组合,全面监控应用的运行状态。

举例:ALB:TargetResponseTime >= 1000 for 1 datapoints within 1 minute

图 1.3.7

举例:CloudFront:5xxErrorRate >= 1000 for 1 datapoints within 1 minute

图 1.3.8

举例:聚合 ALB & CloudFront:当两者的监控都是 healthy 时,此健康检测才是 healthy。将此规则用于 Shield Advanced 的 Health Check:

图 1.3.9

设置告警和通知

当 Shield Advanced 检测到 DDoS 攻击时,CloudWatch 的 Metric “DDoSDetected” 会变为非 0 值,您可以在此配置 SNS 主题,在检测到攻击时,及时收到通知。

同时当 WAF 里配置的限速规则被触发时,也可以通过 SNS 进行消息通知。

图 1.3.10

审查配置:

图 1.3.11

在将关键资源成功纳入 AWS Shield Advanced 防护范围后,您可能希望在遭受大规模 DDoS 攻击时,能够获得 AWS Shield Response Team(SRT)的更快响应和支持。为此,我们建议您完成以下额外的配置步骤:

图 1.3.12

创建一个 IAM 角色,授予 SRT 访问您账户中 Shield Advanced 和 AWS WAF 的权限。这样 SRT 就能够查看相关的攻击指标和日志,以便更好地分析攻击模式并制定缓解策略。

如果您除了 WAF 日志外,还有其他相关的日志或信息需要共享给 SRT,可以创建一个 Amazon S3 存储桶,并为 SRT 团队配置相应的访问权限。SRT 团队将利用这些额外的信息,更全面地了解您的应用架构和流量模式,从而提供更准确的指导和建议。

图 1.3.13

完成上述两个步骤后,您可以在 Shield Advanced 控制台的概览页面看到这三项配置已经就绪。

图 1.3.14

最后您需要在“Proactive engagement and contacts” 模块中提供您的紧急联系人信息。一旦发生紧急情况。例如您的 CloudFront 被 DDoS 攻击,但是一些应当采取的保护措施还未部署-如 WAF 限速规则未设置成 Block 模式。SRT 团队就能够及时与您取得联系,协调应对行动。

图 1.3.15

图 1.3.16

图 1.3.17

值得重点强调的是,为了让 Shield Advanced 能够更准确地检测和缓解攻击,请务必提前 24-72 小时启用该服务。在此期间,Shield Advanced 将学习您应用的正常流量模型,从而能够更好地区分攻击流量和合法业务流量。

此外,正确配置 Route 53 健康检查和 WAF 速率限制规则,也是确保您在遭受攻击后能够申请成本减免的重要前提条件。AWS 建议您遵循最佳实践,全面优化 Shield Advanced 的防护能力。

第二步:如何让您的资源更有效地得到 Shield advance 的防护

NACL

对于不能使用 CloudFront 做接入的服务,如 UDP 和非 Web 的 TCP 服务。Shield Advance 会把保护资源所在的 Public Subnet 里的 NACL 复制部署到亚马逊云科技全球几百个边缘节点和区域的 DDoS 防护集群,起到放大 NACL 的防御容量,近攻击源清洗防护的作用。

Protection Group

Protection Group 可以将受 Shield Advanced 保护的资源进行分组,Shield Advanced 会将它们视为单个受保护实体。您可以根据资源类型或手动选择的方式创建保护组。一个保护组可以包含组成您应用程序的许多不同资源,这些资源可能属于跨越同一 AWS 帐户中不同 AWS 区域的多个保护组。

当您的保护资源为 EIP 或 Global Accelerator 时:对于 Layer3 层和 Layer4 层的攻击,当保护组中一个资源被 Shield Advanced 检测到攻击时,Shield Advanced 会把缓解策略同样部署到保护组的其他资源上,这样在攻击者取攻击保护组里的其他资源时,Shield Advanced 就能更快地做出响应。

在 Aggregation 有三种统计方式可以选择:

  1. Sum:将保护组内所有资源的流量求和。
  2. Mean:计算保护组内资源流量的平均值。
  3. Max:取保护组内资源的最大流量值。

对于大多数使用场景,我们建议采用 Sum 的聚合方式。以一个由多个弹性 IP 地址(EIP)或多个应用负载均衡器(ALB)组成的服务为例,如果将这些 EIP 或 ALB 资源都加入同一个 Protection Group,并选择 Sum 作为聚合方式,就能更快速地检测到是否存在 DDoS 攻击行为。

此外,当某个 ALB 或 EIP 发生故障时,业务流量通常会被转移到其他 ALB 或 EIP 资源。在这种情况下,使用 Sum 聚合能够有效防止新增的流量资源被 Shield Advanced 误判为攻击流量。通过合理配置 Protection Group 和 Aggregation 选项,您可以充分利用 Shield Advanced 的防护能力,更高效地应对 DDoS 攻击。

使用 AWS Firewall Manager 实现组织集中式保护管理

AWS Firewall Manager 可以在整个 AWS 组织范围内集中管理和自动应用 Shield Advanced 和 AWS WAF 的保护策略,覆盖多个账户和资源。它会自动审核账户,发现新的或未受保护的资源,确保 Shield Advanced 和 WAF 保护得到全面应用,其保护策略费用包含在 Shield Advanced 订阅费中。

Customized Protection

如果您有针对第 3-7 层的特殊防护需求,可以联系您的 AWS TAM(技术账户经理)或 Account 团队,申请 Shield Advanced 的定制化防护服务。

针对不同的防护资源如何进行有效的 DDoS 防护

亚马逊云科技在 DDoS 防护过程中,不仅仅依靠 Shield Advanced 产品。某些形式的 DDoS 缓解措施会自动包含在亚马逊云科技的各种服务中。通过使用包含特定服务的亚马逊云科技架构,以及针对用户和应用程序之间网络流量交互的每个部分实施对应的最佳实践,可以进一步提高 DDoS 弹性。

根据您的具体云架构,应该采用什么样的最佳实践来保证系统具备最有效的 DDoS 防护能力。亚马逊云科技专门为大家准备了”实现 DDoS 弹性的 AWS 最佳实践”的白皮书供大家参考。

https://docs.aws.amazon.com/zh_cn/whitepapers/latest/aws-best-practices-ddos-resiliency/aws-best-practices-ddos-resiliency.html

总结

综上所述,本文以一个常见的三层 Web 架构为例,介绍了采购 Shield Advanced 服务后,如何部署和优化 Shield Advanced 以及 DDoS 防护相关的组件的配置,以有效防护应用程序免受 DDoS 攻击的影响。包括:

  • 如何将关键资源纳入 Shield Advanced 保护范围,包括限制 ALB 只能通过 CloudFront 访问、在 CloudFront 启用 WAF 和启用 Shield Advanced 服务等步骤。

在此基础上,我们介绍了如何配置 Route 53 健康检查、设置告警通知等,以提高 Shield Advance 防护效率。

此外在 SRT 联系准备方面。我们介绍了创建 IAM 角色供 Shield Response Team(SRT)访问,并提供紧急联系人信息,以获得更快的响应和支持。

除此之外,我们对于一些高阶的优化配置也做了简要介绍,如使用 NACL 和 Shield Advance 结合放大系统防护能力。创建 Protection Group 对资源进行分组管理、使用 Firewall Manager 实现组织级统一管理等。

对于其他的架构,用户可以参考”实现 DDoS 弹性的 AWS 最佳实践”白皮书。对自己架构的相关组件进行 DDoS 防护方面的调优。以达到系统 DDoS 防护能力的最佳状态。

本篇作者

李宛真

亚马逊云科技技术客户经理,主要负责企业级客户的安全合规、成本管理和技术支持等工作。目前专注于协助客户落地在亚马逊云的安全合规工作。在加入亚马逊云科技前拥有丰富的视频云行业(如 CDN、直播、对像存储等)的技术支持经验。

崔俊杰

亚马逊云科技高级产品解决方案架构师,负责亚马逊云科技云边缘安全相关的服务产品。为亚马逊云用户提供 DDoS 防御/网站前端安全防御/域名安全相关的产品咨询。对 Cloudfront,Shield,WAF,Route53,Global Accelerator 等云边缘安全相关产品有深入了解。在计算机安全、数据中心和网络领域有多年的工作经验。