Azure 应用程序网关 WAF 异常列表(预览版)

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

Azure 应用程序网关 Web 应用程序防火墙(WAF)可帮助保护 Web 应用程序免受常见威胁和攻击。 本文介绍如何在与应用程序网关关联的 WAF 策略中配置 WAF 异常列表。

有关 WAF 策略的概述,请参阅 Azure 应用程序网关 上的 Azure Web 应用程序防火墙为 Application Gateway 创建 Web 应用程序防火墙策略

在某些情况下,WAF 可能会阻止应用程序安全且预期的请求。 例外列表允许绕过特定请求的 WAF 检查。 可以在规则、规则组或托管规则集级别配置异常。

只有下一代 WAF 引擎支持异常,并且仅当托管规则集版本为 CRS 3.2、DRS 2.1 或更高版本时,才能使用它们。 有关详细信息,请参阅 升级 CRS 或 DRS 规则集版本

Important

Azure 应用程序网关 Web 应用程序防火墙(WAF)中的“例外”功能目前为预览版。 有关适用于 beta 版、预览版或尚未正式发布的 Azure 功能的法律条款,请参阅 Azure 预览补充使用条款

定义请求属性

创建异常时,请指定哪些请求属性可用于识别应绕过 WAF 评估的流量。 支持的属性包括:

  • 请求 URI
  • 远程 IP 地址
  • 请求头名称和值

使用以下运算符对属性进行精确匹配或部分匹配:

  • 等于: 匹配确切值。
    例子: 若要选择标头 bearerToken,请使用具有 bearerToken 的 Equals 运算符作为选择器。

  • 开头为: 匹配以指定选择器开头的值。

  • 结尾为: 匹配以指定选择器结尾的值。

  • 包含: 匹配包含指定选择器的值。

  • IP 匹配: 匹配一个或多个 IP 地址。

设置异常范围

将例外范围限定为:

  • 特定规则

  • 规则组

  • 整个托管规则集

定义异常时:

  • 指定它适用的规则、规则组或托管规则集。

  • 定义标识要排除的流量的请求属性。

  • 若要排除整个规则组,请提供 ruleGroupName 参数。 rules仅当将异常缩小到该组中的特定规则时,才使用此参数。

Tip

始终尽可能缩小例外情况的范围。 过于宽泛的异常处理可能会在无意中使您的应用程序更容易受到攻击。 尽可能针对每条规则设置例外。

为 WAF 策略添加例外

假设你不希望 WAF 在评估 SQL 注入规则时检查发往 /login.php/logout.php 的请求。 按如下所示配置异常:

  1. 转到要添加例外的 WAF 策略。

  2. “设置”下,选择 “托管规则”。

  3. 在“ 异常 ”选项卡中,选择“ 添加异常”。

    显示如何在 Azure 门户中的 WAF 策略中添加异常的屏幕截图。

  4. “适用范围”中,选择要应用例外的 DRS 规则集,例如 Microsoft_DefaultRuleSet_2.1,然后选择范围(规则组、特定规则或整个规则集)。

    显示如何在 Azure 门户中的 WAF 策略中选择 DRS 规则集和例外范围的屏幕截图。

  5. 选择 “添加异常 ”并配置匹配变量、值匹配运算符和值。

    显示如何在 Azure 门户中的 WAF 策略中配置匹配变量、值匹配运算符和异常值的屏幕截图。

  6. 选择 “添加 ”,然后选择 “保存” 以应用新异常。

    新异常将显示在“ 异常 ”选项卡中。

局限性

以下限制适用于 WAF 例外情况:

  • 每个Azure WAF 策略最多支持 60 个异常

  • 每个应用程序网关总共支持最多 60 个异常,计算为与该网关关联的 WAF 策略中所有异常的总和。

  • 单个异常中,最多可以配置:

    • 600 个 IP 地址,或

    • 10 个 URI

    • 10 个请求标头

允许流量通过 Azure WAF 的选项

Azure Web 应用程序防火墙(WAF)提供了多种机制,可在维护保护的同时在需要时安全地允许流量。 根据是要绕过对部分请求的检查,还是整个请求,请使用 排除例外自定义规则

使用排除项允许请求中的特定部分

如果希望 WAF 跳过对请求中的特定元素(例如标头、查询参数或 Cookie)的检查,同时仍对请求的其余部分应用检查,请使用 排除 项。

例子: 如果合法应用程序发送包含经常触发 SQL 注入误报的随机字符的会话 Cookie,则可以为该 Cookie 配置排除项。 WAF 会跳过 Cookie 值的检查,但仍对请求的其余部分强制实施保护。

使用自定义规则和例外允许整个请求

若要允许整个请求绕过 WAF 检查,请使用以下选项之一:

包含允许操作的自定义规则

使用 “允许” 操作配置自定义规则时,请求将绕过默认规则集(DRS)、核心规则集(CRS)和机器人保护规则集的检查。

Important

此绕过对于这些规则集是绝对的,无法更改或选择性地应用。 触发 “允许” 操作后,这些规则集都不会评估请求。 但是, HTTP DDoS 保护规则集 仍处理请求。 此规则集可确保即使跳过所有其他规则集,也会检查请求是否受到批量或泛洪式攻击。

仅在完全信任流量源或应用程序时使用此配置,因为它有效地禁用了签名和异常情况检测。

示例:如果您有一个受信任的合作伙伴 API,并且该 API 由于其负载格式而经常触发 DRS 规则,则可以为来自该合作伙伴 IP 范围的流量创建自定义的允许规则。 此配置可确保流量永远不会被 DRS、CRS 或机器人保护阻止,同时仍受益于 HTTP DDoS 防护。

例外(更细粒度的控制)

相比之下,异常允许仅对特定规则、规则组或整个规则集跳过检查,而不是同时禁用所有规则集。

可以将异常应用于 DRS、CRS、机器人保护,甚至 HTTP DDoS 规则集。

此方法提供精细的控制,因此可以在保持其余保护处于活动状态的同时禁用对一个有问题的规则的检查。

例子: 如果单个 DRS 规则(例如 限制内容类型标头)阻止有效的移动应用请求,则只能为该规则创建例外。 所有其他 DRS 规则、机器人防护和 DDoS 防护将继续对流量生效。