Azure 应用程序网关 上的 Azure Web 应用程序防火墙速率限制

适用于: ✔️应用程序网关 V2

Application Gateway 上的 Web 应用程序防火墙 速率限制帮助你检测并阻止发送到你应用的异常高流量。 通过在应用网关WAF v2上使用速率限制,你可以减轻多种类型的拒绝服务攻击,防止客户端被错误配置导致短时间内发送大量请求,或控制来自特定地理区域的流量流量。

速率限制策略

通过在策略中使用自定义WAF规则来配置速率限制。

注释

速率限制规则仅在运行 最新 WAF 引擎的 Web 应用程序防火墙上受支持。 为了确保你使用最新的引擎,选择CRS 3.2作为默认规则集。 此外,隔离云环境不支持限流规则。

在配置速率限制规则时,请指定阈值:在指定时间内允许的请求数量。 应用网关WAF v2的速率限制使用滑动窗口算法来判断流量何时突破阈值并需要丢弃。 在违反规则阈值的第一个窗口中,将删除与速率限制规则匹配的更多流量。 从第二个窗口开始,允许流量达到配置的窗口内的阈值,从而产生限制效果。

还必须指定匹配条件,该条件指示 WAF 何时激活速率限制。 可以配置多个速率限制规则,这些规则与策略中的不同变量和路径匹配。

应用网关WAF v2还引入了 GroupByUserSession,你必须配置它。 GroupByUserSession 指定如何对匹配速率限制规则对请求进行分组和计数。

目前提供以下三个 GroupByVariables

  • ClientAddr – 这是默认设置,这意味着每个速率限制阈值和缓解措施都独立应用于每个唯一的源 IP 地址。
  • GeoLocation - 流量根据客户端 IP 地址上的 Geo-Match 按其地理位置分组。 对于速率限制规则,来自同一地理位置的流量组合在一起。
  • - 所有流量分组在一起,并计入速率限制规则的阈值。 违反阈值时,该动作会对所有与规则匹配的流量进行触发,而不会为每个客户端 IP 地址或地理位置维护独立的计数器。 将 None 与特定匹配条件结合使用,例如登录页面或可疑 User-Agent 列表。
  • ClientAddrXFFHeader - 每个速率限制阈值和缓解措施均根据 HTTP 请求的 X-Forwarded-For 标头中的 IP 地址独立生效
  • GeoLocationXFFHeader - 流量根据 HTTP 请求的 X-Forwarded-For 标头中找到的 IP 地址,通过地理匹配按其地理位置进行分组。 对于速率限制规则,来自同一地理位置的流量组合在一起。

流量限制详细信息

Web 应用程序防火墙 策略独立统计并跟踪每个连接端点的配置速率限制阈值。 例如,一项单独的 WAF 策略连接到五个不同的侦听器时,会为每个侦听器分别维护独立的计数器并控制阈值。

速率限制阈值并不总是严格按照定义执行,因此不要用速率限制来对应用流量进行细致控制。 相反,应利用它来缓解异常流量并保持应用可用性。

滑动窗口算法阻止超出阈值的第一个窗口的所有匹配流量,然后限制未来时段的流量。 使用 GeoLocationNone 作为 GroupByVariables 配置宽匹配规则时,请谨慎定义阈值。 配置不当的阈值可能会导致匹配流量频繁出现短中断。

注释

每个应用网关v2实例都维护自己的速率限制计数器。 当多个实例同时活跃时,它们会将收到的请求分配到彼此之间,速率限制阈值会独立应用于每个实例。

例如,假设阈值为每个客户端 IP 每分钟 400 个请求。 如果两个实例从同一客户端IP收到270和230个请求,任何实例都未达到阈值。 尽管总请求数超过400,WAF仍允许这些请求。 因此,当多个实例同时活跃时,不要把配置的阈值当作严格的网关范围限制。

后续步骤