Anpassade regler för Web Application Firewall v2 i Azure Application Gateway

Azure Application Gateway Web Application Firewall (WAF) v2 levereras med en förkonfigurerad, plattformshanterad regeluppsättning som ger skydd mot många olika typer av attacker. Dessa attacker omfattar skript mellan webbplatser, SQL-inmatning och andra. Om du är WAF-administratör kanske du vill skriva egna regler för att utöka crs-reglerna (Core Rule Set). Dina anpassade regler kan antingen blockera, tillåta eller logga begärd trafik baserat på matchande villkor. Om WAF-principen är inställd på identifieringsläge och en anpassad blockeringsregel utlöses loggas begäran och ingen blockerande åtgärd vidtas.

Med anpassade regler kan du skapa egna regler som utvärderas för varje begäran som skickas via WAF. Dessa regler har högre prioritet än resten av reglerna i de hanterade regeluppsättningarna. De anpassade reglerna innehåller ett regelnamn, en regelprioritet och en matris med matchande villkor. Om dessa villkor uppfylls vidtas en åtgärd (för att tillåta, blockera eller logga). Om en anpassad regel utlöses och en åtgärd för att tillåta eller blockera vidtas utvärderas inga ytterligare anpassade eller hanterade regler. Anpassade regler kan aktiveras/inaktiveras på begäran.

Du kan till exempel blockera alla begäranden från en IP-adress i intervallet 192.168.5.0/24. I den här regeln är operatorn IPMatch, matchValues är IP-adressintervallet (192.168.5.0/24) och åtgärden är att blockera trafiken. Du anger också regelns namn, prioritet och aktiverat/inaktiverat tillstånd.

Anpassade regler stöder användning av sammansatt logik för att göra mer avancerade regler som tillgodoser dina säkerhetsbehov. Du kan till exempel använda två anpassade regler för att skapa följande logik ((rule1:Condition 1 och rule1:Condition 2) eller rule2:Condition 3). Den här logiken innebär att om villkor 1 och villkor 2 uppfylls, eller om villkor 3 uppfylls, bör WAF vidta den åtgärd som anges i de anpassade reglerna.

Olika matchande villkor inom samma regel är alltid sammansatta med och. Blockera till exempel trafik från en specifik IP-adress och endast om de använder en viss webbläsare.

Om du vill använda eller mellan två olika villkor måste de två villkoren finnas i olika regler. Du kan till exempel blockera trafik från en specifik IP-adress eller blockera trafik om de använder en specifik webbläsare.

Reguljära uttryck stöds också i anpassade regler, precis som i CRS-regeluppsättningarna. Exempel finns i Exempel 3 och 5 i Skapa och använda anpassade brandväggsregler för webbprogram.

Kommentar

Det maximala antalet anpassade WAF-regler är 100. Mer information om Gränser för Application Gateway finns i Azure-prenumerations- och tjänstgränser, kvoter och begränsningar.

Varning

Eventuella omdirigeringsregler som tillämpas på programgatewaynivå kringgår ANPASSADE WAF-regler. Mer information om omdirigeringsregler finns i Översikt över omdirigering av Application Gateway.

Tillåter kontra blockering

Att tillåta och blockera trafik är enkelt med anpassade regler. Du kan till exempel blockera all trafik som kommer från ett intervall med IP-adresser. Du kan göra en annan regel för att tillåta trafik om begäran kommer från en specifik webbläsare.

Om du vill tillåta något kontrollerar du att parametern är inställd på -ActionTillåt. Om du vill blockera något kontrollerar du att parametern är inställd på -ActionBlockera.

$AllowRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example1 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Allow `
   -State Enabled

$BlockRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example2 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Block `
   -State Enabled

$BlockRule Föregående mappar till följande anpassade regel i Azure Resource Manager:

"customRules": [
      {
        "name": "blockEvilBot",
        "priority": 2,
        "ruleType": "MatchRule",
        "action": "Block",
        "state": "Enabled",
        "matchConditions": [
          {
            "matchVariables": [
              {
                "variableName": "RequestHeaders",
                "selector": "User-Agent"
              }
            ],
            "operator": "Contains",
            "negationCondition": false,
            "matchValues": [
              "evilbot"
            ],
            "transforms": [
              "Lowercase"
            ]
          }
        ]
      }
    ], 

Den här anpassade regeln innehåller ett namn, en prioritet, en åtgärd och en matris med matchande villkor som måste uppfyllas för att åtgärden ska kunna genomföras. Mer information om dessa fält finns i följande fältbeskrivningar. Exempel på anpassade regler finns i Skapa och använda anpassade brandväggsregler för webbprogram.

Fält för anpassade regler

Namn [valfritt]

Namnet på regeln. Den visas i loggarna.

Aktivera regel [valfritt]

Aktivera/inaktivera den här regeln. Anpassade regler är aktiverade som standard.

Prioritet [krävs]

  • Avgör regelns värderingsordning. Ju lägre värde, desto tidigare utvärdering av regeln. Det tillåtna intervallet är mellan 1 och 100.
  • Måste vara unikt för alla anpassade regler. En regel med prioritet 40 utvärderas före en regel med prioritet 80.

Regeltyp [krävs]

För närvarande måste vara MatchRule.

Matcha variabeln [krävs]

Måste vara en av variablerna:

  • RemoteAddr – IPv4-adress/intervall för fjärrdatoranslutningen
  • RequestMethod – HTTP-begärandemetod
  • QueryString – variabel i URI:n
  • PostArgs – Argument som skickas i POST-brödtexten. Anpassade regler som använder den här matchningsvariabeln tillämpas endast om rubriken "Innehållstyp" är inställd på "application/x-www-form-urlencoded" och "multipart/form-data". Ytterligare innehållstyp stöds application/json med CRS version 3.2 eller senare, regeluppsättning för robotskydd och anpassade regler för geo-matchning.
  • RequestUri – URI för begäran
  • RequestHeaders – Sidhuvuden för begäran
  • RequestBody – den här variabeln innehåller hela begärandetexten som helhet. Anpassade regler som använder den här matchningsvariabeln tillämpas endast om rubriken "Innehållstyp" är inställd på application/x-www-form-urlencoded medietyp. Ytterligare innehållstyper av application/soap+xml, application/xml, text/xml stöds med CRS version 3.2 eller senare, regeluppsättning för robotskydd och anpassade regler för geo-matchning.
  • RequestCookies – Cookies för begäran

Väljare [valfritt]

Beskriver fältet i samlingen matchVariable. Om till exempel matchVariable är RequestHeaders kan väljaren finnas i användaragenthuvudet .

Operator [krävs]

Måste vara någon av följande operatorer:

  • IPMatch – används endast när matchningsvariabeln är RemoteAddr och stöder endast IPv4
  • Lika – indata är samma som MatchValue
  • Any – Det bör inte ha en MatchValue. Vi rekommenderar att du matchar variabeln med en giltig väljare.
  • Innehåller
  • LessThan
  • GreaterThan
  • LessThanOrEqual
  • GreaterThanOrEqual
  • BeginsWith
  • EndsWith
  • Regex
  • Geomatchning

Negate-villkor [valfritt]

Negerar det aktuella villkoret.

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:

  • Gemener
  • Versaler
  • Trimma
  • UrlDecode
  • UrlEncode
  • RemoveNulls
  • HtmlEntityDecode

Matcha värden [krävs]

Lista över värden som ska matchas mot, som kan betraktas som OR'ed. Det kan till exempel vara IP-adresser eller andra strängar. Värdeformatet beror på den tidigare operatorn.

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

  • GET
  • HEAD
  • POST
  • ALTERNATIV
  • PUT
  • DELETE
  • PATCH

Åtgärd [krävs]

Om en anpassad regel utlöses i WAF-principidentifieringsläge loggas åtgärden alltid oavsett det åtgärdsvärde som angetts för den anpassade regeln.

  • Tillåt – auktoriserar transaktionen och hoppar över alla andra regler. Den angivna begäran läggs till i listan över tillåtna och när den har matchats stoppas ytterligare utvärdering och skickas till serverdelspoolen. Regler som finns på listan över tillåtna utvärderas inte för ytterligare anpassade regler eller hanterade regler.
  • Blockera – Blockerar eller loggar transaktionen baserat på SecDefaultAction (identifierings-/förebyggande läge).
    • Förebyggande läge – Blockerar transaktionen baserat på SecDefaultAction. Precis som åtgärden Allow stoppas utvärderingen när begäran har utvärderats och lagts till i blocklistan och begäran blockeras. Alla begäranden efter detta uppfyller samma villkor utvärderas inte och blockeras.
    • Identifieringsläge – Loggar transaktionen baserat på SecDefaultAction varefter utvärderingen har stoppats. Alla begäranden efter detta uppfyller samma villkor utvärderas inte och loggas bara.
  • Log – Låter regeln skriva till loggen, men låter resten av reglerna köras för utvärdering. De andra anpassade reglerna utvärderas i prioritetsordning följt av de hanterade reglerna.

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 Application Gateway 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 Application Gateway 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.

Geomatcha anpassade regler

Med anpassade regler kan du skapa skräddarsydda regler som passar de exakta behoven för dina program och säkerhetsprinciper. Du kan begränsa åtkomsten till dina webbprogram efter land/region. Mer information finns i Geomatch anpassade regler.

Nästa steg