Monitorowanie i rejestrowanie zapory aplikacji internetowej platformy Azure

Usługa Azure Web Application Firewall w usłudze Azure Front Door udostępnia rozbudowane rejestrowanie i dane telemetryczne, które ułatwiają zrozumienie sposobu wykonywania zapory aplikacji internetowej i akcji, które podejmuje.

Dziennik zapory aplikacji internetowej usługi Azure Front Door jest zintegrowany z usługą Azure Monitor. Usługa Azure Monitor umożliwia śledzenie informacji diagnostycznych, w tym alertów zapory aplikacji internetowej i dzienników. Monitorowanie zapory aplikacji internetowej można skonfigurować w zasobie usługi Azure Front Door w witrynie Azure Portal na karcie Diagnostyka , za pomocą infrastruktury jako podejścia do kodu lub bezpośrednio przy użyciu usługi Azure Monitor.

Mierniki

Usługa Azure Front Door automatycznie rejestruje metryki, aby ułatwić zrozumienie zachowania zapory aplikacji internetowej.

Aby uzyskać dostęp do metryk zapory aplikacji internetowej:

  1. Zaloguj się do witryny Azure Portal i przejdź do profilu usługi Azure Front Door.
  2. W okienku po lewej stronie w obszarze Monitorowanie wybierz kartę Metryki .
  3. Dodaj metryka Liczba żądań zapory aplikacji internetowej, aby śledzić liczbę żądań pasujących do reguł zapory aplikacji internetowej.

Niestandardowe filtry można tworzyć na podstawie typów akcji i nazw reguł. Metryki obejmują żądania ze wszystkimi akcjami z wyjątkiem Log.

Screenshot that shows the metrics for an Azure Front Door WAF.

Dzienniki i diagnostyka

Zapora aplikacji internetowej usługi Azure Front Door udostępnia szczegółowe raporty dotyczące każdego żądania i każdego wykrytego zagrożenia. Rejestrowanie jest zintegrowane z dziennikami diagnostycznymi i alertami platformy Azure przy użyciu dzienników usługi Azure Monitor.

Dzienniki nie są domyślnie włączone. Należy jawnie włączyć dzienniki. Dzienniki można skonfigurować w witrynie Azure Portal przy użyciu karty Ustawienia diagnostyczne.

Screenshot that shows how to enable the WAF logs.

Jeśli rejestrowanie jest włączone i zostanie wyzwolona reguła zapory aplikacji internetowej, wszystkie zgodne wzorce są rejestrowane w postaci zwykłego tekstu, aby ułatwić analizowanie i debugowanie zachowania zasad zapory aplikacji internetowej. Możesz użyć wykluczeń, aby dostosować reguły i wykluczyć wszystkie dane, które mają zostać wykluczone z dzienników. Aby uzyskać więcej informacji, zobacz Listy wykluczeń zapory aplikacji internetowej w usłudze Azure Front Door.

Usługa Azure Front Door udostępnia dwa typy dzienników: dzienniki dostępu i dzienniki zapory aplikacji internetowej.

Dzienniki dostępu

FrontDoorAccessLog Dziennik zawiera wszystkie żądania przechodzące przez usługę Azure Front Door. Aby uzyskać więcej informacji na temat dziennika dostępu usługi Azure Front Door, w tym schematu dziennika, zobacz Monitorowanie metryk i dzienników w usłudze Azure Front Door.

FrontdoorAccessLog Dziennik zawiera wszystkie żądania przechodzące przez usługę Azure Front Door. Aby uzyskać więcej informacji na temat dziennika dostępu usługi Azure Front Door, w tym schematu dziennika, zobacz Monitorowanie metryk i dzienników w usłudze Azure Front Door (wersja klasyczna).

Następujące przykładowe zapytanie zwraca wpisy dziennika dostępu:

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

Poniższy fragment kodu przedstawia przykładowy wpis dziennika:

{
  "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"
  }
}

Dzienniki zapory aplikacji internetowej

Dziennik FrontDoorWebApplicationFirewallLog zawiera żądania zgodne z regułą zapory aplikacji internetowej.

Dziennik FrontdoorWebApplicationFirewallLog zawiera każde żądanie zgodne z regułą zapory aplikacji internetowej.

W poniższej tabeli przedstawiono wartości zarejestrowane dla każdego żądania.

Właściwości opis
Akcja Akcja podjęta na żądanie. Dzienniki obejmują żądania ze wszystkimi akcjami. Akcje to:
  • Allow i allow: Żądanie mogło kontynuować przetwarzanie.
  • Block i block: Żądanie jest zgodne z regułą zapory aplikacji internetowej skonfigurowaną do blokowania żądania. Alternatywnie osiągnięto próg oceniania anomalii i żądanie zostało zablokowane.
  • Log i log: Żądanie pasuje do reguły zapory aplikacji internetowej skonfigurowanej Log do korzystania z akcji.
  • AnomalyScoring i logandscore: Żądanie jest zgodne z regułą zapory aplikacji internetowej. Reguła przyczynia się do wyniku anomalii. Żądanie może lub nie może być zablokowane w zależności od innych reguł, które są uruchamiane na tym samym żądaniu.
ClientIP Adres IP klienta, który złożył żądanie. Jeśli w żądaniu znajdował się X-Forwarded-For nagłówek, adres IP klienta jest zamiast tego pobierany z tego pola nagłówka.
ClientPort Port IP klienta, który złożył żądanie.
Szczegóły Więcej szczegółów dotyczących żądania, w tym wszelkich wykrytych zagrożeń.
matchVariableName: nazwa parametru HTTP żądania dopasowane, na przykład nazwy nagłówków (maksymalnie 100 znaków).
matchVariableValue: wartości, które wyzwoliły dopasowanie (maksymalnie 100 znaków).
Gospodarz Host Nagłówek żądania.
Zasady Nazwa zasad zapory aplikacji internetowej, które przetworzyły żądanie.
PolicyMode Tryb operacji zasad zapory aplikacji internetowej. Możliwe wartości to Prevention i Detection.
Requesturi Pełny identyfikator URI żądania.
Rulename Nazwa reguły zapory aplikacji internetowej zgodna z żądaniem.
SocketIP Źródłowy adres IP widoczny przez zaporę aplikacji internetowej. Ten adres IP jest oparty na sesji TCP i nie uwzględnia żadnych nagłówków żądań.
TrackingReference Unikatowy ciąg odwołania identyfikujący żądanie obsługiwane przez usługę Azure Front Door. Ta wartość jest wysyłana do klienta w nagłówku X-Azure-Ref odpowiedzi. Użyj tego pola podczas wyszukiwania określonego żądania w dzienniku.

Następujące przykładowe zapytanie pokazuje żądania zablokowane przez zaporę aplikacji internetowej usługi Azure Front Door:

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorWebApplicationFirewallLog" 
| where action_s == "Block" 
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"

Poniższy fragment kodu przedstawia przykładowy wpis dziennika, w tym przyczynę zablokowania żądania:

{
  "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"
        }
      ]
    }
  }
}

Następne kroki

Dowiedz się więcej o usłudze Azure Front Door.