A Web Application Firewall kizárási listái

A Azure-alkalmazás Átjáró webalkalmazási tűzfala (WAF) védelmet biztosít a webalkalmazások számára. Ez a cikk a WAF-kizárási listák konfigurációját ismerteti. Ezek a beállítások az Application Gatewayhez társított WAF-házirendben találhatók. A WAF-szabályzatokkal kapcsolatos további információkért tekintse meg az Azure Web Application Firewallt az Azure-alkalmazás Gatewayen, és hozzon létre webalkalmazási tűzfalszabályzatokat az Application Gatewayhez.

Előfordulhat, hogy a WAF letilt egy kérelmet, amelyet engedélyezni szeretne az alkalmazás számára. A WAF-kizárási listák lehetővé teszik, hogy kihagyjon bizonyos kérésattribútumokat egy WAF-értékelésből. A többi kérelem kiértékelése a szokásos módon történik.

Az Active Directory például a hitelesítéshez használt jogkivonatokat szúrja be. Ha a kérelemfejlécben használják, ezek a jogkivonatok speciális karaktereket tartalmazhatnak, amelyek hamis pozitív észlelést válthatnak ki a WAF-szabályokból. Ha hozzáadja a fejlécet egy kizárási listához, úgy konfigurálhatja a WAF-ot, hogy figyelmen kívül hagyja a fejlécet, de a WAF továbbra is kiértékeli a kérés többi részét.

A kizárásokat úgy konfigurálhatja, hogy adott WAF-szabályok kiértékelésekor alkalmazhatók legyenek, vagy globálisan alkalmazzanak az összes WAF-szabály értékelésére. A kizárási szabályok a teljes webalkalmazásra vonatkoznak.

A kizárni kívánt kérelemattribútumok azonosítása

WAF-kizárás konfigurálásakor meg kell adnia annak a kérésnek az attribútumait, amelyeket ki kell zárni a WAF-kiértékelésből. WAF-kizárást a következő kérelemattribútumokhoz konfigurálhat:

  • Kérésfejlécek
  • Cookie-k kérése
  • A kérelemattribútum neve (args) hozzáadható kizárási elemként, például:
    • Űrlapmező neve
    • JSON-entitás
    • URL-lekérdezési sztring argek

Pontos kérésfejlécet, törzset, cookie-t vagy lekérdezési sztringattribútumot adhat meg. Vagy megadhat részleges egyezéseket is. A kizárás konfigurálásához használja a következő operátorokat:

  • Egyenlő: Ez az operátor pontosan egyezésre szolgál. Például egy bearerToken nevű fejléc kiválasztásához használja az egyenlőség operátort, a választót pedig bearerTokenként.
  • A következővel kezdődik: Ez az operátor megfelel az összes mezőnek, amely a megadott választóértékkel kezdődik.
  • Ezzel végződik: Ez az operátor megfelel az összes olyan kérelemmezőnek, amely a megadott választó értékkel végződik.
  • Tartalmazza: Ez az operátor megfelel az összes olyan kérelemmezőnek, amely a megadott választóértéket tartalmazza.
  • Bármelyikkel egyenlő: Ez az operátor az összes kérelemmezővel egyezik. * lesz a választó értéke. Ezt az operátort például akkor használhatja, ha nem ismeri egy adott egyezésváltozó pontos értékeit, de meg szeretné győződni arról, hogy a kérelemforgalom továbbra is ki lesz zárva a szabályok kiértékeléséből.

A kizárások feldolgozásakor a WAF-motor az alábbi táblázat alapján megkülönbözteti a kis- és nagybetűket. Emellett a reguláris kifejezések nem engedélyezettek, mivel a választók és az XML-kérelemtörzsek nem támogatottak.

Törzsrész kérése CRS 3.1 és korábbi CRS 3.2 és újabb verziók
Fejléc* Kis- és nagybetűk érzéketlenek Kis- és nagybetűk érzéketlenek
Cookie* Kis- és nagybetűk érzéketlenek Kis- és nagybetűk megkülönböztetése
Lekérdezési sztring* Kis- és nagybetűk érzéketlenek Kis- és nagybetűk megkülönböztetése
URL-kódolt törzs Kis- és nagybetűk érzéketlenek Kis- és nagybetűk megkülönböztetése
JSON-törzs Kis- és nagybetűk érzéketlenek Kis- és nagybetűk megkülönböztetése
XML-törzs Nem támogatott Nem támogatott
Többrészes törzs Kis- és nagybetűk érzéketlenek Kis- és nagybetűk megkülönböztetése

*Az alkalmazástól függően a fejlécek, a cookie-k és a lekérdezési argek neve és értékei megkülönböztethetők vagy érzéketlenek lehetnek.

Megjegyzés:

További információkért és hibaelhárítási segítségért tekintse meg a WAF hibaelhárítását.

Attribútumok kérése kulcsok és értékek szerint

Kizárás konfigurálásakor meg kell határoznia, hogy ki szeretné-e zárni a kulcsot vagy az értéket a WAF-értékelésből.

Tegyük fel például, hogy a kérések tartalmazzák ezt a fejlécet:

My-Header: 1=1

A fejléc (1=1) értékét a WAF támadásként észlelheti. Ha azonban tudja, hogy ez a forgatókönyv jogos értéke, konfigurálhatja a fejléc értékének kizárását. Ehhez a RequestHeaderValues egyező változót, az operátort és a választót (My-Header) kell használnia. Ez a konfiguráció leállítja a fejléc My-Headerösszes értékének kiértékelését.

Megjegyzés:

A kérelemattribútumok kulcs és értékek szerint csak a CRS 3.2-ben vagy újabb verzióban, illetve a Bot Manager 1.0-s vagy újabb verziójában érhetők el.

A kérelemattribútumok név szerint ugyanúgy működnek, mint az értékek szerinti kérelemattribútumok, és a CRS 3.1 és korábbi verziók visszamenőleges kompatibilitását biztosítják. Azt javasoljuk, hogy a kérelemattribútumokat érték szerint használja a nevek attribútumai helyett. Használja például a RequestHeaderValues értéket a RequestHeaderNames helyett.

Ezzel szemben, ha a WAF támadásként észleli a fejléc nevét (My-Header), a RequestHeaderKeys kérelemattribútum használatával konfigurálhatja a fejléckulcs kizárását. A RequestHeaderKeys attribútum csak a CRS 3.2- vagy újabb verziójában, valamint a Bot Manager 1.0-s vagy újabb verziójában érhető el.

Példák kérelemattribútumokra

Az alábbi táblázat néhány példát mutat be arra, hogyan strukturálhatja egy adott egyezésváltozó kizárását.

Kizárandó attribútum matchVariable selectorMatchOperator Példaválasztó Példa kérésre: Mi lesz kizárva?
Lekérdezési sztring RequestArgKeys Egyenlő /etc/passwd Uri: http://localhost:8080/?/etc/passwd=test /etc/passwd
Lekérdezési sztring RequestArgKeys EqualsAny N/A Uri: http://localhost:8080/?/etc/passwd=test&.htaccess=test2 /etc/passwd és .htaccess
Lekérdezési sztring RequestArgNames Egyenlő text Uri: http://localhost:8080/?text=/etc/passwd /etc/passwd
Lekérdezési sztring RequestArgNames EqualsAny N/A Uri: http://localhost:8080/?text=/etc/passwd&text2=.cshrc /etc/passwd és .cshrc
Lekérdezési sztring RequestArgValues Egyenlő text Uri: http://localhost:8080/?text=/etc/passwd /etc/passwd
Lekérdezési sztring RequestArgValues EqualsAny N/A Uri: http://localhost:8080/?text=/etc/passwd&text2=.cshrc /etc/passwd és .cshrc
Kérés törzse RequestArgKeys Contains sleep Kérelem törzse: {"sleep(5)": "test"} sleep(5)
Kérés törzse RequestArgKeys EqualsAny N/A Kérelem törzse: {".zshrc": "value", "sleep(5)":"value2"} .zshrc és sleep(5)
Kérés törzse RequestArgNames Egyenlő test Kérelem törzse: {"test": ".zshrc"} .zshrc
Kérés törzse RequestArgNames EqualsAny N/A Kérelem törzse: {"key1": ".zshrc", "key2":"sleep(5)"} .zshrc és sleep(5)
Kérés törzse RequestArgValues Egyenlő test Kérelem törzse: {"test": ".zshrc"} .zshrc
Kérés törzse RequestArgValues EqualsAny N/A Kérelem törzse: {"key1": ".zshrc", "key2":"sleep(5)"} .zshrc és sleep(5)
Fejléc RequestHeaderKeys Egyenlő X-Scanner Fejléc: {"X-Scanner": "test"} X-scanner
Fejléc RequestHeaderKeys EqualsAny N/A Fejléc: {"X-Scanner": "test", "x-ratproxy-loop": "value"} X-Scanner és x-ratproxy-loop
Fejléc RequestHeaderNames Egyenlő head1 Fejléc: {"head1": "X-Scanner"} X-scanner
Fejléc RequestHeaderNames EqualsAny N/A Fejléc: {"head1": "myvar=1234", "User-Agent": "(hydra)"} myvar=1234 és (hydra)
Fejléc RequestHeaderValues Egyenlő head1 Fejléc: {"head1": "X-Scanner"} X-scanner
Fejléc RequestHeaderValues EqualsAny N/A Fejléc: {"head1": "myvar=1234", "User-Agent": "(hydra)"} myvar=1234 és (hydra)
Cookie RequestCookieKeys Contains /etc/passwd Fejléc: {"Cookie": "/etc/passwdtest=hello1"} /etc/passwdtest
Cookie RequestCookieKeys EqualsAny N/A Fejléc: {"Cookie": "/etc/passwdtest=hello1", "Cookie": ".htaccess=test1"} /etc/passwdtest és .htaccess
Cookie RequestCookieNames Egyenlő arg1 Fejléc: {"Cookie": "arg1=/etc/passwd"} /etc/passwd
Cookie RequestCookieNames EqualsAny N/A Fejléc: {"Cookie": "arg1=/etc/passwd", "Cookie": "arg1=.cshrc"} /etc/passwd és .cshrc
Cookie RequestCookieValues Egyenlő arg1 Fejléc: {"Cookie": "arg1=/etc/passwd"} /etc/passwd
Cookie RequestCookieValues EqualsAny N/A Fejléc: {"Cookie": "arg1=/etc/passwd", "Cookie": "arg1=.cshrc"} /etc/passwd és .cshrc

Megjegyzés:

Ha a selectorMatchOperator EqualsAnyhasználatával hoz létre kizárást, a kivétel létrehozásakor a háttérrendszer "*" értékre konvertálja a választómezőbe helyezett adatokat.

Kizárási hatókörök

A kizárások konfigurálhatók úgy, hogy adott WAF-szabályokra, szabálykészletekre vagy globálisan az összes szabályra vonatkozzanak.

Tipp.

Célszerű a lehető legszűkebb és legkülönlegesebbé tenni a kizárásokat, hogy a támadók véletlenül ne hagyják el a teret a rendszer kihasználásához. Ha kizárási szabályt kell hozzáadnia, ahol csak lehetséges, használjon szabályonkénti kizárásokat.

Szabályonkénti kizárások

Konfigurálhat kizárást egy adott szabályhoz, szabálycsoporthoz vagy szabálykészlethez. Meg kell adnia azt a szabályt vagy szabályokat, amelyekre a kizárás vonatkozik. Meg kell adnia azt a kérelemattribútumot is, amelyet ki kell zárni a WAF-kiértékelésből. Ha teljes szabálycsoportot szeretne kizárni, csak a ruleGroupName paramétert adja meg, a rules paraméter csak akkor hasznos, ha a kizárást egy csoport meghatározott szabályaira szeretné korlátozni.

Szabályonkénti kizárások akkor érhetők el, ha az OWASP (CRS) szabálykészlet 3.2-es vagy újabb verzióját vagy a Bot Manager 1.0-s vagy újabb verzióját használja.

Példa

Tegyük fel, hogy azt szeretné, hogy a WAF figyelmen kívül hagyja a User-Agent kérelem fejlécének értékét. A User-Agent fejléc egy jellemző sztringet tartalmaz, amely lehetővé teszi, hogy a hálózati protokoll társviszonyai azonosíthassák a kérelmező szoftverfelhasználó ügynök alkalmazástípusát, operációs rendszerét, szoftverszállítóját vagy szoftververzióját. További információ: User-Agent.

A fejléc kiértékelésének letiltásának számos oka lehet. Lehet egy sztring, amelyet a WAF észlel, és azt feltételezi, hogy rosszindulatú. Előfordulhat például, hogy a User-Agent fejlécben szerepel a klasszikus SQL-injektálási támadás x=x egy sztringben. Bizonyos esetekben ez lehet a jogszerű forgalom. Ezért előfordulhat, hogy ki kell zárnia ezt a fejlécet a WAF-kiértékelésből.

Az alábbi módszer használatával kizárhatja a fejlécet az User-Agent összes SQL-injektálási szabály kiértékeléséből:

Ha szabályonkénti kizárást szeretne konfigurálni az Azure Portal használatával, kövesse az alábbi lépéseket:

  1. Lépjen a WAF-szabályzatra, és válassza a Felügyelt szabályok lehetőséget.

  2. Válassza a Kizárások hozzáadása lehetőséget.

    Screenshot of the Azure portal that shows how to add a new per-rule exclusion for the W A F policy.

  3. Válassza ki a CRS-szabálykészletet a kizárás alkalmazásához, például OWASP_3.2.

    Screenshot of the Azure portal that shows the per-rule exclusion configuration for the W A F policy.

  4. Válassza a Szabályok hozzáadása lehetőséget, és válassza ki azokat a szabályokat, amelyeket ki szeretne használni.

  5. Konfigurálja az egyező változót, operátort és választót. Ezután válassza a Mentés lehetőséget.

Több kizárást is konfigurálhat.

A fejlécet a User-Agent 942270 szabály szerint is kizárhatja a kiértékelésből:

Kövesse az előző példában leírt lépéseket, és válassza a 942270 szabályt a 4. lépésben.

Globális kizárások

Konfigurálhat kizárást az összes WAF-szabályra.

Példa

Tegyük fel, hogy ki szeretné zárni a kérelemben az URL-címen keresztül átadott felhasználói paraméter értékét. Tegyük fel például, hogy a környezetben gyakori, hogy a user lekérdezési sztring argumentum olyan sztringet tartalmaz, amelyet a WAF rosszindulatú tartalomként tekint, ezért blokkolja azt. Kizárhatja az összes olyan lekérdezési sztring argumentumot, ahol a név a szóval userkezdődik, így a WAF nem értékeli ki a mező értékét.

Az alábbi példa bemutatja, hogyan zárhatja ki a lekérdezési sztring argumentumát a user kiértékelésből:

Ha globális kizárást szeretne konfigurálni az Azure Portal használatával, kövesse az alábbi lépéseket:

  1. Lépjen a WAF-szabályzatra, és válassza a Felügyelt szabályok lehetőséget.

  2. Válassza a Kizárások hozzáadása lehetőséget.

    Screenshot of the Azure portal that shows how to add a new global exclusion for the W A F policy.

  3. Az Érintett területen válassza a Globális

    Screenshot of the Azure portal that shows the global exclusion configuration for the W A F policy.

  4. Konfigurálja az egyező változót, operátort és választót. Ezután válassza a Mentés lehetőséget.

Több kizárást is konfigurálhat.

Ha tehát a WAF megvizsgálja az URL-címethttp://www.contoso.com/?user%3c%3e=joe, az nem értékeli ki a sztringet, de továbbra is kiértékeli a(z) %3c%3e paraméternevet.

Következő lépések