适用于: ✔️应用网关 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 策略连接到五个不同的侦听器时,会为每个侦听器分别维护独立的计数器并控制阈值。
速率限制阈值并不总是严格按照定义执行,因此不要用速率限制来对应用流量进行细致控制。 相反,应利用它来缓解异常流量并保持应用可用性。
滑动窗口算法阻止超出阈值的第一个窗口的所有匹配流量,然后限制未来时段的流量。 使用 GeoLocation 或 None 作为 GroupByVariables 配置宽匹配规则时,请谨慎定义阈值。 配置不当的阈值可能会导致匹配流量频繁出现短中断。
注释
对于速率限制规则,配置的阈值将针对适用的规则范围和分组键,在应用程序网关实例之间统一计算并应用。 它不是单独分配给每个实例的单独阈值。 速率限制的执行是近似的,可能不会恰好在达到所配置的请求次数时生效。
例如,请考虑速率限制规则,其阈值为每分钟客户端 IP 400 个请求。 假设同一客户端 IP 在适用的一分钟滑动窗口中发送 500 个匹配的请求,所有这些请求都在相同的规则范围内,270 个请求路由到一个应用程序网关实例,230 个请求路由到另一个。 这些请求会共同计入所配置的 400 阈值;每个实例不会单独获得 400 个请求的配额。 因此,合并的流量超过了阈值,并且会受到速率限制,即使两个实例都未单独接收 400 个请求。