Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何使用 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(创建规则)。
有关详细信息,请参阅 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 控制台。
- 对于 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(创建规则)。
