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átoru Equals 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 nameshody , operátoru Equalsa 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 CookieNamehodnota , HeaderName, PostParamNamenebo QueryParamName, znamená název pole, místo jeho hodnoty, aktivoval pravidlo. Vyloučení pravidla v tuto chvíli nepodporuje tyto matchVariableName hodnoty.

Další kroky