Udostępnij przez


Monitorowanie i rejestrowanie Azure Web Application Firewall

Usługa Azure Web Application Firewall w usłudze Azure Front Door udostępnia obszerne rejestrowanie i dane telemetryczne, które ułatwiają zrozumienie działania zapory aplikacji internetowej oraz działań, które ona 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 WAF (zapory aplikacji internetowej) i dzienników. Monitorowanie zapory aplikacji internetowej można skonfigurować w zasobie usługi Azure Front Door w portalu Azure na karcie Diagnostyka, za pomocą podejść typu 'infrastruktura jako kod' 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 sieci web (WAF).

Aby uzyskać dostęp do metryk WAF (zapory aplikacji internetowych):

  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 metrykę 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 z działaniami kończącymi, takimi jak Block i Allow, a także żądania, w których WAF nie podjął żadnych działań. Ponieważ pojedyncze żądanie może wyzwalać wiele akcji niedających się zakończyć Log, są one wykluczone z tej metryki, aby uniknąć wielokrotnego liczenia żądań.

Zrzut ekranu przedstawiający metryki dla Azure Front Door WAF.

Metryki wyzwania w języku JavaScript (wersja zapoznawcza)

Aby uzyskać dostęp do metryk JavaScriptowych zapory sieciowej WAF:

  • Dodaj metrykę JS Challenge Request Count Zapory aplikacji internetowej, aby śledzić liczbę żądań, które pasują do reguł WAF z wyzwaniem JavaScript.

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

  • PolicyName: jest to nazwa polityki WAF
  • 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: Wyzwanie JS występuje 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 sieciowa usługi Azure Front Door udostępnia szczegółowe raporty o każdym żądaniu i każdym wykrytym zagrożeniu. 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.

Jeśli rejestrowanie jest włączone i zostanie wyzwolona reguła WAF, wszystkie zgodne wzorce są rejestrowane w postaci zwykłego tekstu, co pomaga w analizie i debugowaniu polityki WAF. 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 zdrowotnej

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łą WAF (zapory aplikacji internetowej).

Dziennik FrontdoorWebApplicationFirewallLog zawiera każde żądanie zgodne z regułą WAF.

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 czynnościami. Akcje to:
  • Allow i allow: Żądanie uzyskało pozwolenie na kontynuowanie przetwarzania.
  • Block i block: Żądanie jest zgodne z regułą zapory aplikacji internetowej skonfigurowaną do blokowania żądania. Alternatywnie próg wyniku anomalii został osiągnięty i żądanie zostało zablokowane.
  • Log i log: Żądanie pasuje do reguły zapory aplikacji sieciowej skonfigurowanej do użycia akcji Log.
  • AnomalyScoring i logandscore: Żądanie pasuje do reguły WAF. Reguła przyczynia się do wyniku dla anomalii. Żądanie może być, ale nie musi być zablokowane, w zależności od innych reguł działających na tym samym żądaniu.
  • JS Challenge i JSChallengeIssued: Wydane z powodu braku lub nieprawidłowego zezwolenia na wyzwanie, brakującej odpowiedzi.

    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 ciasteczko ważności.
  • JS Challenge i JSChallengePass: Zaliczone 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 tym przypadku Zapora Azure WAF weryfikuje ciasteczko i przechodzi do przetwarzania pozostałych reguł bez generowania kolejnego JS challenge.
  • JS Challenge i JSChallengeValid: Zalogowane/przekazane w wyniku uzasadnionego żądania.

    Ten dziennik jest tworzony, gdy klient wcześniej rozwiązał problem. W takim przypadku zapora aplikacji sieciowych 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.
IP klienta 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.
Port klienta 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 w żądaniu, która została dopasowana, 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.
Polityka Nazwa zasady zapory WAF, która przetworzyła żądanie.
PolicyMode (Tryb polityki) Tryb działania polityki zapory aplikacji internetowej. Możliwe wartości to Prevention i Detection.
RequestUri (Żądanie URI) Pełny identyfikator URI żądania.
NazwaReguły Nazwa reguły zapory aplikacji internetowej, która odpowiadała żądaniu.
Gniazdo IP Ź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ń.
Referencja śledzenia Unikatowy ciąg odniesienia 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 WAF 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ępny krok

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