Azure Front Door 上的 Azure Web 应用程序防火墙提供了广泛的日志记录和遥测数据,可帮助你了解 Web 应用程序防火墙(WAF)的执行方式以及它执行的作。
Azure Front Door WAF 日志与 Azure Monitor 集成。 使用 Azure Monitor 可以跟踪诊断信息,包括 WAF 警报和日志。 可以在 Azure 门户的“ 诊断 ”选项卡下的 Azure Front Door 资源中配置 WAF 监视,通过基础结构即代码方法,或者直接使用 Azure Monitor。
Metrics
Azure Front Door 会自动记录指标,以帮助了解 WAF 的行为。
访问 WAF 指标:
- 登录到 Azure 门户 并转到 Azure Front Door 配置文件。
- 在“ 监视”下的最左侧窗格中,选择“ 指标 ”选项卡。
- 添加 Web 应用程序防火墙请求计数 指标以跟踪与 WAF 规则匹配的请求数。
可以根据作类型和规则名称创建自定义筛选器。 指标包括终止作的请求 Block
, Allow
以及 WAF 未执行任何作的请求。 由于单个请求可以触发多个非终止 Log
作,因此会从此指标中排除这些作,以避免重复请求计数。
JavaScript 质询(预览版)指标
访问 JavaScript 质询 WAF 指标:
- 添加 Web 应用程序防火墙
JS Challenge Request Count
指标以跟踪与 JavaScript 质询 WAF 规则匹配的请求数。
以下筛选器作为此指标的一部分提供:
- PolicyName:这是 WAF 策略名称
- 规则:可以是任何自定义规则或机器人规则
-
作:JS 质询作有四个可能的值
- 已发出:首次调用 JS 质询
- 传递:JS 质询计算成功并收到答案
- 有效:JS 质询有效性 Cookie 存在
- 已阻止:JS 质询计算失败
日志和诊断
Azure Front Door WAF 提供有关每个请求及其检测到的每个威胁的详细报告。 日志记录通过 Azure Monitor 日志与 Azure 的诊断日志和警报集成。
默认情况下不会启用日志。 必须显式启用日志。 可以使用 “诊断设置 ”选项卡在 Azure 门户中配置日志。
如果启用日志记录并触发 WAF 规则,则会以纯文本方式记录任何匹配模式,以帮助分析和调试 WAF 策略行为。 可以使用排除项微调规则,并排除要从日志中排除的任何数据。 有关详细信息,请参阅 Azure Front Door 中的 Web 应用程序防火墙排除列表。
可以启用三种类型的 Azure Front Door 日志:
- WAF 日志
- 访问日志
- 运行状况探测日志
默认情况下启用活动日志,并提供对 Azure 资源执行的作的可见性,例如对 Azure Front Door 配置文件的配置更改。
WAF 日志
该日志 FrontDoorWebApplicationFirewallLog
包括与 WAF 规则匹配的请求。
下表显示了为每个请求记录的值。
资产 | Description |
---|---|
Action | 针对请求执行的操作。 日志包括包含所有作的请求。 作包括:
|
ClientIP | 发出请求的客户端的 IP 地址。 如果请求中有标头 X-Forwarded-For ,则客户端 IP 地址取自该标头字段。 |
ClientPort | 发出请求的客户端的 IP 端口。 |
详细信息 | 有关请求的更多详细信息,包括检测到的任何威胁。 matchVariableName :请求的 HTTP 参数名称匹配,例如标头名称(最多 100 个字符)。matchVariableValue :触发匹配的值(最多 100 个字符)。 |
Host |
Host 请求的标头。 |
Policy | 处理请求的 WAF 策略的名称。 |
PolicyMode | WAF 策略的作模式。 可能的值为 Prevention 和 Detection 。 |
RequestUri | 请求的完整 URI。 |
规则名称 | 请求匹配的 WAF 规则的名称。 |
SocketIP | WAF 看到的源 IP 地址。 此 IP 地址基于 TCP 会话,不考虑任何请求标头。 |
TrackingReference | 标识 Azure Front Door 提供的请求的唯一引用字符串。 此值将发送到响应标头中的 X-Azure-Ref 客户端。 在日志中搜索特定请求时使用此字段。 |
以下示例查询显示 Azure Front Door WAF 阻止的请求:
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorWebApplicationFirewallLog"
| where action_s == "Block"
以下代码片段显示了一个示例日志条目,包括请求被阻止的原因:
{
"time": "2020-06-09T22:32:17.8376810Z",
"category": "FrontdoorWebApplicationFirewallLog",
"operationName": "Microsoft.Cdn/Profiles/Write",
"properties": {
"clientIP": "xxx.xxx.xxx.xxx",
"clientPort": "52097",
"socketIP": "xxx.xxx.xxx.xxx",
"requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
"ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
"policy": "WafDemoCustomPolicy",
"action": "Block",
"host": "wafdemofrontdoorwebapp.azurefd.net",
"trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
"policyMode": "prevention",
"details": {
"matches": [
{
"matchVariableName": "QueryParamValue:q",
"matchVariableValue": "' or 1=1"
}
]
}
}
}
有关其他 Azure Front Door 日志的详细信息,请参阅 Azure Front Door 中的监视指标和日志。
后续步骤
详细了解 Azure Front Door。