什么是 Azure 应用程序网关上的 Azure Web 应用程序防火墙?

Azure 应用程序网关上的 Azure Web 应用程序防火墙部署会主动保护 Web 应用程序免受常见攻击和漏洞的影响。 随着 Web 应用程序越来越频繁地成为恶意攻击的目标,这些攻击通常会利用 SQL 注入和跨站点脚本等已知漏洞。

应用程序网关上的 Azure Web 应用程序防火墙基于开放 Web 应用程序安全项目(OWASP )的核心规则集(CRS )。

以下所有 Azure Web 应用程序防火墙功能都存在于 Web 应用程序防火墙(WAF)策略中。 可以创建多个策略并将其与应用程序网关、单个侦听器或应用程序网关上的基于路径的路由规则相关联。 通过此关联,可以根据需要为应用程序网关后面的每个站点定义单独的策略。 有关 WAF 策略的详细信息,请参阅 为应用程序网关创建 WAF 策略

注意

应用程序网关有两个版本的 Web 应用程序防火墙:WAF_v1和WAF_v2。 WAF 策略关联仅支持WAF_v2。

说明 Web 应用程序防火墙如何与 Azure 应用程序网关配合使用的关系图。

应用程序网关作为应用程序传送控制器运行。 它提供传输层安全性(TLS)(以前称为安全套接字层或 SSL)终止、基于 Cookie 的会话相关性、轮循机制负载分发、基于内容的路由、托管多个网站的能力以及安全增强功能。

应用程序网关通过 TLS 策略管理和端到端 TLS 支持增强安全。 将 Azure Web 应用程序防火墙集成到应用程序网关,以加强应用程序安全性。 这种组合会主动保护 Web 应用程序免受常见漏洞的侵害,并提供集中管理的位置。

好处

本部分介绍 Azure Web 应用程序防火墙在应用程序网关上提供的核心优势。

保护

  • 无需修改后端代码,帮助保护 Web 应用程序免受 Web 漏洞和攻击。

  • 同时帮助保护多个 Web 应用程序。 应用程序网关的实例最多可以托管 40 个使用 Web 应用程序防火墙的网站。

  • 为同一 WAF 后面的不同站点创建自定义 WAF 策略。

  • 使用 IP 信誉规则集帮助保护 Web 应用程序免受恶意机器人的攻击。

  • 帮助保护应用程序免受 DDoS 攻击。 有关详细信息,请参阅 应用程序(第 7 层)DDoS 保护

监视

  • 使用实时 WAF 日志监视 Web 应用程序受到的攻击。 日志与 Azure Monitor 集成,用于跟踪 WAF 警报和监视趋势。

  • 应用程序网关 WAF 与 Microsoft Defender for Cloud 集成。 Defender for Cloud 提供所有 Azure、混合和多云资源的安全状态中心视图。

自定义

  • 根据应用程序的要求自定义 WAF 规则和规则组,并消除误报。

  • 为 WAF 后面的每个站点关联 WAF 策略,以允许站点特定的配置。

  • 创建自定义规则以满足应用程序的需求。

功能

  • 防范 SQL 注入。
  • 防止跨站点脚本编写。
  • 其他常见 Web 攻击防护,例如命令注入、HTTP 请求走私、HTTP 响应拆分和远程文件包含。
  • 防止 HTTP 协议违反行为的保护。
  • 防范 HTTP 协议异常,例如缺失HostUser-AgentAccept标头。
  • 防范爬网程序和扫描程序。
  • 检测常见应用程序错误配置(例如 Apache 和 IIS 等)。
  • 具有下限和上限的可配置请求大小限制。
  • 允许从 WAF 评估中省略某些请求属性的排除列表。 常见示例是 Active Directory 插入的令牌,这些令牌用于身份验证或密码字段。
  • 能够创建自定义规则以满足应用程序的特定需求。
  • 能够对流量进行地理筛选,以允许或阻止某些国家/地区访问应用程序。
  • 有助于保护应用程序免受机器人保护的机器人管理器规则集。
  • 能够在请求正文中检查 JSON 和 XML。

WAF 策略和规则

若要在应用程序网关上使用 Web 应用程序防火墙,必须创建 WAF 策略。 此策略是存在所有托管规则、自定义规则、排除项和其他自定义项(如文件上传限制)的位置。

可以配置 WAF 策略,并将该策略与一个或多个应用程序网关相关联,以便进行保护。 WAF 策略包含两种类型的安全规则:

  • 你创建的自定义规则
  • 托管规则集,这些规则集是 Azure 托管的预配置规则的集合

当两者都存在时,WAF 会在处理托管规则集中的规则之前处理自定义规则。

规则由匹配条件、优先级和作组成。 支持的作类型为 ALLOWBLOCK以及 LOG。 可以通过组合托管规则和自定义规则来创建完全自定义的策略,以满足应用程序保护的特定要求。

WAF 按优先级顺序处理策略中的规则。 “优先级”是唯一的整数,定义规则的处理顺序。 较小的整数值表示更高的优先级,WAF 在具有较高整数值的规则之前计算这些规则。 WAF 将规则与请求匹配后,它将规则定义的相应作应用于请求。 WAF 处理此类匹配后,不会进一步处理优先级较低的规则。

应用程序网关提供的 Web 应用程序可以在全局级别、每个站点级别或每个 URI 级别具有与其关联的 WAF 策略。

自定义规则

应用程序网关支持创建自己的自定义规则。 应用程序网关评估通过 WAF 的每个请求的自定义规则。 这些规则的优先级高于托管规则集中的其他规则。 如果请求满足一组条件,WAF 将采取允许或阻止作。 有关自定义规则的详细信息,请参阅应用程序网关的自定义规则

运算符 Geomatch 现在可用于自定义规则。 有关详细信息,请参阅 Geomatch 自定义规则

规则集

应用程序网关支持多个规则集,包括 CRS 3.2、CRS 3.1 和 CRS 3.0。 这些规则有助于保护 Web 应用程序免受恶意活动的影响。 有关详细信息,请参阅 Web 应用程序防火墙 DRS 和 CRS 规则组和规则

Bot Manager 规则集

可以启用托管机器人管理器规则集,对来自所有机器人类别的请求执行自定义作。

应用程序网关支持三个机器人类别:

  • 错误的机器人:具有恶意 IP 地址或伪造其标识的机器人。 恶意 IP 地址可能源自Microsoft威胁情报源的高可信度 IP 指标泄露和 IP 信誉源。 坏机器人还包括将自己标识为良好机器人但 IP 地址不属于合法机器人发布者的机器人。

  • 良好的机器人:受信任的用户代理。 适用于良好机器人的规则分为多个类别,以提供对 WAF 策略配置的精细控制。 这些类别包括:

    • 已验证的搜索引擎机器人(如必应机器人)。
    • 已验证的链接检查器机器人。
    • 已验证的社交媒体机器人(如 LinkedInBot)。
    • 已验证广告机器人。
    • 已验证的内容检查器机器人。
    • 已验证杂项机器人。
  • 未知机器人:没有其他验证的用户代理。 未知机器人可能还具有恶意 IP 地址,这些地址源自Microsoft威胁情报源的中等置信度 IP 泄露指标。

Azure Web 应用程序防火墙主动管理和动态更新机器人签名。

启用机器人保护时,它会阻止、允许或记录根据配置的作匹配机器人规则的传入请求。 默认情况下,此防护可阻止恶意机器人、允许经过验证的搜索引擎爬网程序、阻止未知搜索引擎爬网程序,以及记录未知机器人。 可以将自定义作设置为阻止、允许或记录各种类型的机器人。

可以从存储帐户、事件中心或 Log Analytics 访问 WAF 日志。 还可以将日志发送到合作伙伴解决方案。

有关应用程序网关机器人保护的详细信息,请参阅 应用程序网关机器人保护上的 Web 应用程序防火墙概述

WAF 模式

可以将应用程序网关 WAF 配置为在以下模式下运行:

  • 检测模式:监视和记录所有威胁警报。 在“诊断”部分打开应用程序网关的日志记录诊断。 还必须确保已选择并打开 WAF 日志。 Web 应用程序防火墙在检测模式下运行时不会阻止传入请求。
  • 阻止模式:阻止规则检测到的入侵和攻击。 攻击者会收到“403 未授权访问”异常,且连接会结束。 阻止模式会在 WAF 日志中记录此类攻击。

注意

建议在生产环境中短时间内在检测模式下运行新部署的 WAF。 这样做提供了在转换到预防模式之前获取 防火墙日志 和更新任何异常或 自定义规则 的机会。 这还有助于减少意外阻止流量的发生次数。

WAF 引擎

WAF 引擎是检查流量并检测请求是否包含指示潜在攻击的签名的组件。 使用 CRS 3.2 或更高版本时,Web 应用程序防火墙将运行新的 WAF 引擎,从而提供更高的性能和改进的功能集。 使用早期版本的 CRS 时,WAF 在较旧的引擎上运行。 新功能仅在新的 WAF 引擎上可用。

WAF 操作

可以选择当请求与规则条件匹配时 WAF 运行的作。 应用程序网关支持以下作:

  • 允许:请求通过 WAF 传递并转发到后端。 没有进一步的低优先级规则可以阻止此请求。 这些作仅适用于 Bot Manager 规则集。 它们不适用于 CRS。
  • 阻止:请求被阻止。 WAF 将响应发送到客户端,而无需将请求转发到后端。
  • 日志:请求记录在 WAF 日志中。 WAF 继续评估优先级较低的规则。
  • 异常分数:此作是 CRS 的默认值。 当请求与此作的规则匹配时,总异常分数会递增。 异常评分不适用于 Bot Manager 规则集。

异常评分模式

OWASP 有两种模式用于决定是否阻止流量:传统评分和异常评分。

在传统模式下,与任何规则匹配的流量被视为独立于任何其他规则匹配项。 此模式易于理解,但缺少与特定请求匹配的规则数量的信息是一个限制。 因此,异常评分模式被引入为 OWASP 3 的默认值。x.

在异常评分模式下,当防火墙处于阻止模式时,与任何规则匹配的流量不会立即被阻止。 规则具有一定的严重性:“严重”、“错误”、“警告”或“通知”。 该严重性会影响请求的数值,即异常分数。 例如,一个“警告”规则匹配对应的分数为 3。 一个“严重”规则匹配对应的分数为 5。

严重性
严重 5
错误 4
警告 3
通知 2

异常分数阻止流量的阈值为 5。 因此,单个 关键 规则匹配足以让应用程序网关 WAF 阻止在阻止模式下的请求。 但是,一个 警告 规则匹配只会将异常分数提高 3,这本身不足以阻止流量。

注意

WAF 规则匹配流量时记录的消息包括 匹配的作值。 如果所有匹配规则的总异常分数为 5 或更大,并且 WAF 策略在预防模式下运行,则请求将触发一个强制异常 规则并阻止作值,并停止请求。 如果 WAF 策略在检测模式下运行,则请求将触发 检测到的作值,并将请求记录并传递到后端。 有关详细信息,请参阅 了解 WAF 日志

配置

可以使用 Azure 门户、REST API、Azure 资源管理器模板和 Azure PowerShell 配置和部署所有 WAF 策略。 还可以使用 Azure 防火墙管理器集成大规模配置和管理 WAF 策略。 有关详细信息,请参阅使用 Azure 防火墙管理器配置 WAF 策略

WAF 监视

监视应用程序网关的运行状况非常重要。 可以通过将 WAF(及其帮助保护的应用程序)与 Microsoft Defender for Cloud、Azure Monitor 和 Azure Monitor 日志集成来实现此目的。

应用程序网关 WAF 诊断关系图。

Azure Monitor

应用程序网关日志与 Azure Monitor 集成,以便跟踪诊断信息,包括 WAF 警报和日志。 可以在 Azure 门户中的应用程序网关资源的 “诊断 ”选项卡上访问此功能。 或者可以直接在 Azure Monitor 中访问它。

若要详细了解如何使用日志,请参阅 应用程序网关的诊断日志

Microsoft Defender for Cloud

Defender for Cloud 可帮助防范、检测和应对威胁。 它增强了对 Azure 资源安全性的可见性和控制。 应用程序网关与 Defender For Cloud 集成

Defender for Cloud 会扫描环境以检测未受保护的 Web 应用。 它可推荐应用程序网关 WAF 来帮助保护这些易受攻击的资源。

直接从 Defender for Cloud 创建防火墙。 这些 WAF 实例与 Defender for Cloud 集成。 为了进行报告,它们会将警报和运行状况信息发送到 Defender for 云端。

Microsoft Sentinel

Microsoft Sentinel 是一种可缩放的云原生解决方案,其中包含安全信息事件管理(SIEM)和安全业务流程自动响应(SOAR)。 Microsoft Sentinel 跨企业提供智能安全分析和威胁情报。 它提供单个解决方案,用于警报检测、威胁可见性、主动搜寻和威胁响应。

使用内置于 Azure Web 应用程序防火墙中的防火墙事件工作簿,可以大致了解 WAF 上的安全事件。 概述包括匹配的规则、阻止的规则和所有其他记录的防火墙活动。

适用于 WAF 的 Azure Monitor 工作簿

适用于 WAF 的 Azure Monitor 工作簿支持跨多个可筛选面板自定义安全相关的 WAF 事件的可视化效果。 它适用于所有 WAF 类型,包括应用程序网关、Azure Front Door 和 Azure 内容分发网络。

可以根据 WAF 类型或特定 WAF 实例筛选此工作簿。 可以通过 Azure 资源管理器模板或库模板导入它。

若要部署此工作簿,请参阅 Azure Web 应用程序防火墙的 GitHub 存储库

日志记录

应用程序网关 WAF 提供有关它检测到的每个威胁的详细报告。 日志记录已与 Azure 诊断日志集成。 警报以 JSON 格式记录。 可以将这些日志与 Azure Monitor 日志集成。

{
  "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupId}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{appGatewayName}",
  "operationName": "ApplicationGatewayFirewall",
  "time": "2017-03-20T15:52:09.1494499Z",
  "category": "ApplicationGatewayFirewallLog",
  "properties": {
    {
      "instanceId": "ApplicationGatewayRole_IN_0",
      "clientIp": "203.0.113.145",
      "clientPort": "0",
      "requestUri": "/",
      "ruleSetType": "OWASP",
      "ruleSetVersion": "3.0",
      "ruleId": "920350",
      "ruleGroup": "920-PROTOCOL-ENFORCEMENT",
      "message": "Host header is a numeric IP address",
      "action": "Matched",
      "site": "Global",
      "details": {
        "message": "Warning. Pattern match \"^[\\\\d.:]+$\" at REQUEST_HEADERS:Host ....",
        "data": "127.0.0.1",
        "file": "rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf",
        "line": "791"
      },
      "hostname": "127.0.0.1",
      "transactionId": "16861477007022634343"
      "policyId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/drewRG/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/globalWafPolicy",
      "policyScope": "Global",
      "policyScopeName": " Global "
    }
  }
} 

应用程序网关 WAF 定价

WAF_v1和WAF_v2版本的定价模型有所不同。 有关详细信息,请参阅 应用程序网关定价

新增功能

若要了解 Azure Web 应用程序防火墙的新增功能,请参阅 Azure 更新