如何使用 AWS WAF 缓解 DDoS 攻击?
我想使用 AWS WAF Web 访问控制列表 (Web ACL) 来缓解应用程序层的分布式阻断服务 (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 控制台。
- 在导航窗格中,选择 AWS WAF,然后选择 Web ACLs。
- 对于 Region(区域),选择您创建了 Web ACL 的 AWS 区域。
**注意:**如果该 Web ACL 为 Amazon CloudFront 设置,则选择 Global(全球)。 - 选择您的 Web ACL。
- 在 Rules(规则)下,选择 Add Rules(添加规则),然后选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
- 要设置规则,请配置以下值:
对于 Rule Type(规则类型),选择 Rule builder(规则生成器)。
对于 Name(名称),输入规则名称。
对于 Type(类型),请选择 Rate-based rule(基于速率的规则)。
对于 Rate limit(速率限制),请输入一个介于 100 和 20,000,000 之间的数字。
**注意:**如果不确定要设置哪种速率限制,请使用规则操作进行计数并监控您的请求模式。然后,根据基准设置速率限制。
对于 Evaluation window(评估时段),输入 1、2、5 或 10 分钟。
对于 IP address to use for rate limiting(要用于速率限制的 IP 地址),选择 Source IP address(源 IP 地址)或 IP address in header(标头中的 IP 地址)。
对于 Rule Action(规则操作),选择 Block(阻止)。
**注意:**在提交请求速率更改后,AWS WAF 应用或删除规则操作可能会有延迟。
对于 Scope of inspection(检查范围),选择 Consider all requests(考虑所有请求)。 - 选择 Add rule(添加规则)。
- 选择 Save(保存)。
创建基于速率的自定义键(URI 路径)规则
完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中,选择 AWS WAF,然后选择 Web ACLs。
- 对于 Region(区域),选择您创建了 Web ACL 的区域。
**注意:**如果该 Web ACL 为 CloudFront 设置,则选择 Global(全球)。 - 选择您的 Web ACL。
- 在 Rules(规则)下,选择 Add Rules(添加规则),然后选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
- 要设置规则,请配置以下值:
对于 Rule Type(规则类型),选择 Rule builder(规则生成器)。
对于 Name(名称),输入规则名称。
对于 Type(类型),请选择 Rate-based rule(基于速率的规则)。
对于 Rate limit(速率限制),请输入一个介于 100 和 20,000,000 之间的数字。
**注意:**如果不确定要设置哪种速率限制,请使用规则操作进行计数并监控您的请求模式。然后,根据基准设置速率限制。
对于 Request Aggregation(请求聚合),选择 Custom keys(自定义键)。
对于 Request aggregation keys(请求聚合键),选择 URI path(URI 路径)。
对于 Text transformations(文本转换),选择 None(无)。
对于 Criteria to count request towards rate limit(将请求计入速率限制的条件),选择 Consider all requests(考虑所有请求)。
对于 Rule Action(规则操作),选择 Block(阻止)。 - 选择 Add rule(添加规则)。
- 对于 Set Rule Priority(设置规则优先级),选择您的规则,然后更新其优先级。有关详细信息,请参阅在 Web ACL 中设置规则优先级。
- 选择 Save(保存)。
有关详细信息,请参阅 The three most important AWS WAF rate-based rules(三条最重要的基于速率的 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 控制台。
- 在导航窗格中,选择 AWS WAF,然后选择 Web ACLs。
- 对于 Region(区域),选择您创建了 Web ACL 的区域。
**注意:**如果该 Web ACL 为 CloudFront 设置,则选择 Global(全球)。 - 选择您的 Web ACL。
- 在 Rules(规则)下,选择 Add Rules(添加规则),然后选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
- 对于 Name(名称),输入规则名称,然后选择 Regular Rule(常规规则)。
- 对于 Request options(请求选项),选择 originates from a country in(源自国家/地区),然后选择要阻止的国家/地区代码。
- 对于 Rule action(规则操作),选择 Block(阻止)。
- 选择 Add rule(添加规则)。
有关详细信息,请参阅地理匹配规则语句。
创建 IP 集匹配规则以阻止来自特定 IP 地址的恶意请求
完成以下步骤:
- 创建 IP 集,然后添加要阻止的 IP 地址。
- 打开 AWS WAF 控制台。
- 在导航窗格中,选择 AWS WAF,然后选择 Web ACLs。
- 对于 Region(区域),选择您创建了 Web ACL 的区域。
**注意:**如果该 Web ACL 为 CloudFront 设置,则选择 Global(全球)。 - 选择您的 Web ACL。
- 在 Rules(规则)下,选择 Add Rules(添加规则),然后选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
- 对于 Name(名称),输入规则名称,然后选择 Regular Rule(常规规则)。
- 选择 Create an IP match rule(创建 IP 匹配规则)。
- 对于 Request options(请求选项),选择 originates from an IP address in(源自 IP 地址),然后选择您的 IP 集。
- 对于 Rule Action(规则操作),选择 Block(阻止)。
- 选择 Add Rule(添加规则)。
有关详细信息,请参阅 IP 集匹配规则语句。
创建字符串匹配规则语句以阻止恶意请求
完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中,选择 AWS WAF,然后选择 Web ACLs。
- 对于 Region(区域),选择您创建了 Web ACL 的区域。
**注意:**如果该 Web ACL 为 CloudFront 设置,则选择 Global(全球)。 - 选择您的 Web ACL。
- 选择 Create a string match rule(创建字符串匹配规则)。
- 要设置规则,请配置以下值:
对于 Inspect(检查),选择 Header(标头)。
对于 Header field name(标头字段名称),输入要阻止的机器人在 AWS WAF 日志中显示的名称。
对于 Match Type(匹配类型),选择 Exactly matches string(完全匹配字符串)。
对于 String to Match(要匹配的字符串),输入要阻止的机器人在 AWS WAF 日志中显示的值。
对于 Rule Action(规则操作),选择 Block(阻止)。 - 选择 Add Rule(添加规则)。
有关详细信息,请参阅字符串匹配规则语句。
创建正则表达式匹配规则语句以阻止恶意请求
完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中,选择 AWS WAF,然后选择 Web ACLs。
- 对于 Region(区域),选择您创建了 Web ACL 的区域。
**注意:**如果该 Web ACL 为 CloudFront 设置,则选择 Global(全球)。 - 选择您的 Web ACL。
- 选择 Create a string match rule(创建字符串匹配规则)。
- 要设置规则,请配置以下值:
对于检查,选择 URI 路径。
对于 Match type(匹配类型),选择 Matches regular expression(匹配正则表达式)。
对于 String to match(要匹配的字符串),输入要阻止的正则表达式。
对于 Rule Action(规则操作),选择 Block(阻止)。 - 选择 Add Rule(添加规则)。
有关详细信息,请参阅正则表达式匹配规则语句。
启用机器人控制功能并使用目标防护级别
AWS WAF 机器人控制功能的目标防护级别通过结合使用速率限制、CAPTCHA(验证码)和 Challenge(质询)操作来减少机器人活动。有关目标机器人控制功能定价的信息,请参阅 AWS WAF 定价页面上的“案例 F”。
要启用机器人控制功能和目标防护级别,请完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中,选择 AWS WAF,然后选择 Web ACLs(Web ACL)。
- 对于 Region(区域),请选择在其中创建了 Web ACL 的 AWS 区域。
**注意:**如果该 Web ACL 为 CloudFront 设置,则选择 Global(全球)。 - 选择您的 Web ACL,然后选择 Add Managed Rule groups(添加托管式规则组)。
- 在 AWS Managed Rule groups(AWS 托管式规则组)下,对于 Paid rule groups(付费规则组),启用 Bot Control(机器人控制功能)。
- 选择 Edit(编辑),然后在 Inspection level(检查级别)中选择 Targeted(目标)。
- 选择 Save Rule(保存规则)。
使用 Amazon IP 信誉列表托管规则组
AmazonIpReputationList 托管规则组利用 Amazon 内部威胁情报来识别主动参与 DDoS 活动的 IP 地址。
要启用 Amazon IP 信誉列表托管规则组,请完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中,选择 AWS WAF,然后选择 Web ACLs(Web ACL)。
- 对于 Region(区域),请选择在其中创建了 Web ACL 的 AWS 区域。
**注意:**如果该 Web ACL 为 CloudFront 设置,则选择 Global(全球)。 - 选择您的 Web ACL,然后选择 Add Managed Rule groups(添加托管式规则组)。
- 在 AWS Managed Rule groups(AWS 托管式规则组)下,选择 AmazonIpReputationList。
- 选择 Save Rule(保存规则)。
