基于速率的规则语句 - Amazon WAF、Amazon Firewall Manager 和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

基于速率的规则语句

基于速率的规则会跟踪每个源 IP 地址的请求速率,并针对速率超出限制的 IP 触发规则操作。可以将限额设置为每 5 分钟时间范围内的请求数。您可以使用这种规则来临时阻止来自发送过多请求的 IP 地址的请求。默认情况下,Amazon WAF根据来自 Web 请求源的 IP 地址聚合请求,但您可以将规则配置为使用来自 HTTP 标头的 IP 地址,例如X-Forwarded-For,请改用。

Amazon WAF 分别跟踪和管理您使用的基于速率的规则每个实例的 Web 请求。例如,如果您在两个 Web ACL 中提供相同的基于速率的规则设置,则两条规则语句中的每一条都表示基于速率规则的单独实例,并通过 Amazon WAF 进行自己的跟踪和管理。如果在规则组内定义基于速率的规则,然后在多个位置使用该规则组,则每次使用都会创建一个单独的基于速率规则的实例,并通过 Amazon WAF 进行自己的跟踪和管理。

当规则操作触发时,Amazon WAF将操作应用于来自该 IP 地址的其它请求,直到请求速率降到限制以下。操作更改可能需要一两分钟才能生效。

您可以检索由于速率限制而当前阻止的 IP 地址列表。有关信息,请参阅列出根据基于速率的规则而阻止的 IP 地址

以下注意事项适用于Amazon WAF基于费率的规则:

  • 您可以设置的最小速率为 100。

  • Amazon WAF每 30 秒检查一次请求速率,每次计算前 5 分钟的请求数。因此,IP 地址有可能在 30 秒之前以过高的速率发送请求Amazon WAF检测并阻止它。

  • Amazon WAF最多可以屏蔽 10000 个 IP 地址。如果超过 10,000 个 IP 地址同时发送高速率的请求,Amazon WAF只会阻挡其中 10,000 个。

你可以缩小请求的范围Amazon WAF轨迹和计数。为此,你可以在基于速率的语句中嵌套另一个缩小范围的语句。然后,Amazon WAF仅计算与范围缩小语句匹配的请求。有关向下作用域语句的信息,请参见范围缩小语句.

例如,根据您发现的来自美国某个攻击者的最近请求,您可以创建一个基于速率的规则,其中包含以下范围缩小语句:

  • 包含以下第二层嵌套语句的 AND 规则语句:

    • 指定源自美国的请求的地理匹配语句。

    • 一个字符串匹配语句,用于在User-Agent字符串的标题BadBot.

假设您还设置了 1000 的速率限制。对于每个 IP 地址,Amazon WAF计算符合两个嵌套语句条件的请求。两者都不满足的请求不计算在内。如果某个 IP 地址在任何 5 分钟时间范围内的请求数超过 1000 个,则会针对该 IP 地址触发该规则的操作。

另一个例子是,您可能想要限制发送到网站登录页面的请求数。为此,您可以使用以下嵌套字符串匹配语句创建基于速率的规则:

  • 这些区域有:检查 请求组件URI path.

  • 这些区域有:匹配类型Starts with string.

  • 这些区域有:要匹配的字符串/login.

通过向 Web ACL 中添加此基于速率的规则,您可以将请求限制在登录页面,而不影响网站其余部分。

不可嵌套— 您无法将此语句类型嵌套在其他语句中。您可以将其直接包含在 Web ACL 和规则组中。

(可选)向下作用域语句— 此规则类型采用可选的 scope-down 语句,以缩小基于速率的语句跟踪的请求范围。有关更多信息,请参阅 范围缩小语句

WCU— 2 加上任何用于嵌套语句的其他 WCU。

此语句使用以下可选设置:

  • (可选)转发的 IP 配置— 默认情况下,Amazon WAF聚合在 Web 请求源中的 IP 地址上,但您可以改为将规则配置为在 HTTP 标头中使用转发的 IP 地址,例如X-Forwarded-For.Amazon WAF使用标头中的第一个 IP 地址。使用此配置,您还可以指定回退行为以应用于指定标头中具有错误的 IP 地址的 Web 请求。后备行为将请求的匹配结果设置为匹配或不匹配。有关更多信息,请参阅 转发的 IP 地址

此语句的查找位置

  • 规则生成器在您的 Web ACL 中,在控制台上 — 在规则,对于类型,选择基于速率的规则.

  • API 语句RateBasedStatement