Sdílet prostřednictvím


Vlastní pravidla pro Azure Web Application Firewall ve službě Azure Front Door

Azure Web Application Firewall ve službě Azure Front Door umožňuje řídit přístup k webovým aplikacím na základě vámi definovaných podmínek. Vlastní pravidlo firewallu webových aplikací (WAF) se skládá z čísla priority, typu pravidla, podmínek shody a akce.

Existují dva typy vlastních pravidel: pravidla pro shodu a pravidla omezení rychlosti. Pravidlo shody řídí přístup na základě souboru shodných podmínek. Pravidlo omezení rychlosti řídí přístup na základě odpovídajících podmínek a rychlosti příchozích požadavků. Vlastní pravidlo můžete zakázat, abyste zabránili jeho vyhodnocení, ale přesto zachovali konfiguraci.

Další informace o omezování rychlosti najdete v tématu Co je omezování rychlosti pro Azure Front Door?.

Priorita, typy akcí a podmínky shody

Přístup můžete řídit pomocí vlastního pravidla WAF, které definuje číslo priority, typ pravidla, pole podmínek shody a akci.

  • Priorita

    Jedinečné celé číslo, které popisuje pořadí vyhodnocení pravidel WAF. Pravidla s hodnotami s nižší prioritou jsou vyhodnocována před pravidly s vyššími hodnotami. Vyhodnocení pravidla se zastaví u všech akcí pravidel s výjimkou Log. Čísla priorit musí být jedinečná u všech vlastních pravidel.

  • Akce

    Definuje, jak směrovat požadavek, pokud je splněno pravidlo WAF. Můžete zvolit jednu z následujících akcí, která se použije, když požadavek odpovídá vlastnímu pravidlu.

    • Povolit: WAF umožní požadavku, aby byl zpracován, zaznamená záznam do protokolů WAF a poté končí.
    • Blokovat: Požadavek je blokován. WAF odešle odpověď klientovi bez dalšího předávání požadavku. WAF zaznamená záznam do protokolů WAF a ukončí činnost.
    • Protokol: WAF zaznamená záznam do protokolů WAF a pokračuje ve vyhodnocování dalšího pravidla v pořadí priorit.
    • Přesměrování: WAF přesměruje požadavek na zadaný identifikátor URI, zaznamená záznam do protokolů WAF a ukončí se.
  • Podmínka shody

    Definuje proměnnou shody, operátor a hodnotu shody. Každé pravidlo může obsahovat více podmínek pro shodu. Podmínka shody může být založena na geografickém umístění, IP adresách klientů (CIDR), velikosti nebo shodě řetězců. Shodu řetězců lze porovnat se seznamem proměnných pro shodu.

    • Shodovat proměnnou

      • MetodaŽádosti
      • Řetězec dotazu
      • PostArgs
      • Požadavek URI
      • Záhlaví žádosti
      • Tělo žádosti
      • Soubory cookie
    • Operátor

      • Libovolný: Často se používá k definování výchozí akce, pokud nejsou splněna žádná pravidla. Any je operátor shoda všech.
      • Rovný
      • Obsahuje
      • LessThan: Omezení velikosti
      • Větší než: Omezení velikosti
      • LessThanOrEqual: Omezení velikosti
      • GreaterThanOrEqual: Omezení velikosti
      • Začíná s
      • KoncíS
      • Regex (Regulární výraz)
    • Regulární výraz

      Nepodporuje následující operace:

      • Zpětné odkazy a zachycení dílčích výrazů
      • Libovolné kontrolní výrazy s nulovou šířkou
      • Odkazy na podprogramy a rekurzivní vzory
      • Podmíněné vzory
      • Navracení řídicích příkazů zpět
      • Jednobajtová direktiva \C
      • Příkaz pro shodu nového řádku \R
      • Direktiva \K pro začátek resetování zápasu
      • Popisky a vložený kód
      • Atomické seskupování a přivlastňovací kvantifikátory
    • Negovat [nepovinně]

      Podmínku negate můžete nastavit na true , pokud má být výsledek podmínky negován.

    • Transformovat [nepovinné]

      Seznam řetězců s názvy transformací, které je třeba provést před pokusem o shodu. Mohou to být následující transformace:

      • Velká písmena
      • Malá písmena
      • Zastřihnout
      • Odebrat hodnoty null
      • dekódování URL
      • Kódování URL
    • Hodnota shody

      Mezi podporované hodnoty metody požadavku HTTP patří:

      • získej
      • PŘÍSPĚVEK
      • VLOŽIT
      • hlava
      • VYMAZAT
      • ZAMKNOUT
      • ODEMKNOUT
      • PROFIL
      • MOŽNOSTI
      • PROPFIND
      • OPRAVA
      • MKCOL
      • KOPÍROVAT
      • PŘESUŇ
      • ZÁPLATA
      • SPOJIT

Příklady

Podívejte se na následující příklady.

Shoda na základě parametrů požadavku HTTP

Předpokládejme, že potřebujete nakonfigurovat vlastní pravidlo, které povolí požadavky, které splňují následující dvě podmínky:

  • Hodnota Referer hlavičky se rovná známé hodnotě.
  • Řetězec dotazu neobsahuje slovo password.

Zde je příklad popisu vlastního pravidla ve formátu JSON:

{
  "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"
}

Blokování požadavků HTTP PUT

Předpokládejme, že potřebujete zablokovat jakýkoli požadavek, který používá metodu HTTP PUT.

Zde je příklad popisu vlastního pravidla ve formátu JSON:

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

Omezení velikosti

Azure Front Door WAF umožňuje vytvářet vlastní pravidla, která aplikují omezení délky nebo velikosti na část příchozího požadavku. Toto omezení velikosti se měří v bajtech.

Předpokládejme, že potřebujete blokovat požadavky, jejichž adresa URL je delší než 100 znaků.

Zde je příklad popisu vlastního pravidla ve formátu JSON:

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

Shoda na základě URI žádosti

Předpokládejme, že potřebujete povolit požadavky, u kterých identifikátor URI obsahuje "login".

Zde je příklad popisu vlastního pravidla ve formátu JSON:

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

Kopírování a duplikování vlastních pravidel

Vlastní pravidla se dají duplikovat v rámci dané zásady. Při duplikování pravidla musíte zadat jedinečný název pravidla a jedinečnou hodnotu priority. Kromě toho je možné vlastní pravidla zkopírovat z jedné zásady WAF služby Azure Front Door do druhé, pokud jsou obě zásady ve stejném předplatném. Při kopírování pravidla z jedné zásady do druhé musíte vybrat zásadu WAF služby Azure Front Door, do které chcete pravidlo zkopírovat. Jakmile vyberete zásadu WAF, musíte pravidlu dát jedinečný název a přiřadit pořadí priority.

Další kroky