Azure Web 應用程式防火牆監視與記錄

Azure Web 應用程式防火牆 (WAF) 監視與記錄是透過記錄來提供,以及透過與 Azure 監視器及 Azure 監視器記錄整合來提供。

Azure 監視器

Front Door 的 WAF 記錄會與 Azure 監視器整合。 Azure 監視器可讓您追蹤診斷資訊,包括 WAF 警示與記錄。 您可以在入口網站的 [診斷] 索引標籤底下,透過基礎結構即程式碼方法,或直接使用 Azure 監視器服務,在 Front Door 資源中設定 WAF 監視。

從 Azure 入口網站移至 Front Door 資源類型。 您可以從左側的 [監視/計量] 分頁,將 [WebApplicationFirewallRequestCount] 新增至符合 WAF 規則的要求追蹤號碼。 您可以根據動作類型和規則名稱來建立自訂篩選。

WAFMetrics

記錄與診斷

WAF 與 Front Door 會提供每個要求的詳細報告,以及其偵測到的每個威脅。 記錄會與 Azure 診斷記錄和警示整合。 這些記錄可以與 Azure 監視器記錄整合。

WAFDiag

Front Door 會提供兩種類型的記錄:存取記錄和 WAF 記錄。

存取記錄

FrontDoorAccessLog 包含通過 Front Door 的所有要求。 如需 Front Door 存取記錄的詳細資訊 (包括記錄架構描述),請參閱 Azure Front Door 記錄

FrontDoorAccessLog 包含通過 Front Door 的所有要求。 如需 Front Door 存取記錄的詳細資訊 (包括記錄架構描述),請參閱 監視 Azure Front Door 中的計量和記錄 (傳統)

下列範例查詢會傳回存取記錄項目:

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorAccessLog"
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorAccessLog"

下方會顯示範例記錄項目:

{
  "time": "2020-06-09T22:32:17.8383427Z",
  "category": "FrontDoorAccessLog",
  "operationName": "Microsoft.Cdn/Profiles/AccessLog/Write",
  "properties": {
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "httpMethod": "GET",
    "httpVersion": "2.0",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "requestBytes": "715",
    "responseBytes": "380",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4157.0 Safari/537.36 Edg/85.0.531.1",
    "clientIp": "xxx.xxx.xxx.xxx",
    "socketIp": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "timeTaken": "0.003",
    "securityProtocol": "TLS 1.2",
    "routingRuleName": "WAFdemoWebAppRouting",
    "rulesEngineMatchNames": [],
    "backendHostname": "wafdemowebappuscentral.azurewebsites.net:443",
    "sentToOriginShield": false,
    "httpStatusCode": "403",
    "httpStatusDetails": "403",
    "pop": "SJC",
    "cacheStatus": "CONFIG_NOCACHE"
  }
}
{
  "time": "2020-06-09T22:32:17.8383427Z",
  "category": "FrontdoorAccessLog",
  "operationName": "Microsoft.Network/FrontDoor/AccessLog/Write",
  "properties": {
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "httpMethod": "GET",
    "httpVersion": "2.0",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "requestBytes": "715",
    "responseBytes": "380",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4157.0 Safari/537.36 Edg/85.0.531.1",
    "clientIp": "xxx.xxx.xxx.xxx",
    "socketIp": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "timeTaken": "0.003",
    "securityProtocol": "TLS 1.2",
    "routingRuleName": "WAFdemoWebAppRouting",
    "rulesEngineMatchNames": [],
    "backendHostname": "wafdemowebappuscentral.azurewebsites.net:443",
    "sentToOriginShield": false,
    "httpStatusCode": "403",
    "httpStatusDetails": "403",
    "pop": "SJC",
    "cacheStatus": "CONFIG_NOCACHE"
  }
}

WAF 日志

FrontDoorWebApplicationFirewallLog 包含符合 WAF 規則的要求。

FrontdoorWebApplicationFirewallLog 包含符合 WAF 規則的任何要求。

下表會顯示針對每個要求所記錄的值:

屬性 描述
動作 對要求採取的動作。 記錄包含具有所有動作的要求。 計量包含所有動作 ([記錄] 除外) 的要求。
ClientIP 發出要求之用戶端的 IP 位址。 如果要求中有 X-Forwarded-For 標頭,用戶端 IP 位址會改為從該標頭欄位取得。
ClientPort 發出要求的用戶端的 IP 連接埠。
詳細資料 要求的其他詳細資料,包括偵測到的任何威脅。
matchVariableName:符合要求的 HTTP 參數名稱,例如標頭名稱 (最多 100 個字元)。
matchVariableValue:觸發比對的值 (最多 100 個字元)。
Host 要求的 Host 標頭。
原則 處理要求的 WAF 原則名稱。
PolicyMode WAF 原則的作業模式。 可能的值是 PreventionDetection
RequestUri 要求的完整 URI。
RuleName 符合要求的 WAF 規則名稱。
SocketIP WAF 所見的來源 IP 位址。 此 IP 位址是以 TCP 工作階段為基礎,而且不會考慮任何要求標頭。
TrackingReference 這是唯一的參考字串,可識別由 Front Door 提供服務的要求。 此值會傳送至 X-Azure-Ref 回應標頭中的用戶端。 在記錄中搜尋特定要求時,請使用此欄位。

下列範例查詢會顯示 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"
        }
      ]
    }
  }
}

下一步