Azure Web 應用程式防火牆監視與記錄
Azure Front Door 上的 Azure Web 應用程式防火牆提供廣泛的記錄和遙測,可協助您了解 Web 應用程式防火牆 (WAF) 的執行方式及其採取的動作。
Azure Front Door WAF 記錄會與 Azure 監視器整合。 Azure 監視器可讓您追蹤診斷資訊,包括 WAF 警示與記錄。 您可以在 Azure 入口網站的 [診斷] 索引標籤底下,透過基礎結構即程式碼方法,或直接使用 Azure 監視器,在 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 的診斷記錄和警示整合,方法是使用 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 | 要求的 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。