Anpassade regler för Azure Web Application Firewall på Azure Front Door

Med Azure Web Application Firewall i Azure Front Door kan du styra åtkomsten till dina webbprogram baserat på de villkor du definierar. En anpassad waf-regel (web application firewall) består av ett prioritetsnummer, regeltyp, matchningsvillkor och en åtgärd.

Det finns två typer av anpassade regler: matcha regler och regler för hastighetsbegränsning. En matchningsregel styr åtkomsten baserat på en uppsättning matchande villkor. En regel för hastighetsbegränsning styr åtkomsten baserat på matchande villkor och priserna för inkommande begäranden. Du kan inaktivera en anpassad regel för att förhindra att den utvärderas men ändå behålla konfigurationen.

Mer information om hastighetsbegränsning finns i Vad är hastighetsbegränsning för Azure Front Door?.

Prioritet, åtgärdstyper och matchningsvillkor

Du kan styra åtkomsten med en anpassad WAF-regel som definierar ett prioritetsnummer, en regeltyp, en matris med matchningsvillkor och en åtgärd.

  • Prioritet

    Ett unikt heltal som beskriver ordningen för utvärdering av WAF-regler. Regler med värden med lägre prioritet utvärderas före regler med högre värden. Regelutvärderingen stoppas för alla regelåtgärder förutom Log. Prioritetsnummer måste vara unika bland alla anpassade regler.

  • Åtgärd

    Definierar hur du dirigerar en begäran om en WAF-regel matchas. Du kan välja någon av följande åtgärder som ska tillämpas när en begäran matchar en anpassad regel.

    • Tillåt: MED WAF kan begäran bearbetas, en post loggas i WAF-loggar och avslutas.
    • Blockera: Begäran blockeras. WAF skickar ett svar till en klient utan att vidarebefordra begäran ytterligare. WAF loggar en post i WAF-loggar och -utgångar.
    • Logg: WAF loggar en post i WAF-loggar och fortsätter att utvärdera nästa regel i prioritetsordningen.
    • Omdirigering: WAF omdirigerar begäran till en angiven URI, loggar en post i WAF-loggar och avslutar.
  • Matchningsvillkor

    Definierar en matchningsvariabel, en operator och ett matchningsvärde. Varje regel kan innehålla flera matchningsvillkor. Ett matchningsvillkor kan baseras på geo-plats, klientens IP-adresser (CIDR), storlek eller strängmatchning. Strängmatchning kan vara mot en lista med matchningsvariabler.

    • Matcha variabel

      • RequestMethod
      • QueryString
      • PostArgs
      • RequestUri
      • RequestHeader
      • RequestBody
      • Kakor
    • Operator

      • Alla: Används ofta för att definiera standardåtgärd om inga regler matchas. Alla är en matchningsoperator för alla.
      • Lika med
      • Innehåller
      • LessThan: Storleksbegränsning
      • GreaterThan: Storleksbegränsning
      • LessThanOrEqual: Storleksbegränsning
      • GreaterThanOrEqual: Storleksbegränsning
      • BeginsWith
      • EndsWith
      • Regex
    • Regex

      Stöder inte följande åtgärder:

      • Backreferences och fånga underuttryck
      • Godtyckliga kontroller med noll bredd
      • Subrutinreferenser och rekursiva mönster
      • Villkorsstyrda mönster
      • Backtracking-kontrollverb
      • \C-direktivet med en byte
      • \R newline match-direktivet
      • \K-start av matchningsåterställningsdirektivet
      • Pratbubblar och inbäddad kod
      • Atomgruppering och possessiva kvantifierare
    • Negate [valfritt]

      Du kan ange villkoret negate till sant om resultatet av ett villkor ska negeras.

    • Transformera [valfritt]

      En lista över strängar med namn på transformeringar som ska utföras innan matchningen görs. Dessa kan vara följande transformeringar:

      • Versaler
      • Gemener
      • Trimma
      • RemoveNulls
      • UrlDecode
      • UrlEncode
    • Matchningsvärde

      Värden för HTTP-begärandemetoden som stöds är:

      • GET
      • POST
      • PUT
      • HEAD
      • DELETE
      • LÅS
      • LÅSA UPP
      • PROFIL
      • ALTERNATIV
      • PROPFIND
      • PROPPATCH
      • MKCOL
      • KOPIA
      • FLYTTA
      • PATCH
      • ANSLUT

Exempel

Tänk på följande exempel.

Matcha baserat på HTTP-begäransparametrar

Anta att du behöver konfigurera en anpassad regel för att tillåta begäranden som matchar följande två villkor:

  • Huvudets Referer värde är lika med ett känt värde.
  • Frågesträngen innehåller inte ordet password.

Här är ett exempel på en JSON-beskrivning av den anpassade regeln:

{
  "name": "AllowFromTrustedSites",
  "priority": 1,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestHeader",
      "selector": "Referer",
      "operator": "Equal",
      "negateCondition": false,
      "matchValue": [
        "www.mytrustedsites.com/referpage.html"
      ]
    },
    {
      "matchVariable": "QueryString",
      "operator": "Contains",
      "matchValue": [
        "password"
      ],
      "negateCondition": true
    }
  ],
  "action": "Allow"
}

Blockera HTTP PUT-begäranden

Anta att du behöver blockera alla begäranden som använder HTTP PUT-metoden.

Här är ett exempel på en JSON-beskrivning av den anpassade regeln:

{
  "name": "BlockPUT",
  "priority": 2,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestMethod",
      "selector": null,
      "operator": "Equal",
      "negateCondition": false,
      "matchValue": [
        "PUT"
      ]
    }
  ],
  "action": "Block"
}

Storleksbegränsning

Med en Azure Front Door WAF kan du skapa anpassade regler som tillämpar en längd- eller storleksbegränsning på en del av en inkommande begäran. Den här storleksbegränsningen mäts i byte.

Anta att du behöver blockera begäranden där URL:en är längre än 100 tecken.

Här är ett exempel på en JSON-beskrivning av den anpassade regeln:

{
  "name": "URLOver100",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "GreaterThanOrEqual",
      "negateCondition": false,
      "matchValue": [
        "100"
      ]
    }
  ],
  "action": "Block"
}

Matcha baserat på begärande-URI

Anta att du måste tillåta begäranden där URI:n innehåller "inloggning".

Här är ett exempel på en JSON-beskrivning av den anpassade regeln:

{
  "name": "URIContainsLogin",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "Contains",
      "negateCondition": false,
      "matchValue": [
        "login"
      ]
    }
  ],
  "action": "Allow"
}

Kopiera och duplicera anpassade regler

Anpassade regler kan dupliceras inom en viss princip. När du duplicerar en regel måste du ange ett unikt namn för regeln och ett unikt prioritetsvärde. Dessutom kan anpassade regler kopieras från en Azure Front Door WAF-princip till en annan så länge principerna finns i samma prenumeration. När du kopierar en regel från en princip till en annan måste du välja den Azure Front Door WAF-princip som du vill kopiera regeln till. När du har valt WAF-principen måste du ge regeln ett unikt namn och tilldela en prioritetsrankning.

Nästa steg