计划和实现 Web 应用程序防火墙 (WAF)
Web 应用程序防火墙 (WAF) 为 Web 应用程序提供集中保护,使其免受常见攻击和漏洞的侵害。 Web 应用程序已逐渐成为利用常见已知漏洞的恶意攻击的目标。 SQL 注入和跨站点脚本是最常见的攻击。
在应用程序代码中防止此类攻击非常困难。 这可能需要在应用程序拓扑的多个层进行严格的维护、修补和监视。 集中式 Web 应用程序防火墙有助于大幅简化安全性管理。 WAF 还能使应用程序管理员更有把握地防范威胁和入侵。
相较保护每个单独的 Web 应用程序,WAF 解决方案可以通过在中心位置修补已知漏洞,更快地对安全威胁做出反应。
支持的服务
WAF 可以通过 Microsoft 的 Azure 应用程序网关、Azure Front Door 和 Azure 内容分发网络 (CDN) 服务进行部署。 Azure CDN 上的 WAF 目前为公共预览版。 WAF 提供针对每个特定服务自定义的功能。 有关适用于每个服务的 WAF 功能的详细信息,请参阅每个服务的概述。
Azure 应用程序网关上的 Azure Web 应用程序防火墙 (WAF) 会主动保护 Web 应用程序,使其免受常见攻击和漏洞的侵害。 随着 Web 应用程序越来越频繁地成为恶意攻击的目标,这些攻击通常会利用 SQL 注入和跨站点脚本等已知漏洞。
应用程序网关上的 WAF 基于来自开放 Web 应用程序安全项目 (OWASP) 的核心规则集 (CRS)。
下面的所有 WAF 功能都存在于 WAF 策略中。 可以创建多个策略,并可将它们与应用程序网关或应用程序网关上的单个侦听器或基于路径的路由规则相关联。 这样,如果需要,你可以为应用程序网关后面的每个站点提供单独的策略。
应用程序网关作为应用程序传送控制器 (ADC) 运行。 它提供了传输层安全性 (TLS)(以前称为安全套接字层 (SSL))、终止、基于 Cookie 的会话相关性、轮循负载分发、基于内容的路由、托管多个网站的功能,以及安全增强功能。
应用程序网关通过 TLS 策略管理和端到端 TLS 支持增强安全。 通过将 WAF 集成到应用程序网关中,可加强应用程序安全性。 这种组合可以主动保护 Web 应用程序免受常见漏洞的影响,并提供可集中管理且易于配置的位置。
保护
- 无需修改后端代码即可保护 Web 应用程序免受 Web 漏洞和攻击的威胁。
- 同时保护多个 Web 应用程序。 应用程序网关的实例最多可以托管 40 个受 Web 应用程序防火墙保护的网站。
- 为同一 WAF 后面的不同站点创建自定义 WAF 策略。
- 利用 IP 信誉规则集保护 Web 应用程序免受恶意机器人的攻击。
- 保护应用程序免受 DDoS 攻击。
监视
使用实时 WAF 日志监视 Web 应用程序受到的攻击。 此日志与 Azure Monitor 相集成,让你可以跟踪 WAF 警报并轻松监视趋势。
应用程序网关 WAF 与 Microsoft Defender for Cloud 集成。 Defender for Cloud 提供所有 Azure、混合和多云资源的安全状态中心视图。
自定义
- 根据应用程序的要求自定义 WAF 规则和规则组,并消除误报。
- 为 WAF 后面的每个站点关联 WAF 策略,以允许进行特定于站点的配置
- 根据应用程序的需求创建自定义规则
功能
- SQL 注入保护。
- 跨站点脚本保护。
- 其他常见 Web 攻击防护,例如命令注入、HTTP 请求走私、HTTP 响应拆分和远程文件包含。
- 防止 HTTP 协议违反行为的保护。
- 防止 HTTP 协议异常行为(例如缺少主机用户代理和接受标头)的保护。
- 防范爬网程序和扫描程序。
- 检测常见应用程序错误配置(例如 Apache 和 Internet Information Services 等)。
- 具有下限和上限的可配置请求大小限制。
- 排除列表允许你忽略 WAF 评估中的某些请求属性。 常见示例是 Microsoft Entra ID 插入的令牌,这些令牌用于身份验证或密码字段。
- 根据应用程序的具体需求创建自定义规则。
- 按地理位置筛选流量,以允许或阻止从特定的国家/地区访问你的应用程序。
- 使用机器人缓解规则集防范应用程序遭到机器人攻击。
- 检查请求正文中的 JavaScript 对象表示法 (JSON) 和可扩展标记语言 (XML)
WAF 策略和规则
若要在应用程序网关上启用 Web 应用程序防火墙,必须创建 WAF 策略。 此策略是指存在所有托管规则、自定义规则、排除项和其他自定义项(如文件上传限制)的位置。
可以配置一个 WAF 策略,然后将该策略与一个或多个应用程序网关相关联,以提供保护。 WAF 策略包含两种类型的安全规则:
- 你创建的自定义规则
- 托管规则集,即由 Azure 托管的预配置规则集的集合
如果两者均存在,则先处理自定义规则,然后处理托管规则集中的规则。 规则由匹配条件、优先级和操作组成。 支持的操作类型包括:ALLOW、BLOCK 和 LOG。 可以组合托管规则和自定义规则以创建满足特定应用程序保护要求的完全自定义策略。
策略中的规则按优先顺序进行处理。 “优先级”是唯一的整数,定义规则的处理顺序。 整数值越小表示优先级越高,这些规则的评估顺序先于整数值较大的规则。 匹配规则后,规则中定义的相应操作将应用于请求。 处理此类匹配后,不再进一步处理优先级较低的规则。
由应用程序网关提供的 Web 应用,可以在全局级别、每个站点级别或每个 URI 级别与 WAF 策略关联。
核心规则集
应用程序网关支持多个规则集,包括 CRS 3.2、CRS 3.1 和 CRS 3.0。 这些规则保护 Web 应用程序免受恶意活动的攻击。
自定义规则
应用程序网关也支持自定义规则。 使用自定义规则,可以创建自己的规则,将针对通过 WAF 传递的每个请求评估这些规则。 这些规则的优先级高于托管规则集中的其他规则。 如果满足一组条件,则执行操作以进行允许或阻止。
机器人防护规则集
可以启用托管机器人防护规则集,以便针对来自所有机器人类别的请求执行自定义操作。
支持三种机器人类别:
- 不良 - 不良的机器人包括来自恶意 IP 地址的机器人,以及伪造了其身份的机器人。 具有恶意 IP 的恶意机器人来源于 Microsoft 威胁情报源的高置信度 IP 入侵指标。
- 良好 - 良好的机器人包括经过验证的搜索引擎,例如 Googlebot、bingbot 和其他值得信赖的用户代理。
- 未知 - 未知的机器人是通过已发布的用户代理分类的,未经过其他的验证。 例如市场分析器、源提取器和数据收集代理。 未知机器人还包括恶意 IP 地址,这些地址来源于 Microsoft 威胁情报源的中等置信度 IP 入侵指标。
WAF 平台主动管理并动态更新机器人签名。
可以使用“托管规则集”下的“分配”选项分配 Microsoft_BotManagerRuleSet_1.0:
如果启用了机器人防护,则会根据配置的操作阻止、允许或记录与机器人规则匹配的传入请求。 默认情况下,此防护可阻止恶意机器人、允许经过验证的搜索引擎爬网程序、阻止未知搜索引擎爬网程序,以及记录未知机器人。 可为不同类型的机器人设置自定义的阻止、允许或记录操作。
可通过存储帐户、事件中心、日志分析访问 WAF 日志,或将日志发送到合作伙伴解决方案。
WAF 模式
应用程序网关 WAF 可配置为在以下两种模式中运行:
- 检测模式:监视和记录所有威胁警报。 在“诊断”部分打开应用程序网关的日志记录诊断。 还必须确保已选择并打开 WAF 日志。 在检测模式下运行时,Web 应用程序防火墙不会阻止传入的请求。
- 阻止模式:阻止规则检测到的入侵和攻击。 攻击者会收到“403 未授权访问”异常,且连接会结束。 阻止模式会在 WAF 日志中记录此类攻击。
WAF 引擎
Azure Web 应用程序防火墙 (WAF) 引擎是检查流量并确定请求是否包含表示潜在攻击的签名的组件。 使用 CRS 3.2 或更高版本时,WAF 会运行新的 WAF 引擎,从而提供高性能和改进的功能集。 使用早期版本的 CRS 时,WAF 在较旧的引擎上运行。 新功能仅适用于新的 Azure WAF 引擎。
WAF 操作
可选择在请求符合规则条件时运行的操作。 支持以下操作:
- 允许:请求会通过 WAF 传递并转发到后端。 没有其他优先级较低的规则可以阻止此请求。 允许操作仅适用于机器人管理器规则集,不适用于核心规则集。
- 阻止:请求受阻,WAF 将响应发送到客户端,且不会将请求转发到后端。
- 日志:请求会记录在 WAF 日志中,且 WAF 继续评估优先级较低的规则。
- 异常评分:这是 CRS 规则集的默认操作,当匹配到具有此操作的规则时,总异常评分会递增。 异常评分不适用于机器人管理器规则集。
异常评分模式
Open Web Application Security Project (OWASP) 有两种模式,用于决定是否阻止流量:传统模式和异常评分模式。
在传统模式下,与任何规则匹配的流量被视为独立于任何其他规则匹配。 此模式易于理解。 但其局限在于,未提供相关信息以表明与特定请求匹配的规则数。 因此,引入了异常评分模式。 这是 OWASP 3.x 的默认模式。
在异常评分模式下,当防火墙处于阻止模式时,不会立即阻止与任何规则匹配的流量。 规则具有一定的严重性:“严重”、“错误”、“警告”或“通知”。 此严重性会影响请求的数值,该数值称为异常分数。 例如,一个“警告”规则匹配对应的分数为 3。 一个“严重”规则匹配对应的分数为 5。
严重性 | 值 |
---|---|
严重 | 5 |
错误 | 4 |
警告 | 3 |
通知 | 2 |
异常分数的阈值为 5,用于阻止流量。 因此,单个“严重”规则匹配足以让应用程序网关 WAF 阻止请求,即使在阻止模式下也是如此。 但一个“警告”规则匹配仅使异常分数增加 3,而这并不足以阻止流量。
配置
可以使用 Azure 门户、REST API、Azure 资源管理器模板和 Azure PowerShell 来配置和部署所有 WAF 策略。
WAF 监视
监视应用程序网关的运行状况非常重要。 可通过将 WAF 及其保护的应用程序与 Microsoft Defender for Cloud、Azure Monitor 和 Azure Monitor 日志集成来支持这一点。
Azure Monitor
应用程序网关日志与 Azure Monitor 相集成。 这样,便可以跟踪包括 WAF 警报和日志在内的诊断信息。 可以在门户中应用程序网关资源的“诊断”选项卡上访问此功能,也可以通过 Azure Monitor 直接访问此功能。