Firewall webových aplikací se seznamy vyloučení služby Azure Front Door
Brána firewall webových aplikací Azure ve službě Azure Front Door může někdy blokovat legitimní požadavek. V rámci ladění firewallu webových aplikací (WAF) můžete waF nakonfigurovat tak, aby povolovali požadavek pro vaši aplikaci. Seznamy vyloučení WAF umožňují vynechat konkrétní atributy požadavků z vyhodnocení WAF. Zbytek požadavku se vyhodnotí jako normální.
Například Microsoft Entra ID poskytuje tokeny, které se používají k ověřování. Pokud se tyto tokeny používají v hlavičce požadavku, můžou obsahovat speciální znaky, které můžou aktivovat falešně pozitivní detekci pomocí jednoho nebo více pravidel WAF. Záhlaví můžete přidat do seznamu vyloučení, který říká WAF, aby záhlaví ignoroval. WAF stále kontroluje zbývající část požadavku na podezřelý obsah.
Obory vyloučení
Vyloučení můžete vytvořit v následujících oborech:
- Sada pravidel: Tato vyloučení platí pro všechna pravidla v rámci sady pravidel.
- Skupina pravidel: Tato vyloučení platí pro všechna pravidla konkrétní kategorie v rámci sady pravidel. Můžete například nakonfigurovat vyloučení, které platí pro všechna pravidla injektáže SQL.
- Pravidlo: Tato vyloučení platí pro jedno pravidlo.
Selektory vyloučení
Selektory vyloučení identifikují části požadavků, na které se vyloučení vztahuje. WAF ignoruje všechna zjištění, která najde v zadaných částech požadavku. V jednom vyloučení můžete zadat více selektorů vyloučení.
Každý selektor vyloučení určil proměnnou shody, operátor a selektor.
Shoda proměnných
Do vyloučení můžete přidat následující atributy požadavku:
- Název hlavičky požadavku
- Název souboru cookie požadavku
- Název args řetězce dotazu
- Název textu požadavku POST args
- Název textu požadavku JSON (podporovaný v DRS 2.0 nebo novější)
Hodnoty polí, která používáte, se nevyhodnocují podle pravidel WAF, ale jejich názvy se vyhodnocují. Vyloučení vypíše zakázání kontroly hodnoty pole. Názvy polí se ale stále vyhodnocují. Další informace naleznete v tématu Vyloučení dalších atributů požadavku.
Operátory
Můžete zadat přesnou hlavičku požadavku, text, soubor cookie nebo atribut řetězce dotazu, který se má shodovat. Nebo můžete volitelně zadat částečné shody. Kritéria shody podporují následující operátory:
-
Rovná se: Porovná všechna pole požadavku, která přesně odpovídají zadané hodnotě selektoru. Pokud například chcete vybrat záhlaví s názvem bearerToken, použijte
Equals
operátor s selektorem nastaveným na bearerToken. - Začíná: Porovná všechna pole požadavku, která začínají zadanou hodnotou selektoru.
- Končí: Porovná všechna pole požadavku, která končí zadanou hodnotou selektoru.
- Obsahuje: Porovná všechna pole požadavku, která obsahují zadanou hodnotu selektoru.
-
Rovná se libovolné: Porovná všechna pole požadavku. Při použití operátoru
Equals any
je hodnota selektoru automaticky nastavena na*
. Pomocí operátoruEquals any
můžete například nakonfigurovat vyloučení, které platí pro všechny hlavičky požadavku.
Rozlišování malých a velkých písmen
Názvy hlaviček a souborů cookie nerozlišují malá a velká písmena. Řetězce dotazů, argumenty POST a argumenty JSON rozlišují malá a velká písmena.
Kontrola obsahu těla
Některá spravovaná pravidla vyhodnocují nezpracovanou datovou část textu požadavku, než se parsují do argumentů POST nebo argumentů JSON. V některých situacích se tedy můžou zobrazit položky protokolu s matchVariableName
hodnotou InitialBodyContents
nebo DecodedInitialBodyContents
.
Předpokládejme například, že vytvoříte vyloučení s proměnnou Request body POST args
shody a selektorem pro identifikaci a ignorování argumentů POST s názvem FOO
. Již se nezobrazují žádné položky protokolu s matchVariableName
hodnotou PostParamValue:FOO
. Pokud však argument POST s názvem FOO
obsahuje text, který aktivuje pravidlo, může protokol zobrazit detekci v počátečním obsahu textu. V současné době není možné vytvářet vyloučení pro počáteční obsah textu.
Definování pravidel vyloučení na základě protokolů firewallu webových aplikací Azure
Protokoly můžete použít k zobrazení podrobností blokovaného požadavku, včetně částí požadavku, které pravidlo aktivovaly. Další informace najdete v tématu Monitorování a protokolování služby Azure Web Application Firewall.
Někdy konkrétní pravidlo WAF vytváří falešně pozitivní detekce z hodnot obsažených v hlavičce požadavku, souboru cookie, argumentu POST, argumentu řetězce dotazu nebo pole JSON v textu požadavku. Pokud k těmto falešně pozitivním detekcí dojde, můžete pravidlo nakonfigurovat tak, aby z vyhodnocení vyloučilo příslušnou část požadavku.
Následující tabulka ukazuje ukázkové hodnoty z protokolů WAF a odpovídající selektory vyloučení, které byste mohli vytvořit.
matchVariableName z protokolů WAF | Vyloučení pravidla na portálu |
---|---|
CookieValue:SOME_NAME | Název souboru cookie požadavku se rovná SOME_NAME |
HeaderValue:SOME_NAME | Název hlavičky požadavku se rovná SOME_NAME |
PostParamValue:SOME_NAME | Text požadavku POST args name Equals SOME_NAME |
QueryParamValue:SOME_NAME | Název args řetězce dotazu se rovná SOME_NAME |
JsonValue:SOME_NAME | Název textu požadavku JSON se rovná SOME_NAME |
Vyloučení pro subjekty žádostí JSON
Z DRS verze 2.0 jsou těla žádostí JSON kontrolována WAF. Představte si například tento text požadavku JSON:
{
"posts": [
{
"id": 1,
"comment": ""
},
{
"id": 2,
"comment": "\"1=1\""
}
]
}
Požadavek obsahuje posloupnost znaků komentáře SQL, kterou WAF detekuje jako potenciální útok prostřednictvím injektáže SQL.
Pokud zjistíte, že požadavek je legitimní, můžete vytvořit vyloučení s proměnnou Request body JSON args name
shody , operátoru Equals
a selektoru posts.comment
.
Vyloučení dalších atributů požadavku
Pokud položka protokolu WAF zobrazuje matchVariableName
hodnotu, která není v předchozí tabulce, nemůžete vytvořit vyloučení. V současné době například nemůžete vytvářet vyloučení pro názvy souborů cookie, názvy hlaviček, názvy parametrů POST nebo názvy parametrů dotazu.
Místo toho zvažte provedení jedné z následujících akcí:
- Zakažte pravidla, která poskytují falešně pozitivní výsledky.
- Vytvořte vlastní pravidlo, které explicitně umožňuje tyto požadavky. Žádosti obcházejí všechny kontroly WAF.
Konkrétně platí, že pokud matchVariableName
je CookieName
hodnota , HeaderName
, PostParamName
nebo QueryParamName
, znamená název pole, místo jeho hodnoty, aktivoval pravidlo. Vyloučení pravidla v tuto chvíli nepodporuje tyto matchVariableName
hodnoty.
Další kroky
- Nakonfigurujte seznamy vyloučení ve službě Azure Front Door WAF.
- Po konfiguraci nastavení WAF se dozvíte, jak zobrazit protokoly WAF. Další informace najdete v tématu Diagnostika služby Azure Front Door.