Brandvägg för webbprogram med Azure Front Door-undantagslistor

Ibland kan Azure Web Application Firewall i Azure Front Door blockera en legitim begäran. Som en del av justeringen av brandväggen för webbprogram (WAF) kan du konfigurera WAF för att tillåta begäran för ditt program. Med WAF-undantagslistor kan du utelämna specifika begärandeattribut från en WAF-utvärdering. Resten av begäran utvärderas som vanligt.

Till exempel tillhandahåller Microsoft Entra-ID token som används för autentisering. När dessa token används i ett begärandehuvud kan de innehålla specialtecken som kan utlösa en falsk positiv identifiering av en eller flera WAF-regler. Du kan lägga till huvudet i en undantagslista, vilket talar om för WAF att ignorera huvudet. WAF inspekterar fortfarande resten av begäran om misstänkt innehåll.

Undantagsomfång

Du kan skapa undantag i följande omfång:

  • Regeluppsättning: Dessa undantag gäller för alla regler i en regeluppsättning.
  • Regelgrupp: Dessa undantag gäller för alla regler för en viss kategori i en regeluppsättning. Du kan till exempel konfigurera ett undantag som gäller för alla SQL-inmatningsregler.
  • Regel: Dessa undantag gäller för en enda regel.

Exkluderingsväljare

Exkluderingsväljare identifierar de delar av begäranden som undantaget gäller för. WAF ignorerar alla identifieringar som hittas i de angivna delarna av begäran. Du kan ange flera undantagsväljare i ett enda undantag.

Varje exkluderingsväljare angav en matchningsvariabel, en operator och en väljare.

Matcha variabler

Du kan lägga till följande begärandeattribut i ett undantag:

  • Namn på begärandehuvud
  • Namn på begärandecookie
  • Frågesträngens args-namn
  • Post args-namn för begärandetext
  • JSON args-namn för begärandetext (stöds på DRS 2.0 eller senare)

Värdena för de fält som du använder utvärderas inte mot WAF-regler, men deras namn utvärderas. Undantagslistorna inaktiverar kontrollen av fältets värde. Fältnamnen utvärderas dock fortfarande. Mer information finns i Exkludera andra begärandeattribut.

Operatorer

Du kan ange ett exakt attribut för begäranderubrik, brödtext, cookie eller frågesträng som ska matchas. Du kan också ange partiella matchningar. Följande operatorer stöds för matchningsvillkor:

  • Lika med: Matcha alla begärandefält som exakt matchar det angivna väljarens värde. Om du till exempel vill välja en rubrik med namnet bearerToken använder du operatorn Equals med väljaren inställd på bearerToken.
  • Börjar med: Matcha alla begärandefält som börjar med det angivna väljarevärdet.
  • Slutar med: Matcha alla begärandefält som slutar med det angivna väljarevärdet.
  • Innehåller: Matcha alla begärandefält som innehåller det angivna väljarevärdet.
  • Är lika med alla: Matcha alla fält för begäran. När du använder operatorn Equals any anges väljarens värde automatiskt till *. Du kan till exempel använda operatorn Equals any för att konfigurera ett undantag som gäller för alla begärandehuvuden.

Skiftlägeskänslig

Rubrik- och cookienamn är skiftlägesokänsliga. Frågesträngar, POST-argument och JSON-argument är skiftlägeskänsliga.

Inspektion av brödtextinnehåll

Vissa av de hanterade reglerna utvärderar den råa nyttolasten för begärandetexten innan den parsas i POST-argument eller JSON-argument. Så i vissa situationer kan du se loggposter med värdet matchVariableNameInitialBodyContents eller DecodedInitialBodyContents.

Anta till exempel att du skapar ett undantag med en matchningsvariabel för Request body POST args och en väljare för att identifiera och ignorera POST-argument med namnet FOO. Du ser inte längre några loggposter med värdet matchVariableNamePostParamValue:FOO. Men om ett POST-argument med namnet FOO innehåller text som utlöser en regel kan loggen visa identifieringen i det ursprungliga brödtextinnehållet. Du kan för närvarande inte skapa undantag för det ursprungliga brödtextinnehållet.

Definiera undantagsregler baserat på Azure Web Application Firewall-loggar

Du kan använda loggar för att visa information om en blockerad begäran, inklusive de delar av begäran som utlöste regeln. Mer information finns i Övervakning och loggning av Azure Web Application Firewall.

Ibland skapar en specifik WAF-regel falska positiva identifieringar från värdena som ingår i ett begärandehuvud, cookie, POST-argument, frågesträngsargument eller JSON-fält i en begärandetext. Om dessa falska positiva identifieringar inträffar kan du konfigurera regeln så att den utesluter den relevanta delen av begäran från utvärderingen.

I följande tabell visas exempelvärden från WAF-loggar och motsvarande exkluderingsväljare som du kan skapa.

matchVariableName från WAF-loggar Regelundantag i portalen
CookieValue:SOME_NAME Begäran om cookienamn är lika med SOME_NAME
HeaderValue:SOME_NAME Namn på begärandehuvud är lika med SOME_NAME
PostParamValue:SOME_NAME Post args-namn för begärandetext är lika med SOME_NAME
QueryParamValue:SOME_NAME Frågesträngens args-namn är lika med SOME_NAME
JsonValue:SOME_NAME JSON args-namn för begärandetext är lika med SOME_NAME

Undantag för JSON-begärandeorgan

Från DRS version 2.0 inspekteras JSON-begärandeorganen av WAF. Tänk till exempel på den här JSON-begärandetexten:

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

Begäran innehåller en SQL-kommentarsteckensekvens som WAF identifierar som en potentiell SQL-inmatningsattack.

Om du anser att begäran är legitim kan du skapa ett undantag med en matchningsvariabel för Request body JSON args name, en operator för Equalsoch en väljare för posts.comment.

Exkludera andra begärandeattribut

Om waf-loggposten visar ett matchVariableName värde som inte finns i föregående tabell kan du inte skapa ett undantag. Du kan till exempel för närvarande inte skapa undantag för cookienamn, rubriknamn, POST-parameternamn eller frågeparameternamn.

Överväg i stället att vidta någon av följande åtgärder:

  • Inaktivera de regler som ger falska positiva identifieringar.
  • Skapa en anpassad regel som uttryckligen tillåter dessa begäranden. Begäranden kringgår all WAF-inspektion.

Särskilt när matchVariableName värdet är CookieName, HeaderName, PostParamNameeller QueryParamName, betyder det att namnet på fältet i stället för dess värde har utlöst regeln. Regelundantag har för närvarande inget stöd för dessa matchVariableName värden.

Nästa steg