如何对 AWS WAF 中的特定请求参数或 URI 应用速率限制?
简短描述
AWS WAF 具有基于速率的规则,用于跟踪每个源 IP 地址的请求速率。这些规则会对五分钟内速率超过指定限制的 IP 启动规则操作。
您可以使用基于速率的规则临时阻止来自发送过多请求的 IP 地址的请求。默认情况下,AWS WAF 会根据来自 Web 请求源的 IP 地址聚合请求。但是,您可以将规则配置为使用来自 HTTP 标头的 IP 地址,例如 X-Forwarded-For。
对于这些基于速率的规则语句,您还可以将条件定义为 scope-down 语句的一部分。您可以定义条件,以便该规则只考虑对与 scope-down 语句匹配的请求进行评估。
**注意:**对于基于速率的规则,AWS WAF 控制台没有“scope-down 语句”选项。选择 Only consider requests that match the criteria in a rule statement(仅考虑与规则语句中的标准匹配的请求)选项,以创建与缩小范围语句等效的语句。
以下解决方法考虑了两种情况,您可以根据特定参数自定义基于速率的规则。
解决方法
场景 1:向特定 URI 添加速率限制
**注意:**您可以指定任何请求参数。
- 打开 AWS WAF console(AWS WAF 控制台)。
- 选择 Web ACL
- 选择 Web ACL,然后选择 Rules(规则)选项卡。
- 选择 Add rules(添加规则)。
- 选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
- 选择 Rule builder(规则生成器)作为 Rule type(规则类型)。
- 输入 Name(名称)并选择 Rate-based rule(基于速率的规则)。
- 在 Request rate details(请求速率详细信息)中输入以下参数:
**速率限制:**输入一个介于 100 到 20,000,000 之间的数字。这是每个 IP 在 5 分钟内允许的最大请求数。
**用于速率限制的 IP 地址:**如果要根据客户端 IP 字段限制速率,选择 Source IP address(源 IP 地址)。或者,如果要根据标头中的 IP 地址限制速率,选择 IP address in header(标头中的 IP 地址)。例如,X-Forwarder-for。
**将请求计入速率限制的标准:**选择 Only consider requests that match the criteria in a rule statement(仅考虑符合规则语句中标准的请求)。
- 在 If a request(如果请求)下拉列表中,选择 matches the statement(与语句匹配)。如果您要指定多个条件,则可以根据您的使用案例更改此选择。
- 在 Statement(语句)详细信息部分填写以下字段:
注意:在本示例中,速率限制在 URI 路径“/admin”上。您可以根据自己的使用案例更改详细信息。
**检查:**URI 路径
**匹配类型:**包含字符串
要匹配的字符串:/admin
**文本转换:**无
- 在 Action(操作)部分中,选择 Block(阻止)。
- 选择 Add rule(添加规则)。将规则移至适合您的使用案例的适当优先级,然后选择 Save(保存)。
场景 2:从速率限制规则中排除选定的内部 IP
在此场景下,创建包含所有内部 IP 的 IP 集。然后,在缩小范围语句中排除此 IP 集。
使用以下步骤从基于速率的规则中排除 IP 集:
- 打开 AWS WAF console(AWS WAF 控制台)。
- 选择 Web ACL。
- 选择 Web ACL,然后选择 Rules(规则)选项卡。
- 选择 Add rules(添加规则)。
- 选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
- 在 Rule type(规则类型)中选择 Rule builder(规则生成器)。
- 输入 Name(名称),然后选择 Rate-based rule(基于速率的规则)作为 Type(类型)。
- 在 Request rate details(请求速率详细信息)中输入以下参数:
**速率限制:**输入一个介于 100 到 20,000,000 之间的数字。这是每个 IP 在 5 分钟内允许的最大请求数。
**用于速率限制的 IP 地址:**如果要根据客户端 IP 字段限制速率,请选择 Source IP address(源 IP 地址)。或者,如果要根据标头中的 IP 地址限制速率,请选择 IP address in header(标头中的 IP 地址)。例如,X-Forwarder-for。
**将请求计入速率限制的标准:**选择 Only consider requests that match the criteria in a rule statement(仅考虑符合规则语句中标准的请求)。
- 在 If a request(如果请求)下拉列表中,选择 Doesn’t match the statement (NOT)(与语句不匹配(NOT))。
- 在 Statement(语句)详细信息部分填写以下字段:
**检查:**源自 IP 地址。
**IP 集:**从下拉列表中选择 IP 集。
**用作源地址的 IP 地址:**如果要根据客户端 IP 字段限制速率,请选择 Source IP address(源 IP 地址)。或者,如果要根据标头中的 IP 地址限制速率,请选择 IP address in header(标头中的 IP 地址)。例如,X-Forwarder-for。
- 在 Action(操作)部分中,选择 Block(阻止)。
- 选择 Add rule(添加规则)。将规则移至您的使用案例的适当优先级,然后选择 Save(保存)。