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 Equals
i selektorem .Request body JSON args name
posts.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
, , HeaderName
PostParamName
lub 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
- Konfigurowanie list wykluczeń w zaporze aplikacji internetowej usługi Azure Front Door.
- Po skonfigurowaniu ustawień zapory aplikacji internetowej dowiedz się, jak wyświetlać dzienniki zapory aplikacji internetowej. Aby uzyskać więcej informacji, zobacz Diagnostyka usługi Azure Front Door.