

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

# 缓解技术
<a name="mitigation-techniques"></a>

 某些形式的DDoS缓解措施会自动包含在 AWS 服务中。DDoS通过使用具有特定服务的 AWS 架构（将在以下各节中介绍），以及通过为用户和应用程序之间的网络流的每个部分实施其他最佳实践，可以进一步提高弹性。

 您可以使用在边缘位置运行的 AWS 服务，例如 Amazon CloudFront、G AWS lobal Accelerator 和 Amazon Route 53 来构建针对所有已知基础设施层攻击的全面可用性保护。这些服务是[AWS 全球边缘网络](https://aws.amazon.com/products/networking/edge-networking/)的一部分，在为来自分布在世界各地的边缘位置的任何类型的应用程序流量提供服务时，它们可以提高应用程序的DDoS弹性。您可以在任何环境中运行您的应用程序 AWS 区域，并使用这些服务来保护您的应用程序可用性，并为合法的最终用户优化应用程序的性能。

 使用亚马逊 CloudFront、全球加速器和亚马逊 Route 53 的好处包括：
+  通过 AWS 全球边缘网络访问互联网和DDoS缓解能力。这对于缓解更大的容量攻击很有用，这种攻击可能达到太比特规模。
+  AWS Shield DDoS缓解系统与 AWS 边缘服务集成， time-to-mitigate 从几分钟缩短到不到一秒钟。
+  无状态SYN洪水缓解在将传入的连接传递给受保护的服务之前，使用 SYN Cookie 对其进行验证。这样可以确保只有有效的连接才能到达您的应用程序，同时保护您的合法最终用户免受误报丢失的影响。
+  自动交通工程系统，可分散或隔离大规模攻击的影响。DDoS所有这些服务都会在攻击到达您的源头之前将其隔离在源头，这意味着对受这些服务保护的系统的影响较小。
+  应用程序层防御与之结合使用 CloudFront [AWS WAF](https://aws.amazon.com/waf/)时不需要更改当前的应用程序架构（例如，在 AWS 区域 或本地数据中心中）。

 开启的入站数据传输不收费 AWS ，也无需为缓解的DDoS攻击流量付费。 AWS Shield以下架构图包括 AWS 全球边缘网络服务。

![\[该图显示了DDoS弹性参考架构\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/aws-best-practices-ddos-resiliency/images/ddos-resilient-ref-arch.png)


 该架构包括多项 AWS 服务，可帮助您提高 Web 应用程序抵御DDoS攻击的弹性。下表概述了这些服务及其可以提供的功能。 AWS 为便于在本文档中参考，已使用最佳实践指标 (BP1,BP2) 标记了每项服务。例如，下一节将讨论亚马逊 CloudFront 和全球加速器提供的功能，其中包括最佳实践指标BP1。

 *表 2-最佳做法摘要* 


|   |  AWS Edge | AWS 区域  | 
| --- | --- | --- | 
|   |  将 Amazon CloudFront (BP1) 与 AWS WAF (BP2) 一起使用  |  使用全球加速器 (BP1)  |   使用亚马逊 Route 53 (BP3)   |   将 Elastic Load Balanc BP6 ing () 与 AWS WAF (BP2) 一起使用   |   ACLs在 Amazon 中使用安全组和网络 VPC (BP5)   |   使用[亚马逊弹性计算云 (亚马逊EC2) Auto Scaling](https://aws.amazon.com/pm/ec2/) (BP7)  | 
|   第 3 层（例如UDP反射）攻击缓解   |  ✔  |  ✔  |   ✔   |   ✔   |   ✔   |   ✔   | 
|  缓解第 4 层（例如SYN洪水）攻击  |  ✔  |  ✔  |   ✔   |   ✔   |   |   | 
|  第 6 层（例如TLS）攻击缓解  |  ✔  |  ✔  |   ✔   |   ✔   |   |   | 
|  减少攻击面  |  ✔  |  ✔  |   ✔   |   ✔   |   ✔   |   | 
|  进行扩展以吸收应用层流量  |  ✔  |  ✔  |   ✔   |   ✔   |   ✔   |   ✔   | 
|  第 7 层（应用层）攻击缓解  |  ✔  |  ✔(\$1)  |   ✔   |   ✔   |   ✔(\$1)   |   ✔(\$1)   | 
|   过剩流量和较大规模DDoS攻击的地理隔离和分散   |  ✔  |  ✔  |   ✔   |   |   |   | 

 ✔ (\$1)：如果与 Application Loa [d Balancer AWS WAF 一起使用](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)

 提高应对和缓解DDoS攻击的准备程度的另一种方法是订阅。 AWS Shield Advanced使用的好处 AWS Shield Advanced 包括：
+ 获得[AWS Shield 响应小组](https://docs.aws.amazon.com/waf/latest/developerguide/ddos-srt-support.html) (AWS SRT) 提供的全天候专业支持，以帮助缓解影响应用程序可用性的DDoS攻击，包括可选的主动参与功能 
+ 敏感的检测阈值可以更早地将流量路由到DDoS缓解系统，当与弹性 IP 地址一起使用时，可以改善对亚马逊EC2（包括弹性负载均衡器）或网络负载均衡器的 time-to-mitigate 攻击 
+ 与一起使用时，基于应用程序的基线流量模式量身定制的第 7 层检测 AWS WAF 
+ 自动应用层DDoS缓解，Shield Advanced 通过创建、评估和部署自定义 AWS WAF 规则来响应检测到的DDoS攻击 
+ 无需额外费用即可访问以 AWS WAF 缓解应用程序层DDoS攻击（与 Amazon CloudFront 或 Application Load Balancer 一起使用时） 
+ 无需额外费用[AWS Firewall Manager](https://aws.amazon.com/firewall-manager/)即可集中管理安全策略。
+ 成本保护，使您能够申请有限退还因攻击而产生的与扩展相关的费用。DDoS
+ 针对 AWS Shield Advanced 客户的增强服务级别协议。
+ 保护组使您能够捆绑资源，通过将多个资源视为一个单元，提供了一种自助服务方式，可以自定义应用程序的检测和缓解范围。有关保护组的信息，请参阅 [Shield](https://docs.aws.amazon.com/waf/latest/developerguide/ddos-overview.html#ddos-advanced-protection-groups) [高级保护组。](https://docs.aws.amazon.com/waf/latest/developerguide/ddos-overview.html#ddos-advanced-protection-groups)
+ DDoS使用[AWS 管理控制台](https://aws.amazon.com/console/)API、和 Amazon CloudWatch [指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)和[警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)来监控攻击。

 这项可选的DDoS缓解服务有助于保护托管在任何服务器上的应用程序 AWS 区域。该服务在全球范围内可用于 CloudFront Route 53 和全球加速器。在区域方面，您可以保护应用程序负载均衡器、Classic Load Balancer 和弹性 IP 地址，从而保护[网络负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) (NLBs) 或[亚马逊EC2](https://aws.amazon.com/ec2/)实例。

 有关 AWS Shield Advanced 功能的完整列表和更多信息 AWS Shield，请参阅[AWS Shield 工作原理](https://docs.aws.amazon.com/waf/latest/developerguide/ddos-overview.html)。

# DDoS缓解措施的最佳实践
<a name="best-practices-for-ddos-mitigation"></a>

 在以下各节中，将更深入地描述每种推荐的DDoS缓解最佳实践。有关为静态或动态 Web 应用程序构建DDoS缓解层的快速 easy-to-implement 指南，请参阅[如何[使用 Amazon CloudFront 和 Amazon Route 53 帮助保护动态 Web 应用程序免受DDoS](https://aws.amazon.com/blogs/security/how-to-protect-dynamic-web-applications-against-ddos-attacks-by-using-amazon-cloudfront-and-amazon-route-53/)攻击](https://aws.amazon.com/blogs/security/how-to-protect-dynamic-web-applications-against-ddos-attacks-by-using-amazon-cloudfront-and-amazon-route-53/)。

# 基础设施层防御 (BP1、BP3、BP6、BP7)
<a name="infrastructure-layer-defense-bp1-bp3-bp6-bp7"></a>

 在传统的数据中心环境中，您可以使用容量过剩、部署缓解系统或借助DDoS缓解服务清理流量等技术来缓解基础设施层DDoS攻击。DDoS开启后 AWS，系统会自动提供DDoS缓解功能；但您可以通过选择架构来优化应用程序的DDoS弹性，这些架构可以最好地利用这些功能，同时还允许您针对多余的流量进行扩展。

 帮助缓解容量DDoS攻击的关键考虑因素包括确保有足够的传输容量和多样性可用，以及保护 AWS 资源（如 Amazon EC2 实例）免受攻击流量的侵害。

 某些 Amazon EC2 实例类型支持可以更轻松地处理大量流量的功能，例如高达 100 Gbps 的网络带宽接口和增强的联网。这有助于防止已到达 Amazon EC2 实例的流量出现接口拥塞。与传统实施相比，支持增强联网的实例可提供更高的输入/输出 (I/O) 性能、更高的带宽和更低的CPU利用率。这提高了实例处理大量流量的能力，并最终使它们对每秒数据包 (pps) 负载具有很强的弹性。

 为了实现这种高水平的弹性， AWS 建议使用[亚马逊EC2专用实例](https://aws.amazon.com/ec2/pricing/dedicated-instances/)，或者网络吞吐量更高、带有 “`N`” 后缀并支持网络带宽高达 100 Gbps 的增强联网的 A EC2 mazon 实例，`c6gn.16xlarge`以及 `c5n.18xlarge` /或金属实例（例如）。`c5n.metal`

 有关支持 100 千兆位网络接口和增强联网的 Amazon EC2 实例的更多信息，请参阅[亚马逊EC2实例类型](https://aws.amazon.com/ec2/instance-types/)。

 增强联网所需的模块和必需的`enaSupport`属性集包含在 Amazon Linux 2 和最新版本的亚马逊 Linux 中AMI。因此，如果您在支持的实例类型上使用硬件虚拟机 (HVM) 版本的 Amazon Linux 启动实例，则您的实例已启用增强联网功能。有关更多信息，请参阅在 [Linux 上[测试是否启用了增强联](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html#test-enhanced-networking-ena)网和增强联网](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html)。

# EC2带有 Auto Scaling 功能的亚马逊 (BP7)
<a name="amazon-ec2-with-auto-scaling-bp7"></a>

 缓解基础设施和应用层攻击的另一种方法是大规模运营。如果您有 Web 应用程序，则可以使用负载均衡器将流量分配到大量配置过剩或配置为EC2自动扩展的 Amazon 实例。这些实例可以处理因任何原因而发生的突然流量激增，包括闪电人群或应用程序层DDoS攻击。您可以将 [Amazon CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)设置为启动 Auto Scaling，以根据您定义的事件（例如CPU网络 I/O 甚至自定义指标）自动扩展您的 Amazon EC2 队列规模。RAM

 当请求量意外增加时，这种方法可以保护应用程序的可用性。在应用程序中使用 Amazon CloudFront、Application Load Balancer、Classic 负载均衡器或网络负载均衡器时，TLS协商由分配 (Amazon CloudFront) 或负载均衡器处理。这些功能通过扩展以处理合法请求和TLS滥用攻击，帮助保护您的实例免受TLS基于攻击的影响。

 有关使用亚马逊 CloudWatch 调用 Auto Scaling 的更多信息，请参阅[监控您的 Auto Scaling 组和实例的亚马逊 CloudWatch 指标](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-monitoring.html)。

 Amazon EC2 提供可调整大小的计算容量，因此您可以根据需求的变化快速向上或向下扩展。您可以通过扩展 [Amazon A EC2 uto Scaling 组的大小自动向应用程序添加实例来进行水平扩展](https://docs.aws.amazon.com/autoscaling/ec2/userguide/scaling_plan.html)，也可以使用更大的EC2实例类型进行垂直扩展。

通过使用 [Amazon RDS Proxy](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy.html)，您可以允许应用程序共享和共享数据库连接，以提高其扩展和处理不可预测的数据库流量激增的能力。 您也可以为 Amazon RDS 数据库实例启用存储自动缩放。有关更多信息，请参阅[使用 Amazon RDS 存储自动扩展功能自动管理容量](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling)。

# Elastic Load Balancin BP6 g (
<a name="elastic-load-balancing-bp6"></a>

 大型DDoS攻击可能会使单个 Amazon EC2 实例的容量不堪重负。借助 Elastic Load Balancing (ELB)，您可以通过在多个后端实例之间分配流量来降低应用程序过载的风险。Elastic Load Balancing 可以自动扩展，允许您在出现意想不到的额外流量（例如由于闪电人群或DDoS攻击而导致的额外流量）时管理更大的容量。对于在 Amazon 内部构建的应用程序VPC，根据您的应用程序类型，ELBs需要考虑三种类型：应用程序负载均衡器 (ALB)、网络负载均衡器 (NLB) 和 Classic Load Balancer (CLB)。

 对于 Web 应用程序，您可以使用 Application Load Balancer 根据内容路由流量，并且仅接受格式正确的 Web 请求。Application Load Balancer 可以阻止许多常见DDoS攻击，例如SYN洪水攻击或UDP反射攻击，从而保护您的应用程序免受攻击。当检测到这些类型的攻击时，Application Load Balancer 会自动扩展以吸收额外的流量。由于基础设施层攻击而导致的扩展活动对 AWS 客户来说是透明的，不会影响您的账单。

 有关使用 Application Load B [alancer 保护 Web 应用程序的更多信息，请参阅应用程序负载均衡器入门](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancer-getting-started.html)。

 对于非HTTP/HTTPS应用程序，您可以使用 Network Load Balancer 以超低的延迟将流量路由到目标（例如 Amazon EC2 实例）。Network Load Balancer 的一个关键考虑因素是，通过有效侦听器到达负载均衡器的任何TCPSYN或UDP流量都将路由到您的目标，而不是被吸收，但这不适用于终止连接的 TLS-listeners。TCP对于带有TCP侦听器的网络负载均衡器，我们建议部署全球加速器来防范SYN洪水。

 您可以使用 Shield Advanced 为弹性 IP 地址配置DDoS保护。将每个可用区的弹性 IP 地址分配给网络负载均衡器时，Shield Advanced 将对网络负载均衡器流量应用相关DDoS保护。

 有关使用 Network Load [Balancer 保护TCP和UDP应用程序的更多信息，请参阅网络负载均衡器入门](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancer-getting-started.html)。

**注意**  
 根据安全组的配置，它要求使用安全组的资源使用连接跟踪来跟踪有关流量的信息，这可能会影响负载均衡器处理新连接的能力，因为跟踪的连接数量有限。    
 如果安全组配置包含接受来自任何 IP 地址（例如`0.0.0.0/0`或`::/0`）的流量的入口规则，但没有允许响应流量的相应规则，则安全组使用连接跟踪信息来允许发送响应流量。如果发生DDoS攻击，所跟踪的最大连接数可能会耗尽。要提高面向公众的 Application Load Balancer 或 Classic Load Balancer 的DDoS弹性，请确保将与您的负载均衡器关联的安全组配置为不使用连接跟踪（未跟踪的连接），这样流量就不受连接跟踪限制的约束。    
 为此，请为您的安全组配置一条规则，允许入站规则接受来自任何 IP 地址（`0.0.0.0/0`或`::/0`）的TCP流量，并在出站方向添加相应的规则，允许此资源发送响应流量（允许任何 IP 地址的出站范围`0.0.0.0/0`或`::/0`）所有端口（0-65535），这样就可以根据安全组规则而不是跟踪信息来允许响应流量。 使用此配置，Classic 和 Application Load Balancer 不受可能影响与其负载均衡器节点建立新连接的耗尽连接跟踪限制，并且允许其在DDoS发生攻击时根据流量的增加进行扩展。 有关未跟踪连接的更多信息，请访问：[安全组连接跟踪：未跟踪的连接](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html#untracked-connections)。  
 只有当DDoS流量来自安全组允许的来源时，避免安全组连接跟踪才会有所帮助——来自安全组中不允许的来源的DDoS流量不会影响连接跟踪。在这种情况下，无需重新配置安全组以避免连接跟踪，例如，如果您的安全组允许列表由您高度信任的 IP 范围组成，例如公司公司防火墙或可信VPN出口IPs或。CDNs

# 使用 AWS 边缘位置进行缩放 (BP1,BP3)
<a name="use-aws-edge-locations-for-scale-bp1-bp3"></a>

 访问高度扩展、多样化的互联网连接可以显著提高您优化用户延迟和吞吐量、吸收DDoS攻击和隔离故障的能力，同时最大限度地减少对应用程序可用性的影响。 AWS 边缘站点提供了额外的网络基础设施层，可为使用亚马逊 CloudFront、全球加速器和 Amazon Route 53 的任何 Web 应用程序提供这些好处。借助这些服务，您可以在边缘全面保护运行的应用程序 AWS 区域。

# 在边缘交付 Web 应用程序 (BP1)
<a name="web-application-delivery-at-the-edge-bp1"></a>

 Amazon CloudFront 是一项可用于交付您的整个网站的服务，包括静态、动态、流媒体和交互式内容。即使您没有提供可缓存的内容，也可以使用永久连接和变量 time-to-live (TTL) 设置从您的源站卸载流量。使用这些 CloudFront 功能可以减少返回源站的请求和TCP连接数量，从而帮助保护您的 Web 应用程序免受HTTP洪水的侵害。

 CloudFront 只接受格式良好的连接，这有助于防止许多常见DDoS攻击（例如SYN洪水攻击和UDP反射攻击）到达您的源头。DDoS攻击在靠近源头的地理位置上也是隔离的，这样可以防止流量影响其他位置。这些功能可以极大地提高您在大规模DDoS攻击期间继续向用户提供流量的能力。您可以使用 CloudFront 来保护互联网上 AWS 或其他地方的来源。

 如果您使用[亚马逊简单存储服务](https://aws.amazon.com/s3/) (Amazon S3) 在互联网上提供静态内容， AWS 建议您使用亚马逊 CloudFront 来保护您的存储桶，它具有以下好处：
+  限制对 Amazon S3 存储桶的访问权限，使其不可公开访问。
+  确保查看者（用户）只能通过指定的 CloudFront 分配访问存储桶中的内容，也就是说，防止他们直接从存储桶或通过非预期的分发访问内容。 CloudFront 

 为此，请配置 CloudFront 为向 Amazon S3 发送经过身份验证的请求，并将 Amazon S3 配置为仅允许访问来自的经过身份验证的请求 CloudFront。 CloudFront 提供了两种向 Amazon S3 源发送经过身份验证的请求的方法：源访问控制 (OAC) 和源访问身份 (OAI)。我们建议使用，OAC因为它支持：
+  所有 Amazon S3 存储桶 AWS 区域，包括 2022 年 12 月之后推出的可选区域 
+  使用 AWS KMS (SSE-KMS) 的 Amazon S3 [服务器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) 
+  对 Amazon S3 的动态请求（`PUT` 和 `DELETE`） 

 有关OAC和的更多信息OAI，请参阅[限制访问 Amazon S3 源](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html)。

 有关使用 Amazon 保护和优化 Web 应用程序性能的更多信息 CloudFront，请参阅[亚马逊入门 CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GettingStarted.html)。

# 使用 AWS 全球加速器保护远离源站的网络流量 (BP1)
<a name="protect-network-traffic-further-from-your-origin-using-aws-global-accelerator-bp1"></a>

 Global Accelerator 是一项网络服务，可将用户流量的可用性和性能提高多达 60%。这是通过在离用户最近的边缘位置传入流量，然后通过 AWS 全球网络基础设施将其路由到您的应用程序来实现的，无论它是以单个还是多个应用程序运行。 AWS 区域

 Global Accelerator 根据距离用户最近的性能将UDP流量路由TCP AWS 区域 到最佳端点。如果应用程序出现故障，Global Accelerator 会在 30 秒内故障转移到下一个最佳端点。Global Accelerator利用 AWS 全球网络的巨大容量以及与Shield的集成，例如无状态SYN代理功能，该功能可以挑战新的连接尝试，并且仅为合法的最终用户提供服务，以保护应用程序。

 即使您的应用程序使用不支持的协议， CloudFront 或者您正在运行需要全局静态 IP 地址的 Web 应用程序，您也可以实施一种DDoS弹性架构，该架构具有许多与 Web 应用程序交付边缘最佳实践相同的优势。

 例如，您可能需要最终用户可以将其添加到防火墙的允许列表中且不被任何其他 AWS 客户使用的 IP 地址。在这些场景中，您可以使用全球加速器来保护在 Application Load Balancer 上运行的 Web 应用程序，还可以结合使用 AWS WAF 来检测和缓解 Web 应用程序层请求洪水。

 有关使用全球加速器保护和优化网络流量性能的更多信息，请参阅[全球加速器入门。](https://docs.aws.amazon.com/global-accelerator/latest/dg/getting-started.html)

# 边缘域名解析 (BP3)
<a name="domain-name-resolution-at-the-edge-bp3"></a>

**Topics**
+ [使用 Route 53 了解DNS可用性](using-route53-for-dns-availability.md)
+ [配置 Route 53 以保护其免受`NXDOMAIN`攻击的成本](configuring-route53-for-cost-protection-from-nxdomain-attacks.md)

# 使用 Route 53 了解DNS可用性
<a name="using-route53-for-dns-availability"></a>

 Amazon Route 53 是一项高度可用且可扩展的域名系统 (DNS) 服务，可用于将流量引导至您的 Web 应用程序。它包括诸如流量流、Health Checks and Monitoring、基于延迟的路由和地理位置等高级功能。DNS这些高级功能允许您控制服务如何响应DNS请求，从而提高 Web 应用程序的性能并避免网站中断。它是唯一一个数据平面可用性达到 100% 的 AWS 服务SLA。

 Amazon Route 53 使用诸如[随机分片](https://aws.amazon.com/builders-library/workload-isolation-using-shuffle-sharding/)和[任意广播条带](https://aws.amazon.com/blogs/architecture/a-case-study-in-global-fault-isolation/)化之类的技术，即使DNS服务成为攻击目标，也能帮助用户访问您的应用程序。DDoS

 使用 shuffle 分片时，您的委托集中的每个域名服务器都对应于一组独特的边缘位置和互联网路径。这提供了更大的容错能力，并最大限度地减少了客户之间的重叠。如果委托集中的一个域名服务器不可用，则用户可以重试并从另一个边缘位置接收来自另一台域名服务器的响应。

 Anycast 条带化允许通过最优的位置为每个DNS请求提供服务，从而分散网络负载并减少延迟。DNS这为用户提供了更快的响应。此外，Amazon Route 53 可以检测查询来源和DNS查询量中的异常情况，并对来自已知可靠用户的请求进行优先排序。

 有关使用 Amazon Route 53 将用户路由到您的应用程序的更多信息，请参阅 [Amazon Route 53 入门](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started.html)。

# 配置 Route 53 以保护其免受`NXDOMAIN`攻击的成本
<a name="configuring-route53-for-cost-protection-from-nxdomain-attacks"></a>

 `NXDOMAIN`攻击发生在攻击者通常通过已知的 “良好” 解析器向托管区域发送大量请求以获取不存在的子域名时。这些攻击的目的可能是影响递归解析器的缓存和/或权威解析器的可用性，也可能是试图发现托管区域记录的一种DNS侦察形式。将 Route 53 用作权威解决程序可以降低可用性/性能影响的风险，但结果可能会导致每月 Route 53 的成本大幅增加。为了防止成本上涨，请利用 [Route 53 的定价](https://aws.amazon.com/route53/pricing/)，当满足以下两个条件时，DNS查询是免费的：
+  查询中的域名或子域名（`example.com`或`store.example.com`）和记录类型（`A`）与别名记录相匹配。
+  别名目标是一个 AWS 资源，而不是另一个 Route 53 记录。

 例如，创建通配符记录，`*.example.com`其类型`A`（别名）指向EC2实例、Elastic Load Balancer 或 CloudFront 分配等 AWS 资源，这样在查询时，将返回该资源的 IP，并且无需为查询付费。`qwerty12345.example.com`

# 应用层防御 (BP1,BP2)
<a name="application-layer-defense-bp1-bp2"></a>

 到目前为止，本 paper 中讨论的许多技术都可有效缓解基础设施层DDoS攻击对应用程序可用性的影响。为了同时抵御应用程序层攻击，你需要实现一种架构，允许你专门检测、扩展以吸收和阻止恶意请求。这是一个重要的考虑因素，因为基于网络的DDoS缓解系统通常无法有效缓解复杂的应用层攻击。

# 检测和过滤恶意 Web 请求 (BP1,BP2)
<a name="detect-and-filter-malicious-web-requests-bp1-bp2"></a>

 当您的应用程序运行时 AWS，您可以利用 Amazon CloudFront （及其HTTP缓存功能）和 Shield 高级自动应用程序层保护来帮助防止在应用程序层DDoS攻击期间不必要的请求到达您的源。 AWS WAF

# Amazon CloudFront
<a name="cloudfront"></a>

 Amazon CloudFront 可以通过阻止非网络流量到达您的源站来帮助减少服务器负载。要向 CloudFront 应用程序发送请求，必须通过完整的握手使用有效的 IP 地址建立连接，该TCP握手无法伪造。此外， CloudFront 还可以自动关闭来自读取速度慢或写入速度慢的攻击者（例如 S [lowloris](https://en.wikipedia.org/wiki/Slowloris_(computer_security))）的连接。

## CDN 缓存
<a name="cdn-caching"></a>

 CloudFront 允许您从 AWS 边缘位置提供动态内容和静态内容。通过从CDN缓存中提供可代理缓存的内容，可以防止请求在缓存期间从给定的边缘缓存节点到达您的源。TTL再加上对过期但可缓存的内容的[请求崩溃](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html#request-custom-traffic-spikes)，即使很短也TTL意味着在该内容的请求泛滥期间，到达来源的请求数量可以忽略不计。此外，启用诸如 [CloudFront Origin Shield](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/origin-shield.html) 之类的功能还可以进一步帮助减少源站的负载——你可以采取的任何措施[来提高缓存命中率](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cache-hit-ratio.html)，都可能意味着有影响力和无影响力的请求洪水攻击之间的区别。

# AWS WAF
<a name="aws-waf"></a>

 通过使用 AWS WAF，您可以在全球 CloudFront 分发或区域资源上配置 Web 访问控制列表 (WebACLs)，以根据请求签名筛选、监控和阻止请求。要确定是允许还是阻止请求，您可以考虑诸如 IP 地址或原产国、请求中的某些字符串或模式、请求中特定部分的大小以及是否存在恶意SQL代码或脚本等因素。您还可以根据请求运行CAPTCHA拼图和静默客户端会话挑战。

 两者都 AWS WAF 允许您设置地理限制，以阻止或允许来自选定国家/地区的请求。 CloudFront 这可以帮助阻止或限制来自您不希望为用户提供服务的地理位置的攻击。借助中精细的地理匹配规则语句 AWS WAF，您可以将访问权限控制到区域级别。

 您可以使用 [scope-down 语句](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-scope-down-statements.html)来缩小规则评估的请求范围以节省成本，并使用 [“标签” Web 请求](https://docs.aws.amazon.com/waf/latest/developerguide/waf-labels.html)来允许匹配请求的规则将匹配结果传达给稍后在同一 Web 中评估的规则。ACL选择此选项可在多个规则中重复使用相同的逻辑。

 您还可以定义完整的自定义响应，包括响应代码、标头和正文。

 要帮助识别恶意请求，请查看您的 Web 服务器日志或 AWS WAF用户的日志记录并请求采样。通过启用 AWS WAF 日志记录，您可以获得有关 Web 分析的流量的详细信息。ACL AWS WAF 支持日志过滤，允许您指定记录哪些 Web 请求以及哪些请求在检查后从日志中丢弃。

 日志中记录的信息包括从您的 AWS 资源 AWS WAF 收到请求的时间、有关该请求的详细信息以及所请求的每条规则的匹配操作。

 抽样请求提供有关过去三小时内符合您的 AWS WAF 规则之一的请求的详细信息。您可以使用此信息来识别潜在的恶意流量签名，并创建拒绝这些请求的新规则。如果您看到许多带有随机查询字符串的请求，请确保仅允许与应用程序缓存相关的查询字符串参数。此技术有助于缓解针对您的来源的缓存破坏攻击。

# AWS WAF — 基于费率的规则
<a name="aws-waf-rate-based-rules"></a>

 AWS 强烈建议在 5 分钟滑动窗口内收到的HTTP请求数量超过您定义的阈值时，使用中基于速率的规则自动屏蔽不良行为者的 IP 地址， AWS WAF 从而防止请求泛滥。违规的客户端 IP 地址将收到 403 禁止的响应（或配置的区块错误响应），并一直处于屏蔽状态，直到请求速率降至阈值以下。

 建议对基于速率的规则进行分层，以提供增强的保护，这样您就可以：
+  基于速率的一揽子规则，可保护您的应用程序免受大规模HTTP洪水的侵害。
+  一个或多个基于费率的规则，用于保护比基于费率URIs的一揽子规则更严格的特定费率。

 例如，您可以选择在 5 分钟内限制为 500 个请求的基于速率的一揽子规则（没有范围缩小语句），然后使用 scope-down 语句创建以下一个或多个限制低于 500（5 分钟内低至 100 个请求）的基于速率的规则：
+  使用诸如 “`if NOT uri_path contains '.'`” 之类的范围缩小语句保护您的**网页**，以便进一步保护对不带文件扩展名的资源请求。这还可以保护您的主页 (`/`)，这是一条经常被定位的URI路径。
+  使用范围缩小语句（例如 “”）保护**动态端点** `if method exactly matches 'post' (convert lowercase)` 
+  使用像 “” 这样的范围缩小来保护访问您的数据库或调用一次性密码 (OTP) 的**繁重请求** `if uri_path starts_with '/login' OR uri_path starts_with '/signup' OR uri_path starts_with '/forgotpassword'`

 “阻止” 模式下的基于速率是防范请求泛滥 defense-in-depth WAF配置的基石，也是批准 AWS Shield Advanced 成本保护请求的必要条件。我们将在以下各节中研究其他 defense-in-depth WAF配置。

# AWS WAF — 知识产权声誉
<a name="aws-waf-ip-reputation"></a>

 要防止基于 IP 地址信誉的攻击，您可以使用 IP 匹配或使用[托管规则来创建规则](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-list.html) AWS WAF。

 [亚马逊的 IP 信誉列表规则组](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html#aws-managed-rule-groups-ip-rep-amazon)包括基于亚马逊内部威胁情报的规则。这些规则寻找作为机器人、对 AWS 资源进行侦察或积极参与DDoS活动的 IP 地址。据观察，该`AWSManagedIPDDoSList`规则阻止了90％以上的恶意请求洪水。

 [匿名 IP 列表规则组](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html#aws-managed-rule-groups-ip-rep-anonymous)包含用于阻止来自允许混淆查看者身份的服务的请求的规则。其中包括来自代理VPNs、Tor 节点和云平台（不包括 AWS）的请求。

 此外，您还可以使用[安全自动化的 IP [列表解析器组件来使用第三方 IP](https://docs.aws.amazon.com/solutions/latest/security-automations-for-aws-waf/component-details.html#ip-lists-parser) 信誉列表作为 AWS WAF解决方案](https://docs.aws.amazon.com/solutions/latest/security-automations-for-aws-waf/component-details.html)。

# AWS WAF -智能威胁缓解
<a name="aws-waf-intelligent-threat-mitigation"></a>

 僵尸网络是一种严重的安全威胁，通常用于进行非法或有害的活动，例如发送垃圾邮件、窃取敏感数据、发起勒索软件攻击、通过欺诈性点击进行广告欺诈或发起分布式 denial-of-service (DDoS) 攻击。要防止机器人攻击，请使用[AWS WAF 机器人控制](https://docs.aws.amazon.com/waf/latest/developerguide/waf-bot-control.html)托管规则组。该规则组提供了一个基本的 “通用” 保护级别，该级别为自我识别的机器人添加标签，验证普遍需要的机器人，检测高度可信的机器人签名，以及一个 “定向” 保护级别，用于增加对无法自我识别的高级机器人的检测。

有针对性的保护使用浏览器查询、指纹识别和行为启发式等高级检测技术来识别恶意的机器人流量，然后应用缓解控制，例如速率限制CAPTCHA和挑战规则操作。Targeted 还提供了速率限制选项，以强制执行类似人类的访问模式，并通过使用请求令牌来应用动态速率限制。有关更多详细信息，请参阅[AWS WAF 机器人控制规则组。](https://docs.aws.amazon.com/waf/latest/developerguide/waf-bot-control.html)要检测和管理应用程序登录页面上的恶意接管企图，你可以使用 F AWS WAF raud Control 账户接管预防 (ATP) 规则组。规则组通过检查客户端发送到应用程序登录端点的登录尝试来实现此目的，还会检查您的应用程序对登录尝试的响应，以跟踪成功率和失败率。

 账户创建欺诈是一种在线非法活动，攻击者试图创建一个或多个虚假账户。攻击者使用虚假账户进行欺诈活动，例如滥用促销和注册奖金、冒充他人以及网络攻击（例如网络钓鱼）。虚假账户的存在会损害您在客户中的声誉并面临财务欺诈，从而对您的业务产生负面影响。

 您可以通过实施 Fraud Control 账户创建欺 AWS WAF 诈预防 (ACFP) 功能来监控和控制账户创建欺诈企图。 AWS WAF 在 AWS 托管式规则 规则组中提供此功能`AWS ManagedRulesACFPRuleSet`以及配套应用程序集成SDKs。

 在[*AWS WAF 智能威胁缓解*中详细了解这些保护措施。](https://docs.aws.amazon.com/waf/latest/developerguide/waf-managed-protections.html)

# 自动缓解应用层DDoS事件 (BP1、、BP2) BP6
<a name="automatically-mitigate-application-layer-ddos-events-bp1-bp2-bp6"></a>

 如果您已订阅 AWS Shield Advanced，则可以启用 [Shield Advanced 自动应用](https://docs.aws.amazon.com/waf/latest/developerguide/ddos-automatic-app-layer-response.html)[层DDoS缓解](https://docs.aws.amazon.com/waf/latest/developerguide/ddos-automatic-app-layer-response.html)功能。此功能可自动创建、评估和部署 AWS WAF 规则，以代表您缓解第 7 层DDoS事件。

 AWS Shield Advanced 为与 WAF Web 关联的每个受保护资源建立流量基准ACL。明显偏离既定基线的流量将被标记为潜在DDoS事件。检测到事件后，会 AWS Shield Advanced 尝试识别构成该事件的 Web 请求的签名，如果识别出签名，则会创建 AWS WAF 规则以减少使用该签名的流量。

 根据历史基准评估规则并认为规则是安全的，它们就会被添加到 Shield 管理的规则组中，您可以选择在计数模式还是阻止模式下部署规则。Shield Advanced 在确定事件已完全消退后会自动移除 AWS WAF 规则。

# 参与SRT（仅限 Shield 高级版订阅者）
<a name="engage-srt-shield-advanced-subscribers-only"></a>

 此外，订阅 Shield Advanced 后，你可以使用 AWS SRT来帮助你创建规则，以缓解影响应用程序可用性的攻击。您可以授予对您账户 AWS Shield Advanced 和的 AWS SRT有限访问权限 AWS WAF APIs。 AWS SRT只有在您明确授权的情况下，才会访问这些内容APIs以对您的账户进行缓解措施。有关更多信息，请参阅本文档的[支持](support.md)章节。

 您可以使用 AWS Firewall Manager 在整个组织中集中配置和管理安全 AWS WAF 规则，例如 AWS Shield Advanced 保护和规则。您的 AWS Organizations 管理帐户可以指定管理员帐户，该帐户有权创建 Firewall Manager 策略。这些策略允许您定义标准，例如资源类型和标签，以确定规则的应用位置。当您有多个账户并想要标准化保护时，这很有用。

 有关以下内容的更多信息：
+  AWS 托管式规则 有关 AWS WAF信息，请参[AWS 托管式规则 阅 AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups.html)。
+  使用地理限制来限制对您的 CloudFront 分发内容的访问权限，请参阅[限制内容的地理分布](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/georestrictions.html)。
+  使用 AWS WAF，请参阅：
  +  [入门 AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started.html) 
  +  [记录网络ACL流量信息](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html) 
  +  [查看 Web 请求示例](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-testing.html#web-acl-testing-view-sample) 
+  配置基于速率的规则，请参阅[使用基于速率的规则保护网站和服务](https://aws.amazon.com/blogs/aws/protect-web-sites-services-using-rate-based-rules-for-aws-waf/)。 AWS WAF
+  如何使用 Firewall Manager 管理 AWS 资源中的规则部署，请参阅：
  +  F@@ [irewall Manager AWS WAF 策略入门](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started-fms.html)。
  +  Fi@@ [rewall Manager Shield 高级策略入门](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started-fms-shield.html)。