Azure Front Door 上的 Azure Web 应用程序防火墙可保护 Web 应用程序免受常见漏洞和攻击影响。 Azure 托管的规则集可轻松针对一组常见的安全威胁来部署保护。 由于规则集由 Azure 管理,因此这些规则会根据需要进行更新以防范新的攻击签名。
默认规则集 (DRS) 还包含由 Microsoft 情报团队合作编写的 Microsoft 威胁情报收集规则,可以提供更大的覆盖范围、针对特定漏洞的补丁,并更好地减少误报。
当 WAF 策略中的规则集版本发生更改时,对规则集所做的任何现有自定义都将重置为新规则集的默认值。 请参阅:
升级或更改规则集版本
。
默认规则集
Azure 托管的 DRS 包含针对以下威胁类别的规则:
跨站点脚本
Java 攻击
本地文件包含
PHP 注入攻击
远程命令执行
远程文件包含
SQL 注入保护
协议攻击者
将新的攻击签名添加到规则集时,DRS 的版本号将递增。
DRS 在 WAF 策略的检测模式下默认启用。 可以禁用或启用 DRS 内的各个规则以满足应用程序要求。 还可以根据规则设置特定操作。 可采取的操作包括
允许、阻止、记录和重定向
。
有时你可能需要忽略 Web 应用程序防火墙 (WAF) 评估中的某些请求属性。 一个常见的例子是用于身份验证的 Active Directory 插入令牌。 可以为托管规则、规则组或整个规则集配置排除列表。 有关详细信息,请参阅
Azure Front Door 上的 Web 应用程序防火墙排除列表
。
默认情况下,当请求与规则匹配时,DRS 2.0 及更高版本会使用异常评分。 早于 2.0 的 DRS 版本会阻止触发规则的请求。 此外,如果想要绕过 DRS 中的任何预配置规则,可以在同一 WAF 策略中配置自定义规则。
在评估 DRS 中的规则之前,自定义规则始终适用。 如果请求与某个自定义规则相匹配,将应用相应的规则操作。 请求将被阻止,或通过后端传递。 不会处理任何其他自定义规则或 DRS 中的规则。 还可以从 WAF 策略中删除 DRS。
Microsoft 威胁情报收集规则
Microsoft 威胁情报收集规则由 Microsoft 威胁情报团队合作编写,以提供更高的覆盖范围、针对特定漏洞的补丁,并更好地减少误报。
默认情况下,Microsoft 威胁情报收集规则会替换部分内置 DRS 规则,导致它们被禁用。 例如,规则 ID 942440“
检测到 SQL 注释序列
”已被禁用,并被 Microsoft 威胁情报收集规则 99031002 取代。 替换的规则可降低合法请求的误报检测的风险。
使用 DRS 2.0 或更高版本时,WAF 使用异常评分。 即使 WAF 处于防护模式,也不会立即阻止与任何规则匹配的流量。 相反,OWASP 规则集会为每个规则定义严重性:“严重”、“错误”、“警告”或“通知”。 这些严重性会影响请求的数值,该数值称为异常分数。 如果请求累积的异常分数为 5 或更高,则 WAF 会对该请求执行操作。
规则严重性
对异常分数的贡献值
配置 WAF 时,可以决定 WAF 如何处理超过异常分数阈值 5 的请求。 三个异常分数操作选项是阻止、记录或重定向。 配置时选择的异常分数操作将应用于超过异常分数阈值的所有请求。
例如,如果请求的异常分数为 5 或更高,WAF 处于“预防”模式,且异常分数操作设置为“阻止”,则会阻止该请求。 如果请求的异常分数为 5 或更高,并且 WAF 处于“检测”模式,则会记录请求,但不会阻止请求。
在预防模式下,若异常分数操作设置为“阻止”,一个“
严重
”规则匹配就足以让 WAF 阻止请求,因为总体异常分数为 5。 但一个“警告”规则匹配仅使异常分数增加 3,而这并不足以阻止流量。 触发异常规则时,它会在日志中显示“匹配”操作。 如果异常分数为 5 或更高,则会触发一个单独的规则,其中包含为规则集配置的异常分数操作。 默认异常分数操作为“阻止”,这会生成包含
blocked
操作的日志条目。
当 WAF 使用早期版本的默认规则集(低于 DRS 2.0 的版本)时,WAF 以传统模式运行。 与任何规则匹配的流量被视为独立于任何其他规则匹配。 在传统模式下,无法查看与特定请求匹配的完整规则集。
所用 DRS 版本还会确定请求正文检查支持哪些内容类型。 有关更多信息,请参阅常见问题中的
WAF 支持哪些内容类型
。
偏执狂级别
每条规则都分配在特定的偏执狂级别 (PL) 中。 在 Paranoia 级别 1 (PL1) 中配置的规则不太激进,并且几乎从不会触发误报。 它们提供基础安全性,几乎不需要进行微调。 PL2 中的规则检测到更多攻击,但预计会触发误报,应进行微调。
默认情况下,所有 DRS 规则版本都在 Paranoia Level 2 中预配置,包括在 PL1 和 PL2 中分配的规则。
如果希望在 WAF 仅使用 PL1,可以禁用任何或所有 PL2 规则,或者将其操作更改为“log”。 AZURE WAF 目前不支持 PL3 和 PL4。
升级或更改规则集版本
如果要升级或分配新的规则集版本,并且想要保留现有规则替代和排除项,建议使用 PowerShell、CLI、REST API 或模板进行规则集版本更改。 规则集的新版本可以有更新的规则、附加规则组,并可能对现有签名进行更新,以强制实施更好的安全性并减少误报。 建议验证测试环境中的更改,根据需要微调,然后在生产环境中部署。
如果使用 Azure 门户将新的托管规则集分配给 WAF 策略,则现有托管规则集(如规则状态、规则作和规则级别排除)的所有以前的自定义都将重置为新的托管规则集的默认值。 但是,在分配新规则集期间,任何自定义规则或策略设置均不受影响。 在生产环境中部署之前,需要重新定义规则替代和验证更改。
DRS 2.1
DRS 2.1 规则可以比早期版本的 DRS 提供更好的保护。 它包括 Microsoft 威胁情报团队开发的其他规则和签名更新,因此可以减少误报。 它还支持 URL 解码以外的转换。
DRS 2.1 包括下表中所示的 17 个规则组。 每个组包含多个规则,你可以自定义各个规则、规则组或整个规则集的行为。 DRS 2.1 以 Open Web Application Security Project (OWASP) 核心规则集 (CRS) 3.3.2 为基准,包含由 Microsoft 威胁情报团队制定的其他专有保护规则。
有关详细信息,请参阅
优化 Azure Front Door 的 Web 应用程序防火墙 (WAF)
。
DRS 2.1 仅在 Azure Front Door 高级版中可用。
MSThreatIntel-WebShells
尝试使用 Spring Framework 不安全类对象利用
CVE-2022-22965
启用规则以防止 SpringShell 漏洞
99001016
MSThreatIntel-WebShells
尝试 Spring Cloud 网关执行器注入
CVE-2022-22947
启用规则以防止 SpringShell 漏洞
99001017
MSThreatIntel-CVEs
尝试使用 Apache Struts 文件上传利用
CVE-2023-50164
启用规则来防止 Apache Struts 漏洞
DRS 2.0
DRS 2.0 规则能比早期版本的 DRS 提供更好的保护。 DRS 2.0 还支持 URL 解码以外的转换。
DRS 2.0 包含下表中所示的 17 个规则组。 每个组可包含多个规则。 可以禁用单个规则和整个规则组。
DRS 2.0 仅在 Azure Front Door 高级版中可用。
查看 WAF 的日志时,可能会看到规则 ID 949110。 规则说明中可能包括“入站异常分数超出阈值”。
此规则指示请求的总异常分数超出了允许的最大分数。 有关详细信息,请参阅
异常评分
。
优化 WAF 策略时,需要调查请求触发的其他规则,以便调整 WAF 的配置。 有关详细信息,请参阅
优化 Azure Front Door 的 Azure Web 应用程序防火墙
。
2.0 规则集
规则 ID
932130
远程命令执行:找到了 Unix Shell 表达式或 Confluence 漏洞 (CVE-2022-26134) 或 Text4Shell (
CVE-2022-42889
)
932140
远程命令执行:找到 Windows FOR/IF 命令
932150
远程命令执行:直接 Unix 命令执行
932160
远程命令执行:找到 Unix Shell 代码
932170
远程命令执行:Shellshock (CVE-2014-6271)
932171
远程命令执行:Shellshock (CVE-2014-6271)
932180
受限文件上传企图
PHP 攻击
规则 ID
查看 WAF 的日志时,可能会看到规则 ID 949110。 规则说明中可能包括“入站异常分数超出阈值”。
此规则指示请求的总异常分数超出了允许的最大分数。 有关详细信息,请参阅
异常评分
。
优化 WAF 策略时,需要调查请求触发的其他规则,以便调整 WAF 的配置。 有关详细信息,请参阅
优化 Azure Front Door 的 Azure Web 应用程序防火墙
。
1.1 规则集
规则 ID
932130
远程命令执行:找到了 Unix Shell 表达式或 Confluence 漏洞 (CVE-2022-26134) 或 Text4Shell (
CVE-2022-42889
)
932140
远程命令执行:找到 Windows FOR/IF 命令
932150
远程命令执行:直接 Unix 命令执行
932160
远程命令执行:Shellshock (CVE-2014-6271)
932170
远程命令执行:Shellshock (CVE-2014-6271)
932171
远程命令执行:Shellshock (CVE-2014-6271)
932180
受限文件上传企图
PHP 攻击
规则 ID
932130
远程命令执行:找到了 Unix Shell 表达式或 Confluence 漏洞 (CVE-2022-26134) 或 Text4Shell (
CVE-2022-42889
)
932140
远程命令执行:找到 Windows FOR/IF 命令
932150
远程命令执行:直接 Unix 命令执行
932160
远程命令执行:找到 Unix Shell 代码
932170
远程命令执行:Shellshock (CVE-2014-6271)
932171
远程命令执行:Shellshock (CVE-2014-6271)
932180
受限文件上传企图
PHP 攻击
规则 ID