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 EqualsAny
haszná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:
Lépjen a WAF-szabályzatra, és válassza a Felügyelt szabályok lehetőséget.
Válassza a Kizárások hozzáadása lehetőséget.
Válassza ki a CRS-szabálykészletet a kizárás alkalmazásához, például OWASP_3.2.
Válassza a Szabályok hozzáadása lehetőséget, és válassza ki azokat a szabályokat, amelyeket ki szeretne használni.
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 user
kezdő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:
Lépjen a WAF-szabályzatra, és válassza a Felügyelt szabályok lehetőséget.
Válassza a Kizárások hozzáadása lehetőséget.
Az Érintett területen válassza a Globális
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
- A WAF-beállítások konfigurálása után megtudhatja, hogyan tekintheti meg a WAF-naplókat. További információ: Application Gateway-diagnosztika.
- További információ az Azure hálózati biztonságáról