Udostępnij za pośrednictwem


Zapora aplikacji internetowej z listami wykluczeń usługi Azure Front Door

Czasami usługa Azure Web Application Firewall w usłudze Azure Front Door może blokować uzasadnione żądanie. W ramach dostrajania zapory aplikacji internetowej (WAF) można skonfigurować zaporę aplikacji internetowej, aby zezwolić na żądanie aplikacji. Listy wykluczeń zapory aplikacji internetowej umożliwiają pominięcie określonych atrybutów żądania z oceny zapory aplikacji internetowej. Pozostała część żądania jest oceniana normalnie.

Na przykład identyfikator Entra firmy Microsoft udostępnia tokeny używane do uwierzytelniania. Gdy te tokeny są używane w nagłówku żądania, mogą zawierać znaki specjalne, które mogą wyzwalać wykrywanie fałszywie dodatnie przez co najmniej jedną regułę zapory aplikacji internetowej. Nagłówek można dodać do listy wykluczeń, która informuje zaporę aplikacji internetowej o ignorowaniu nagłówka. Zapora aplikacji internetowej nadal sprawdza pozostałe żądania pod kątem podejrzanej zawartości.

Zakresy wykluczeń

Wykluczenia można tworzyć w następujących zakresach:

  • Zestaw reguł: te wykluczenia mają zastosowanie do wszystkich reguł w zestawie reguł.
  • Grupa reguł: te wykluczenia mają zastosowanie do wszystkich reguł określonej kategorii w zestawie reguł. Można na przykład skonfigurować wykluczenie, które ma zastosowanie do wszystkich reguł iniekcji SQL.
  • Reguła: te wykluczenia mają zastosowanie do jednej reguły.

Selektory wykluczeń

Selektory wykluczeń identyfikują części żądań, do których ma zastosowanie wykluczenie. Zapora aplikacji internetowej ignoruje wszelkie wykrycia znalezione w określonych częściach żądania. Można określić wiele selektorów wykluczeń w jednym wykluczeniu.

Każdy selektor wykluczeń określił zmienną dopasowania, operator i selektor.

Dopasuj zmienne

Do wykluczenia można dodać następujące atrybuty żądania:

  • Nazwa nagłówka żądania
  • Nazwa pliku cookie żądania
  • Nazwa args ciągu zapytania
  • Nazwa args treści żądania
  • Nazwa args treści żądania JSON (obsługiwana w systemie DRS 2.0 lub nowszym)

Wartości używanych pól nie są oceniane względem reguł zapory aplikacji internetowej, ale ich nazwy są oceniane. Listy wykluczeń wyłączają inspekcję wartości pola. Nazwy pól są jednak nadal oceniane. Aby uzyskać więcej informacji, zobacz Wykluczanie innych atrybutów żądania.

Operatory

Możesz określić dokładny nagłówek żądania, treść, plik cookie lub atrybut ciągu zapytania, który ma być zgodny. Możesz też opcjonalnie określić częściowe dopasowania. Następujące operatory są obsługiwane w przypadku kryteriów dopasowania:

  • Równa się: dopasuj wszystkie pola żądania, które dokładnie pasują do określonej wartości selektora. Aby na przykład wybrać nagłówek o nazwie bearerToken, użyj Equals operatora z selektorem ustawionym na bearerToken.
  • Rozpoczyna się od: dopasuj wszystkie pola żądania rozpoczynające się od określonej wartości selektora.
  • Kończy się na: dopasuj wszystkie pola żądania kończące się określoną wartością selektora.
  • Zawiera: Dopasuj wszystkie pola żądania zawierające określoną wartość selektora.
  • Równa się dowolne: dopasuj wszystkie pola żądania. Gdy używasz Equals any operatora, wartość selektora jest automatycznie ustawiana na *wartość . Możesz na przykład użyć Equals any operatora , aby skonfigurować wykluczenie, które ma zastosowanie do wszystkich nagłówków żądań.

Uwzględnij wielkość liter

Nazwy nagłówków i plików cookie są niewrażliwe na wielkość liter. W ciągach zapytań, argumentach POST i argumentach JSON uwzględniana jest wielkość liter.

Inspekcja zawartości ciała

Niektóre reguły zarządzane oceniają nieprzetworzony ładunek treści żądania przed przeanalizowaniem argumentów POST lub argumentów JSON. W niektórych sytuacjach wpisy dziennika mogą być wyświetlane z wartością matchVariableName InitialBodyContents lub DecodedInitialBodyContents.

Załóżmy na przykład, że utworzysz wykluczenie ze zmienną dopasowania i selektorem Request body POST args , aby zidentyfikować i zignorować argumenty POST o nazwie FOO. Nie widzisz już żadnych wpisów dziennika z wartością matchVariableName PostParamValue:FOO. Jeśli jednak argument POST o nazwie FOO zawiera tekst, który wyzwala regułę, dziennik może wyświetlić wykrywanie w początkowej zawartości treści. Obecnie nie można tworzyć wykluczeń dla początkowej zawartości treści.

Definiowanie reguł wykluczania na podstawie dzienników usługi Azure Web Application Firewall

Dzienniki umożliwiają wyświetlenie szczegółów zablokowanego żądania, w tym części żądania, które wyzwoliły regułę. Aby uzyskać więcej informacji, zobacz Monitorowanie i rejestrowanie usługi Azure Web Application Firewall.

Czasami określona reguła zapory aplikacji internetowej generuje fałszywie dodatnie wykrycia z wartości zawartych w nagłówku żądania, pliku cookie, argumentu POST, argumentu ciągu zapytania lub polu JSON w treści żądania. Jeśli wystąpią te fałszywie dodatnie wykrycia, możesz skonfigurować regułę, aby wykluczyć odpowiednią część żądania z jego oceny.

W poniższej tabeli przedstawiono przykładowe wartości z dzienników zapory aplikacji internetowej i odpowiednie selektory wykluczeń, które można utworzyć.

matchVariableName z dzienników zapory aplikacji internetowej Wykluczanie reguł w portalu
CookieValue:SOME_NAME Nazwa pliku cookie żądania równa się SOME_NAME
HeaderValue:SOME_NAME Nazwa nagłówka żądania równa się SOME_NAME
PostParamValue:SOME_NAME Treść żądania POST args name Equals SOME_NAME
QueryParamValue:SOME_NAME Nazwa args ciągu zapytania równa się SOME_NAME
JsonValue:SOME_NAME Nazwa args treści żądania w formacie JSON równa się SOME_NAME

Wykluczenia dla treści żądań JSON

Z usługi DRS w wersji 2.0 organy żądań JSON są sprawdzane przez zaporę aplikacji internetowej. Rozważmy na przykład treść żądania JSON:

{
  "posts": [
    {
      "id": 1,
      "comment": ""
    },
    {
      "id": 2,
      "comment": "\"1=1\""
    }
  ]
}

Żądanie zawiera sekwencję znaków komentarza SQL, którą zapora aplikacji internetowej wykrywa jako potencjalny atak polegający na wstrzyknięciu kodu SQL.

Jeśli ustalisz, że żądanie jest uzasadnione, możesz utworzyć wykluczenie ze zmienną dopasowania , operatorem Equalsi selektorem .Request body JSON args nameposts.comment

Wykluczanie innych atrybutów żądania

Jeśli wpis dziennika zapory aplikacji internetowej zawiera matchVariableName wartość, która nie znajduje się w poprzedniej tabeli, nie można utworzyć wykluczenia. Na przykład nie można obecnie tworzyć wykluczeń dla nazw plików cookie, nazw nagłówków, nazw parametrów POST ani nazw parametrów zapytania.

Zamiast tego rozważ podjęcie jednej z następujących akcji:

  • Wyłącz reguły, które dają wyniki fałszywie dodatnie.
  • Utwórz regułę niestandardową, która jawnie zezwala na te żądania. Żądania pomijają wszystkie inspekcje zapory aplikacji internetowej.

W szczególności, gdy matchVariableName wartość to CookieName, , HeaderNamePostParamNamelub QueryParamName, oznacza to, że nazwa pola, a nie jego wartość, wyzwoliła regułę. Obecnie wykluczenie reguły nie obsługuje tych matchVariableName wartości.

Następne kroki