如何使用 AWS WAF 缓解 DDoS 攻击?
我想使用 AWS WAF 保护包来缓解应用层的分布式阻断服务 (DDoS) 攻击。
简短描述
要使用 AWS WAF 作为抵御应用层 DDoS 攻击的主要防护手段,请执行以下操作:
- 使用基于速率的规则。
- 查询 AWS WAF 日志以收集未授权活动的具体信息。
- 创建地理匹配规则,阻止来自业务预期范围之外的国家/地区的恶意请求。
- 创建 IP 集匹配规则以阻止恶意请求。
- 创建字符串匹配规则以阻止恶意请求。
- 创建正则表达式匹配规则以阻止恶意请求。
- 启用机器人控制功能并使用目标防护级别。
- 使用 Amazon IP 信誉列表托管规则组。
对于基础架构层攻击,请使用 Amazon CloudFront 和弹性负载均衡 (ELB) 等 AWS 服务来提供自动 DDoS 防护。有关详细信息,请参阅 DDoS 弹性的 AWS 最佳实践。您还可以使用 AWS Shield Advanced 自动应用层来缓解复杂攻击(例如 3-7 层)。要了解详细信息,请参阅使用 Shield Advanced 自动缓解应用层 DDoS。
解决方法
使用基于速率的规则
创建基于速率的一揽子规则
使用基于速率的一揽子规则为 IP 地址可以向您的 Web 应用程序发出的请求数量设置阈值。
完成以下步骤:
- 打开 AWS WAF 控制台。
- 对于 Region(区域),选择您创建了保护包的 AWS 区域。
- 在导航窗格中,选择 Resources & protection packs(资源和保护包)。
- 在保护包的右侧,选择区域名称旁边的图标以选择保护包。
- 在您选择的保护包中,选择 Rules(规则)。
- 选择 Rules(规则)旁边的 View and edit(查看和编辑)以查看或修改与您的保护包关联的规则。
- 在 Manage rules(管理规则)的右侧窗格中,选择 Add rules(添加规则)。
- 选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 选择 Rate based rule(基于速率的规则),然后选择 Next(下一步)。
- 要设置规则,请配置以下值:
对于 Action(操作),选择 Block(阻止)。
对于 Name(名称),输入规则名称。
对于 Rate limit(速率限制),输入一个介于 10 和 2,000,000,000 之间的数字。
**注意:**如果不确定要设置哪种速率限制,请使用规则操作进行计数并监控您的请求模式。然后,根据基准设置速率限制。
对于 Evaluation window(评估时段),输入 1、2、5 或 10 分钟。
在 Rule configuration block(规则配置块)下拉列表中:
对于 IP address to use for rate limiting(要用于速率限制的 IP 地址),选择 Source IP address(源 IP 地址)或 IP address in header(标头中的 IP 地址)。
**注意:**在提交请求速率更改后,AWS WAF 应用或移除规则操作可能会有延迟。
对于 Scope of inspection(检查范围),选择 Consider all requests(考虑所有请求)。 - 选择 Create Rule(创建规则)。
创建基于速率的自定义键(URI 路径)规则
完成以下步骤:
- 打开 AWS WAF 控制台。
- 对于 Region(区域),选择您创建了保护包的 AWS 区域。
- 在导航窗格中,选择 Resources & protection packs(资源和保护包)。
- 在保护包的右侧,选择区域名称旁边的图标以选择保护包。
- 在您选择的保护包中,选择 Rules(规则)。
- 选择 Rules(规则)旁边的 View and edit(查看和编辑)以查看或修改与您的保护包关联的规则。
- 在 Manage rules(管理规则)的右侧窗格中,选择 Add rules(添加规则)。
- 选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 选择 Rate based rule(基于速率的规则),然后选择 Next(下一步)。
- 要设置规则,请配置以下值:
对于 Action(操作),选择 Block(阻止)。
对于 Name(名称),输入规则名称。
对于 Rate limit(速率限制),输入一个介于 10 和 2,000,000,000 之间的数字。
**注意:**如果不确定要设置哪种速率限制,请使用规则操作进行计数并监控您的请求模式。然后,根据基准设置速率限制。
对于 Evaluation window(评估时段),输入 1、2、5 或 10 分钟。
在 Rule configuration block(规则配置块)下拉列表中:
在 Rule configuration(规则配置)下,选择 Custom Keys(自定义键)。 - 对于 Request aggregation keys(请求聚合键),选择 URI path(URI 路径)。
- 对于 Text transformations(文本转换),选择 None(无)。
**注意:**在提交请求速率更改后,AWS WAF 应用或移除规则操作可能会有延迟。
对于 Scope of inspection(检查范围),选择 Consider all requests(考虑所有请求)。 - 选择 Create Rule(创建规则)。
有关详细信息,请参阅三条最重要的基于速率的 AWS WAF 规则。
查询 AWS WAF 日志以收集未授权活动的具体信息
启用 AWS WAF 日志记录。然后,查询 AWS WAF 日志以调查 DDoS 场景。
您可以使用以下 AWS 服务来查询 AWS WAF 日志:
使用 Amazon Athena 日志解析器或 AWS Lambda 日志解析器
AWS WAF 对基于速率的规则设置了最低可接受的速率限制。如果由于流量较小而无法使用基于速率的规则,或者您需要自定义的阻止周期,请使用 Athena 或 Lambda 中的日志解析器。这两项服务均在 Security Automations for AWS WAF 中可用。
创建地理匹配规则语句,阻止来自业务预期范围之外的国家/地区的恶意请求
完成以下步骤:
- 打开 AWS WAF 控制台。
- 对于 Region(区域),选择您创建了保护包的 AWS 区域。
- 在导航窗格中,选择 Resources & protection packs(资源和保护包)。
- 在保护包的右侧,选择区域名称旁边的图标以选择保护包。
- 在您选择的保护包中,选择 Rules(规则)。
- 选择 Rules(规则)旁边的 View and edit(查看和编辑)以查看或修改与您的保护包关联的规则。
- 在 Manage rules(管理规则)的右侧窗格中,选择 Add rules(添加规则)。
- 选择 Geo-based rule(基于地理位置的规则)。
- 要设置规则,请配置以下值:
对于 Rule action(规则操作),选择 Block(阻止)。
对于 Name(名称),输入规则名称。
在语句下选择要阻止的国家/地区代码。 - 选择 Create Rule(创建规则)。
有关详细信息,请参阅地理匹配规则语句。
创建 IP 集匹配规则以阻止来自特定 IP 地址的恶意请求
完成以下步骤:
- 打开 AWS WAF 控制台。
- 对于 Region(区域),选择您创建了保护包的 AWS 区域。
- 在导航窗格中,选择 Resources & protection packs(资源和保护包)。
- 在保护包的右侧,选择区域名称旁边的图标以选择保护包。
- 在您选择的保护包中,选择 Rules(规则)。
- 选择 Rules(规则)旁边的 View and edit(查看和编辑)以查看或修改与您的保护包关联的规则。
- 在 Manage rules(管理规则)的右侧窗格中,选择 Add rules(添加规则)。
- 选择 IP based rule(基于 IP 的规则),然后选择 Next(下一步)。
- 要设置规则,请配置以下值:
对于 Rule action(规则操作),选择 Block(阻止)。
对于 Name(名称),输入规则名称。
在语句下激活 Use existing IP set(使用现有 IP 集),然后选择 IP 集。 - 选择 Create Rule(创建规则)。
有关详细信息,请参阅 IP 集匹配规则语句。
创建字符串匹配规则语句以阻止恶意请求
完成以下步骤:
- 打开 AWS WAF 控制台。
- 对于 Region(区域),选择您创建了保护包的 AWS 区域。
- 在导航窗格中,选择 Resources & protection packs(资源和保护包)。
- 在保护包的右侧,选择区域名称旁边的图标以选择保护包。
- 在您选择的保护包中,选择 Rules(规则)。
- 选择 Rules(规则)旁边的 View and edit(查看和编辑)以查看或修改与您的保护包关联的规则。
- 在 Manage rules(管理规则)的右侧窗格中,选择 Add rules(添加规则)。
- 选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 再次选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 对于 Rule action(规则操作),选择 Block(阻止)。
- 要设置规则,请配置以下值:
对于 Name(名称),输入规则名称。
对于 If the request(如果请求),选择 match the statement(匹配语句)。
对于 Inspect(检查),选择 Header(标头)。
对于 Header field name(标头字段名称),输入要阻止的机器人在 AWS WAF 日志中显示的名称。
对于 Match Type(匹配类型),选择 Exactly matches string(完全匹配字符串)。
对于 String to Match(要匹配的字符串),输入要阻止的机器人在 AWS WAF 日志中显示的值。 - 选择 Create Rule(创建规则)。
有关详细信息,请参阅字符串匹配规则语句。
创建正则表达式匹配规则语句以阻止恶意请求
完成以下步骤:
- 打开 AWS WAF 控制台。
- 对于 Region(区域),选择您创建了保护包的 AWS 区域。
- 在导航窗格中,选择 Resources & protection packs(资源和保护包)。
- 在保护包的右侧,选择区域名称旁边的图标以选择保护包。
- 在您选择的保护包中,选择 Rules(规则)。
- 选择 Rules(规则)旁边的 View and edit(查看和编辑)以查看或修改与您的保护包关联的规则。
- 在 Manage rules(管理规则)的右侧窗格中,选择 Add rules(添加规则)。
- 选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 再次选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 要设置规则,请配置以下值:
对于 Rule action(规则操作),选择 Block(阻止)。
对于 Name(名称),输入规则名称。
在 If the request(如果请求)下,选择 match the statement(匹配语句)
对于 Inspect(检查),选择 URI Path(URI 路径)。
对于 Match type(匹配类型),选择 Matches regular expression(匹配正则表达式)。
对于 String to match(要匹配的字符串),输入要阻止的正则表达式。
对于 Rule Action(规则操作),选择 Block(阻止)。 - 选择 Create Rule(创建规则)。
有关详细信息,请参阅正则表达式匹配规则语句。
启用机器人控制功能并使用目标防护级别
AWS WAF 机器人控制功能的目标防护级别通过结合使用速率限制、CAPTCHA(验证码)和 Challenge(质询)操作来减少机器人活动。有关目标机器人控制功能定价的信息,请参阅 AWS WAF 定价页面上的案例 F。
要启用机器人控制功能和目标防护级别,请完成以下步骤:
- 打开 AWS WAF 控制台。
- 对于 Region(区域),选择您创建了保护包的 AWS 区域。
- 在导航窗格中,选择 Resources & protection packs(资源和保护包)。
- 在保护包的右侧,选择区域名称旁边的图标以选择保护包。
- 在您选择的保护包中,选择 Rules(规则)。
- 选择 Rules(规则)旁边的 View and edit(查看和编辑)以查看或修改与您的保护包关联的规则。
- 在 Manage rules(管理规则)的右侧窗格中,选择 Add rules(添加规则)。
- 选择 AWS-managed rule group(AWS 托管规则组),然后选择 Next(下一步)。
- 在 Paid(付费)下,选择 Bot Control rule group(机器人控制功能规则组)。
- 在 Inspection level(检查级别)下,选择 Targeted(目标)。
- 选择 Create rule(创建规则)。
使用 Amazon IP 信誉列表托管规则组
AWSManagedIPReputationList 托管规则组利用 Amazon 内部威胁情报来识别主动参与 DDoS 活动的 IP 地址。
要启用 Amazon IP 信誉列表托管规则组,请完成以下步骤:
- 打开 AWS WAF 控制台。
- 对于 Region(区域),选择您创建了保护包的 AWS 区域。
- 在导航窗格中,选择 Resources & protection packs(资源和保护包)。
- 在保护包的右侧,选择区域名称旁边的图标以选择保护包。
- 在您选择的保护包中,选择 Rules(规则)。
- 选择 Rules(规则)旁边的 View and edit(查看和编辑)以查看或修改与您的保护包关联的规则。
- 在 Manage rules(管理规则)的右侧窗格中,选择 Add rules(添加规则)。
- 选择 AWS-managed rule group(AWS 托管规则组),然后选择 Next(下一步)。
- 在 Free rules(免费规则)下,选择 AmazonIpReputationList。
- 选择 Create rule(创建规则)。
This article was reviewed and updated on 2025-07-24.

