如何对 AWS WAF 中的特定请求参数或 URI 应用速率限制?

上次更新日期:2022 年 7 月 21 日

如何对 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 添加速率限制

注意:您可以指定任何请求参数。

  1. 打开 AWS WAF console(AWS WAF 控制台)。
  2. 选择 Web ACL
  3. 选择 Web ACL,然后选择 Rules(规则)选项卡。
  4. 选择 Add rules(添加规则)。
  5. 选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
  6. 选择 Rule builder(规则生成器)作为 Rule type(规则类型)。
  7. 输入 Name(名称)并选择 Rate-based rule(基于速率的规则)。
  8. 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(仅考虑符合规则语句中标准的请求)。
  9. If a request(如果请求)下拉列表中,选择 matches the statement(与语句匹配)。如果您要指定多个条件,则可以根据您的使用案例更改此选择。
  10. Statement(语句)详细信息部分填写以下字段:
    注意:在本示例中,速率限制在 URI 路径“/admin”上。您可以根据自己的使用案例更改详细信息。
    检查:URI 路径
    匹配类型:包含字符串
    要匹配的字符串:/admin
    文本转换:
  11. Action(操作)部分中,选择 Block(阻止)。
  12. 选择 Add rule(添加规则)。将规则移至适合您的使用案例的适当优先级,然后选择 Save(保存)。

场景 2:从速率限制规则中排除选定的内部 IP

在此场景下,创建包含所有内部 IP 的 IP 集。然后,在缩小范围语句中排除此 IP 集。

使用以下步骤从基于速率的规则中排除 IP 集:

  1. 打开 AWS WAF console(AWS WAF 控制台)。
  2. 选择 Web ACL
  3. 选择 Web ACL,然后选择 Rules(规则)选项卡。
  4. 选择 Add rules(添加规则)。
  5. 选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
  6. Rule type(规则类型)中选择 Rule builder(规则生成器)。
  7. 输入 Name(名称),然后选择 Rate-based rule(基于速率的规则)作为 Type(类型)。
  8. 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(仅考虑符合规则语句中标准的请求)。
  9. If a request(如果请求)下拉列表中,选择 Doesn’t match the statement (NOT)(与语句不匹配(NOT))。
  10. Statement(语句)详细信息部分填写以下字段:
    检查:源自 IP 地址。
    IP 集:从下拉列表中选择 IP 集。
    用作源地址的 IP 地址:如果要根据客户端 IP 字段限制速率,请选择 Source IP address(源 IP 地址)。或者,如果要根据标头中的 IP 地址限制速率,请选择 IP address in header(标头中的 IP 地址)。例如,X-Forwarder-for
  11. Action(操作)部分中,选择 Block(阻止)。
  12. 选择 Add rule(添加规则)。将规则移至您的使用案例的适当优先级,然后选择 Save(保存)。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?