你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Web 应用程序防火墙监视和日志记录
Azure Front Door 中的 Azure Web 应用程序防火墙提供了广泛的日志记录和遥测,可帮助你了解 Web 应用程序防火墙 (WAF) 的执行情况及其采取的操作。
Azure Front Door WAF 日志与 Azure Monitor 集成。 使用 Azure Monitor,你可以跟踪诊断信息(包括 WAF 警报和日志)。 可以通过 Azure 门户中的“诊断”选项卡、通过基础结构即代码方法或直接通过 Azure Monitor,在 Azure Front Door 资源内配置 WAF 监视。
指标
Azure Front Door 会自动记录指标,以帮助你了解 WAF 的行为。
若要访问 WAF 的指标,请执行以下操作:
- 登录到 Azure 门户,再转到你的 Azure Front Door 配置文件。
- 在最左侧窗格的“监视”下,选择“指标”选项卡。
- 添加“Web 应用程序防火墙请求计数”指标,跟踪与 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 规则匹配的请求。
FrontdoorWebApplicationFirewallLog
日志包含与 WAF 规则匹配的任何请求。
下表显示了为每个请求记录的值。
属性 | 说明 |
---|---|
操作 | 针对请求执行的操作。 日志包含所有操作的请求。 操作包括:
|
ClientIP | 发出请求的客户端的 IP 地址。 如果请求中有 X-Forwarded-For 标头,则改从该标头字段中获取客户端 IP 地址。 |
ClientPort | 发出请求的客户端的 IP 端口。 |
详细信息 | 有关请求的更多详细信息,其中包括检测到的任何威胁。 matchVariableName :匹配的请求的 HTTP 参数名,例如标头名称(不超过 100 个字符)。matchVariableValue :触发匹配的值(不超过 100 个字符)。 |
主机 | 请求的 Host 标头。 |
策略 | 处理了此请求的 WAF 策略的名称。 |
PolicyMode | WAF 策略的操作模式。 可能值为 Prevention 和 Detection 。 |
RequestUri | 请求的完整 URI。 |
RuleName | 请求匹配的 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"
AzureDiagnostics
| where ResourceType == "FRONTDOORS" 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"
}
]
}
}
}
{
"time": "2020-06-09T22:32:17.8376810Z",
"category": "FrontdoorWebApplicationFirewallLog",
"operationName": "Microsoft.Network/FrontDoorWebApplicationFirewallLog/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。