Udostępnij za pośrednictwem


Monitorowanie i rejestrowanie zapory aplikacji internetowej platformy Azure

Usługa Azure Web Application Firewall w usłudze Azure Front Door udostępnia obszerne 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.

Metryki

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.

Zrzut ekranu przedstawiający metryki zapory aplikacji internetowej usługi Azure Front Door.

Metryki wyzwania w języku JavaScript (wersja zapoznawcza)

Aby uzyskać dostęp do metryk zapory aplikacji internetowej w języku JavaScript:

  • Dodaj metryki Zapora aplikacji internetowej, aby śledzić liczbę żądań pasujących do reguł zapory JS Challenge Request Count aplikacji internetowej w języku JavaScript.

Następujące filtry są udostępniane w ramach tej metryki:

  • PolicyName: jest to nazwa zasad zapory aplikacji internetowej
  • Reguła: może to być dowolna reguła niestandardowa lub reguła bota
  • Akcja: istnieją cztery możliwe wartości akcji JS Challenge
    • Wystawiono: Zadanie JS jest wywoływane po raz pierwszy
    • Zakończone powodzeniem: obliczanie zadania JS Challenge powiodło się i odebrano odpowiedź
    • Prawidłowe: plik cookie ważności narzędzia JS Challenge był obecny
    • Zablokowane: obliczanie wyzwania JS nie powiodło się

Zrzut ekranu przedstawiający metryki wyzwania języka JavaScript.

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.

Zrzut ekranu przedstawiający sposób włączania dzienników zapory aplikacji internetowej.

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.

Możesz włączyć trzy typy dzienników usługi Azure Front Door:

  • Dzienniki zapory aplikacji internetowej
  • Dzienniki dostępu
  • Dzienniki sondy kondycji

Dzienniki aktywności są domyślnie włączone i zapewniają wgląd w operacje wykonywane na zasobach platformy Azure, takie jak zmiany konfiguracji w profilu usługi Azure Front Door.

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.
  • JS Challenge i JSChallengeIssued: Wystawiono z powodu braku/nieprawidłowego rozliczenia wyzwania, brakująca odpowiedź.

    Dziennik jest tworzony, gdy klient żąda dostępu do aplikacji internetowej po raz pierwszy i nie został wcześniej zakwestionowany. Ten klient otrzymuje stronę wyzwania JS i przechodzi do obliczenia wyzwania JS. Po pomyślnym obliczeniu klient otrzymuje plik cookie ważności.
  • JS Challenge i JSChallengePass: Przekazane z powodu prawidłowej odpowiedzi na wyzwanie.

    Ten dziennik jest tworzony, gdy klient rozwiązuje wyzwanie JS i ponownie przesyła żądanie z prawidłową odpowiedzią. W takim przypadku zapora aplikacji internetowej platformy Azure weryfikuje plik cookie i przechodzi do przetwarzania pozostałych reguł bez generowania innego wyzwania JS.
  • JS Challenge i JSChallengeValid: Zarejestrowane/przekazywane ze względu na prawidłowe wyzwanie.

    Ten dziennik jest tworzony, gdy klient wcześniej rozwiązał problem. W takim przypadku zapora aplikacji internetowej platformy Azure rejestruje żądanie i przechodzi do przetwarzania pozostałych reguł.
  • JS Challenge i JSChallengeBlock: Zablokowane

    Ten dziennik jest tworzony, gdy obliczenia wyzwania JS kończą się niepowodzeniem.
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.
Identyfikator 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"
        }
      ]
    }
  }
}

Aby uzyskać więcej informacji na temat innych dzienników usługi Azure Front Door, zobacz Monitorowanie metryk i dzienników w usłudze Azure Front Door.

Następne kroki

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