Az Azure Web Application Firewall hangolása az Azure Front Doorhoz

A Microsoft által felügyelt alapértelmezett szabálykészlet az OWASP alapvető szabálykészleten alapul, és tartalmazza a Microsoft Threat Intelligence gyűjtési szabályait.

Gyakran várható, hogy a webalkalmazási tűzfal (WAF) szabályait a WAF-t használó alkalmazás vagy szervezet igényeinek megfelelően kell hangolni. A szervezetek általában az alábbi műveletek egyikével érik el a hangolást:

  • Szabálykizárások meghatározása.
  • Egyéni szabályok létrehozása.
  • Olyan szabályok letiltása, amelyek problémákat vagy hamis pozitívumokat okozhatnak.

Ez a cikk azt ismerteti, hogy mit tehet, ha a WAF-on áthaladó kérések le vannak tiltva.

Megjegyzés:

A Microsoft által felügyelt szabálykészlet nem érhető el az Azure Front Door Standard termékváltozathoz. A különböző rétegbeli termékváltozatokról további információt a rétegek közötti szolgáltatások összehasonlítása című témakörben talál.

Olvassa el az Azure Front Door WAF áttekintését és az Azure Front Door-dokumentumok WAF-szabályzatát . Emellett engedélyezze a WAF monitorozását és naplózását. Ezek a cikkek ismertetik a WAF működését, a WAF-szabálykészletek működését és a WAF-naplók elérését.

WAF-naplók ismertetése

A WAF-naplók célja, hogy megjelenítse a WAF által egyeztetett vagy letiltott kéréseket. Ez az összes kiértékelt kérelem gyűjteménye, amely megfeleltetve vagy letiltva van. Ha azt tapasztalja, hogy a WAF blokkolja a kérést, hogy ne legyen (hamis pozitív), akkor tehet néhány dolgot.

Először szűkítse le, és keresse meg az adott kérést. Egyéni válaszüzenetet konfigurálhat úgy, hogy a trackingReference mező könnyen azonosíthassa az eseményt, és napló lekérdezést hajthat végre az adott értéken. Tekintse át a naplókat, és keresse meg a kérés adott URI-ját, időbélyegét vagy ügyfél IP-címét. Ha megtalálta a kapcsolódó naplóbejegyzéseket, hamis pozitívumokat alkalmazhat.

Tegyük fel például, hogy rendelkezik a WAF-on áthaladni kívánt sztringet 1=1 tartalmazó jogszerű forgalommal. Így néz ki a kérés:

POST http://afdwafdemosite.azurefd.net/api/Feedbacks HTTP/1.1
Host: afdwafdemosite.azurefd.net
Content-Type: application/x-www-form-urlencoded
Content-Length: 55

UserId=20&captchaId=7&captchaId=15&comment="1=1"&rating=3

Ha megpróbálja a kérést, a WAF letiltja a sztringet 1=1 tartalmazó forgalmat bármely paraméterben vagy mezőben. Ez a sztring gyakran SQL-injektálási támadáshoz van társítva. Áttekintheti a naplókat, és megtekintheti a kérés időbélyegét, valamint a letiltott vagy egyeztetett szabályokat.

Az alábbi példa egy szabályegyeztetés alapján létrehozott naplóbejegyzést mutat be. Az alábbi Log Analytics-lekérdezéssel megkeresheti az elmúlt 24 órában letiltott kérelmeket.

AzureDiagnostics
| where Category == 'FrontDoorWebApplicationFirewallLog'
| where TimeGenerated > ago(1d)
| where action_s == 'Block'
AzureDiagnostics
| where Category == 'FrontdoorWebApplicationFirewallLog'
| where TimeGenerated > ago(1d)
| where action_s == 'Block'

requestUri A mezőben láthatja, hogy a kérés kifejezetten erre /api/Feedbacks/ irányult. Tovább haladva keresse meg a szabályazonosítót 942110 a ruleName mezőben. A szabályazonosító ismeretében megnyithatja az OWASP ModSecurity Core Rule Set hivatalos adattárát, és a szabályazonosító alapján kereshet, hogy áttekintse annak kódját, és pontosan megértse, hogy ez a szabály pontosan mire illik.

Ezután a mező ellenőrzésével láthatja, hogy ez a action szabály úgy van beállítva, hogy az egyeztetéskor letiltsa a kérelmeket. Ellenőrizheti, hogy a kérést a WAF letiltotta-e, mert a policyMode beállítás értéke prevention.

Most ellenőrizze a mezőben szereplő details információkat. Ebben a mezőben láthatja az adatokat és az matchVariableNamematchVariableValue információkat. Ez a szabály azért lett aktiválva, mert valaki beírta 1=1 a comment webalkalmazás mezőjét.

{
    "time": "2020-09-24T16:43:04.5422943Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.CDN/PROFILES/AFDWAFDEMOSITE",
    "category": "FrontDoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Cdn/Profiles/WebApplicationFirewallLog/Write",
    "properties": {
        "clientIP": "1.1.1.1",
        "clientPort": "53566",
        "socketIP": "1.1.1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "ruleName": "DefaultRuleSet-1.0-SQLI-942110",
        "policy": "AFDWAFDemoPolicy",
        "action": "Block",
        "host": "afdwafdemosite.azurefd.net",
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "policyMode": "prevention",
        "details": {
            "matches": [
                {
                    "matchVariableName": "PostParamValue:comment",
                    "matchVariableValue": "\"1=1\""
                }
            ],
            "msg": "SQL Injection Attack: Common Injection Testing Detected",
            "data": "Matched Data: \"1=1\" found within PostParamValue:comment: \"1=1\""
        }
    }
}
{
    "time": "2020-09-24T16:43:04.5422943Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.NETWORK/FRONTDOORS/AFDWAFDEMOSITE",
    "category": "FrontdoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Network/FrontDoor/WebApplicationFirewallLog/Write",
    "properties": {
        "clientIP": "1.1.1.1",
        "clientPort": "53566",
        "socketIP": "1.1.1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "ruleName": "DefaultRuleSet-1.0-SQLI-942110",
        "policy": "AFDWAFDemoPolicy",
        "action": "Block",
        "host": "afdwafdemosite.azurefd.net",
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "policyMode": "prevention",
        "details": {
            "matches": [
                {
                    "matchVariableName": "PostParamValue:comment",
                    "matchVariableValue": "\"1=1\""
                }
            ],
            "msg": "SQL Injection Attack: Common Injection Testing Detected",
            "data": "Matched Data: \"1=1\" found within PostParamValue:comment: \"1=1\""
        }
    }
}

A hozzáférési naplók ellenőrzésének is van értéke, hogy bővítse tudását egy adott WAF-eseményről. Ezután tekintse át az előző eseményre adott válaszként létrehozott naplót.

Láthatja, hogy ezek a naplók összefüggnek, mert az trackingReference érték ugyanaz. Az általános megállapítást nyújtó mezők között, például userAgent ésclientIP, figyelje meg a mezőket és httpStatusDetails a httpStatusCode mezőket. Itt láthatja, hogy az ügyfél HTTP 403-választ kapott, amely megerősíti, hogy a kérést elutasították és letiltották.

{
    "time": "2020-09-24T16:43:04.5430764Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.CDN/PROFILES/AFDWAFDEMOSITE",
    "category": "FrontDoorAccessLog",
    "operationName": "Microsoft.Cdn/Profiles/AccessLog/Write",
    "properties": {
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "httpMethod": "POST",
        "httpVersion": "1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "requestBytes": "2160",
        "responseBytes": "324",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36",
        "clientIp": "1.1.1.1",
        "socketIp": "1.1.1.1",
        "clientPort": "53566",
        "timeToFirstByte": "0.01",
        "timeTaken": "0.011",
        "securityProtocol": "",
        "routingRuleName": "DemoBERoutingRule",
        "rulesEngineMatchNames": [],
        "backendHostname": "13.88.65.130:3000",
        "isReceivedFromClient": true,
        "httpStatusCode": "403",
        "httpStatusDetails": "403",
        "pop": "WST",
        "cacheStatus": "CONFIG_NOCACHE"
    }
}
{
    "time": "2020-09-24T16:43:04.5430764Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.NETWORK/FRONTDOORS/AFDWAFDEMOSITE",
    "category": "FrontdoorAccessLog",
    "operationName": "Microsoft.Network/FrontDoor/AccessLog/Write",
    "properties": {
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "httpMethod": "POST",
        "httpVersion": "1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "requestBytes": "2160",
        "responseBytes": "324",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36",
        "clientIp": "1.1.1.1",
        "socketIp": "1.1.1.1",
        "clientPort": "53566",
        "timeToFirstByte": "0.01",
        "timeTaken": "0.011",
        "securityProtocol": "",
        "routingRuleName": "DemoBERoutingRule",
        "rulesEngineMatchNames": [],
        "backendHostname": "13.88.65.130:3000",
        "isReceivedFromClient": true,
        "httpStatusCode": "403",
        "httpStatusDetails": "403",
        "pop": "WST",
        "cacheStatus": "CONFIG_NOCACHE"
    }
}

Hamis pozitív értékek feloldása

Ahhoz, hogy megalapozott döntést hozzon a hamis pozitív kezelésről, fontos megismerkednie az alkalmazás által használt technológiákkal. Tegyük fel például, hogy nincs SQL Server a technológiai veremben, és hamis pozitívumokat kap ezekhez a szabályokhoz. A szabályok letiltása nem feltétlenül gyengíti a biztonságot.

Ezzel az információval és a példában szereplő sztringgel egyező 1=1 942110 szabály ismeretében néhány dolgot meg is tehet, hogy megakadályozza ezt a jogos kérést:

Tipp.

Ha olyan megközelítést választ, amely lehetővé teszi a waf-on keresztüli jogos kérelmeket, próbálja meg a lehető legtöbbre szűkíteni. Jobb például egy kizárási listát használni, mint egy szabály teljes letiltását.

Kizárási listák használata

A kizárási lista használatának egyik előnye, hogy csak a kizárni kívánt egyezésváltozót nem ellenőrzi a rendszer a továbbiakban az adott kérelemben. Ez azt jelzi, hogy adott kérésfejlécek, cookie-kérések, lekérdezési sztringargumentumok vagy egy bizonyos feltétel teljesülése esetén kizárandó kérelemtörzs-bejegyzés argumentumai közül választhat, nem pedig kizárhatja a teljes kérést a vizsgálatból. A kérelem egyéb nem meghatározott változóit a rendszer normál módon vizsgálja meg.

A kizárások globális beállítások. A konfigurált kizárás a WAF-on áthaladó összes forgalomra vonatkozik, nem csak egy adott webalkalmazásra vagy URI-ra. Ez például aggodalomra ad okot, ha 1=1 egy adott webalkalmazás törzsében érvényes kérésről van szó, de az ugyanazon WAF-szabályzat hatálya alá tartozó más felhasználók esetében nem.

Ha érdemes különböző kizárási listákat használni a különböző alkalmazásokhoz, érdemes lehet különböző WAF-szabályzatokat használni az egyes alkalmazásokhoz, és alkalmazni őket az egyes alkalmazások előtérrendszerére.

Ha kizárási listákat konfigurál a felügyelt szabályokhoz, a következő lehetőségek közül választhat:

  • A szabálykészleten belüli összes szabály.
  • Egy szabálycsoport összes szabálya.
  • Egy egyéni szabály.

A kizárási listát a PowerShell, az Azure CLI, a REST API, a Bicep, az Azure Resource Manager-sablonok vagy az Azure Portal használatával konfigurálhatja.

  • Kizárások szabályszinten: A kizárások szabályszinten történő alkalmazása azt jelenti, hogy a megadott kizárások nem csak az adott szabállyal lesznek elemezve. A szabálykészlet többi szabálya továbbra is elemzi. Ez a kizárások legrészletesebb szintje. Segítségével finomhangolhatja a felügyelt szabálykészletet a WAF-naplókban az esemény hibaelhárítása során talált információk alapján.
  • Kizárások egy szabálycsoport szintjén: A kizárások szabálycsoportszinten való alkalmazása azt jelenti, hogy a megadott kizárások nem lesznek elemezve az adott szabálytípusokkal szemben. Ha például kizárt szabálycsoportként választja ki az SQLI-t , az azt jelzi, hogy a megadott kéréskizárásokat az SQLI-specifikus szabályok nem fogják vizsgálni. A rendszer továbbra is ellenőrzi más csoportok( például PHP, RFI vagy XSS) szabályait. Ez a kizárási típus akkor lehet hasznos, ha biztos benne, hogy az alkalmazás nem érzékeny bizonyos típusú támadásokra. Például egy olyan alkalmazás, amely nem rendelkezik SQL-adatbázissal, kizárhatja az összes SQLI-szabályt anélkül, hogy az hátrányosan érintené a biztonsági szintjét.
  • Kizárások egy szabálykészlet szintjén: A szabálykészlet szintjén a kizárások alkalmazása azt jelenti, hogy a megadott kizárások nem lesznek elemezve az adott szabálykészletben elérhető biztonsági szabályokkal szemben. Ez a kizárás átfogó, ezért gondosan használja.

Ebben a példában a kizárást a legrészletesebb szinten hajtja végre úgy, hogy egyetlen szabályra alkalmaz egy kizárást. Ki szeretné zárni a Kérelem törzse nevű egyezés változót , amely az args nevet tartalmazza comment. Az egyező változó részletei a tűzfalnaplóban láthatók: "matchVariableName": "PostParamValue:comment". Az attribútum a következő comment: . Ezt az attribútumnevet más módokon is megtalálhatja. További információ: Kérelemattribútumnevek keresése.

Screenshot that shows exclusion rules.

Screenshot that shows rule exclusion for a specific rule.

Időnként előfordul, hogy bizonyos paraméterek nem intuitív módon kerülnek át a WAF-ba. Egy jogkivonatot például akkor ad át a rendszer, ha a Microsoft Entra ID azonosítójával hitelesíti magát. A jogkivonat __RequestVerificationToken általában kérési cookie-ként lesz átadva.

Bizonyos esetekben, amikor a cookie-k le vannak tiltva, ezt a jogkivonatot a rendszer kérés utáni argumentumként is átadja. Ezért a Microsoft Entra-jogkivonat hamis pozitívumainak kezeléséhez meg kell győződnie arról, hogy __RequestVerificationToken a rendszer felveszi a kizárási listára mind RequestCookieNamesRequestBodyPostArgsNamesa .

A mezőnév (választó) kizárásai azt jelentik, hogy az értéket a WAF már nem értékeli ki. Maga a mezőnév továbbra is kiértékelésre kerül, és ritkán egy WAF-szabálynak felel meg, és elindít egy műveletet.

Screenshot that shows rule exclusion for a rule set.

WAF-műveletek módosítása

A WAF-szabályok viselkedésének kezelésére egy másik módszer az, ha kiválasztja azt a műveletet, amelyet akkor hajt végre, amikor egy kérelem megfelel egy szabály feltételeinek. Az elérhető műveletek az Engedélyezés, a Letiltás, a Napló és az Átirányítás.

Ebben a példában az alapértelmezett Műveletblokk a 942110 szabály naplóműveletére módosult. Ez a művelet azt eredményezi, hogy a WAF naplózza a kérést, és továbbra is kiértékeli ugyanazt a kérést a fennmaradó alacsonyabb prioritású szabályok alapján.

Screenshot that shows WAF actions.

Miután végrehajtotta ugyanezt a kérést, visszatekinthet a naplókra, és láthatja, hogy ez a kérés megegyezett a 942110-s szabályazonosítóval. A action_s mező most a Naplótjelöli a Blokk helyett. A napló lekérdezés ezután ki lett bontva, hogy tartalmazza az információkat, trackingReference_s hogy lássa, mi történt még ezzel a kéréssel.

Screenshot that shows a log showing multiple rule matches.

Most egy másik SQLI-szabályegyezés jelenik meg, amely ezredmásodpercben fordul elő a 942110-s szabály feldolgozása után. Ugyanez a kérés megfelelt a 942310 szabályazonosítónak, és ezúttal az alapértelmezett műveletblokk aktiválódott.

A naplóművelet WAF-finomhangolás vagy hibaelhárítás során történő használatának másik előnye, hogy megállapíthatja, hogy egy adott szabálycsoporton belül több szabály egyezik-e egymással, és blokkolja-e az adott kérést. Ezután létrehozhatja a kizárásokat a megfelelő szinten, azaz a szabály vagy a szabálycsoport szintjén.

Egyéni szabályok használata

Miután azonosította, hogy mi okozza a WAF-szabályegyezést, egyéni szabályokkal módosíthatja, hogy a WAF hogyan reagál az eseményre. Az egyéni szabályok feldolgozása a felügyelt szabályok előtt történik. Több feltételt is tartalmazhatnak, és a műveletük lehet Engedélyezés, Megtagadás, Napló vagy Átirányítás.

Figyelmeztetés:

Ha egy kérelem megfelel egy egyéni szabálynak, a WAF-motor leállítja a kérés feldolgozását. A felügyelt szabályok nem lesznek feldolgozva ehhez a kéréshez, és más, alacsonyabb prioritású egyéni szabályok sem.

Az alábbi példa egy két feltételt tartalmazó egyéni szabályt mutat be. Az első feltétel a kérelem törzsében keresi az comment értéket. A második feltétel a /api/Feedbacks/ kérelem URI-jának értékét keresi.

Egyéni szabály használatával ön lehet a legrészletesebb, így finomhangolhatja a WAF-szabályokat, és kezelheti a hamis pozitív értékeket. Ebben az esetben nem csak a comment kérelem törzsértéke alapján hajt végre műveletet, amely több webhelyen vagy alkalmazásban is létezhet ugyanazon WAF-szabályzat alapján.

Ha egy másik feltételt is felvesz egy adott kérelem URI-jára /api/Feedbacks/, győződjön meg arról, hogy ez az egyéni szabály valóban érvényes erre a explicit használati esetre, amelyet megvizsgált. Ily módon ugyanazt a támadást, ha különböző körülmények között hajtják végre, a WAF-motor továbbra is megvizsgálja és megakadályozza.

Screenshot that shows a log.

A napló felfedezésekor láthatja, hogy a ruleName_s mező tartalmazza az egyéni szabálynak redirectcommentadott nevet. action_s A mezőben láthatja, hogy az átirányítási művelet erre az eseményre történt. details_matches_s A mezőben láthatja, hogy mindkét feltétel megfelelt-e a feltételeknek.

Szabályok letiltása

Egy másik módja annak, hogy megkerülje a hamis pozitív, hogy tiltsa le a szabályt, amely megfelelt a bemenet a WAF úgy gondolta, hogy rosszindulatú. Mivel elemezte a WAF-naplókat, és a szabályt a 942110-esre szűkítette, letilthatja az Azure Portalon. További információ: Azure Web Application Firewall-szabályok testreszabása az Azure Portal használatával.

A szabály letiltása akkor előnyös, ha biztos abban, hogy az adott feltételnek megfelelő összes kérés jogos kérés, vagy ha biztos abban, hogy a szabály nem vonatkozik a környezetére (például letiltja az SQL-injektálási szabályt, mert nem SQL-háttérrendszerrel rendelkezik).

A szabály letiltása egy globális beállítás, amely a WAF-szabályzathoz társított összes előtér-gazdagépre vonatkozik. Ha letilt egy szabályt, előfordulhat, hogy a WAF-szabályzathoz társított egyéb előtér-gazdagépek biztonsági réseit védelem vagy észlelés nélkül hagyja elérhetővé.

Ha az Azure PowerShell használatával szeretne letiltani egy felügyelt szabályt, tekintse meg az objektum dokumentációját PSAzureManagedRuleOverride . Ha az Azure CLI-t szeretné használni, tekintse meg a dokumentációt az network front-door waf-policy managed-rules override .

Screenshot that shows WAF rules.

Tipp.

Dokumentálja a WAF-szabályzat módosításait. Adjon meg példakéréseket a hamis pozitív észlelés szemléltetésére. Magyarázza el, miért adott hozzá egyéni szabályt, tiltott le egy szabályt vagy szabálykészletet, vagy adott hozzá kivételt. Ha a jövőben újratervezi az alkalmazást, előfordulhat, hogy ellenőriznie kell, hogy a módosítások érvényesek-e. Vagy lehet, hogy auditálják, vagy meg kell indokolnia, hogy miért konfigurálta újra a WAF-szabályzatot az alapértelmezett beállításokból.

Kérelemmezők keresése

A Fiddlerhez hasonló böngészőproxyval megvizsgálhatja az egyes kéréseket, és meghatározhatja a weblap adott mezőit. Ez a technika akkor hasznos, ha bizonyos mezőket ki kell zárnia az ellenőrzésből a WAF-ben található kizárási listák használatával.

Kérelemattribútumok nevének megkeresése

Ebben a példában a karakterláncot beírt mező 1=1 neve comment. Ezeket az adatokat egy POST-kérés törzsében adták át.

Screenshot that shows the body of a Fiddler request.

Ezt a mezőt kizárhatja. A kizárási listákról további információt a webalkalmazási tűzfal kizárási listáiban talál. Ebben az esetben az alábbi kizárás konfigurálásával zárhatja ki a kiértékelést:

Screenshot that shows an exclusion rule.

A tűzfalnaplókat is megvizsgálva lekérheti az információkat, hogy lássa, mit kell hozzáadnia a kizárási listához. A naplózás engedélyezéséhez tekintse meg a metrikák és naplók monitorozását az Azure Front Doorban.

Vizsgálja meg a fájlban lévő PT1H.json tűzfalnaplót arra az órára, amikor a vizsgálandó kérés megtörtént. A PT1H.json fájlok a tárfiók tárolóiban érhetők el, ahol a diagnosztikai naplókat és a FrontDoorWebApplicationFirewallLogFrontDoorAccessLog diagnosztikai naplókat tárolják.

Vizsgálja meg a fájlban lévő PT1H.json tűzfalnaplót arra az órára, amikor a vizsgálandó kérés megtörtént. A PT1H.json fájlok a tárfiók tárolóiban érhetők el, ahol a diagnosztikai naplókat és a FrontdoorWebApplicationFirewallLogFrontdoorAccessLog diagnosztikai naplókat tárolják.

Ebben a példában láthatja azt a szabályt, amely letiltotta a kérést (ugyanazzal a tranzakcióhivatkozással), és amely egyszerre történt.

{
    "time": "2020-09-24T16:43:04.5422943Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.CDN/PROFILES/AFDWAFDEMOSITE",
    "category": "FrontDoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Cdn/Profiles/WebApplicationFirewallLog/Write",
    "properties": {
        "clientIP": "1.1.1.1",
        "clientPort": "53566",
        "socketIP": "1.1.1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "ruleName": "DefaultRuleSet-1.0-SQLI-942110",
        "policy": "AFDWAFDemoPolicy",
        "action": "Block",
        "host": "afdwafdemosite.azurefd.net",
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "policyMode": "prevention",
        "details": {
            "matches": [
                {
                    "matchVariableName": "PostParamValue:comment",
                    "matchVariableValue": "\"1=1\""
                }
            ],
            "msg": "SQL Injection Attack: Common Injection Testing Detected",
            "data": "Matched Data: \"1=1\" found within PostParamValue:comment: \"1=1\""
        }
    }
}
{
    "time": "2020-09-24T16:43:04.5422943Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.NETWORK/FRONTDOORS/AFDWAFDEMOSITE",
    "category": "FrontdoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Network/FrontDoor/WebApplicationFirewallLog/Write",
    "properties": {
        "clientIP": "1.1.1.1",
        "clientPort": "53566",
        "socketIP": "1.1.1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "ruleName": "DefaultRuleSet-1.0-SQLI-942110",
        "policy": "AFDWAFDemoPolicy",
        "action": "Block",
        "host": "afdwafdemosite.azurefd.net",
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "policyMode": "prevention",
        "details": {
            "matches": [
                {
                    "matchVariableName": "PostParamValue:comment",
                    "matchVariableValue": "\"1=1\""
                }
            ],
            "msg": "SQL Injection Attack: Common Injection Testing Detected",
            "data": "Matched Data: \"1=1\" found within PostParamValue:comment: \"1=1\""
        }
    }
}

Az Azure által felügyelt szabálykészletek működésének ismeretében tudja, hogy a action: Block tulajdonsággal rendelkező szabály blokkolva van a kérelem törzsében egyeztetett adatok alapján. (További információ: Azure Web Application Firewall az Azure Front Doorban.) A részletekben láthatja, hogy megfelelt egy mintának (1=1) és a mező neve comment. Kövesse ugyanazokat az előző lépéseket, hogy kizárja a kérelem törzsét, amely az args nevet tartalmazza comment.

Kérelemfejlécek nevének megkeresése

A Fiddler egy hasznos eszköz a kérésfejlécek nevének megkereséséhez. Az alábbi képernyőképen a GET kérés fejlécei láthatók, amelyek tartalmazzák és User-Agenttartalmazzák Content-Type azokat. A kérelemfejlécekkel kizárásokat és egyéni szabályokat is létrehozhat a WAF-ben.

Screenshot that shows the header of a Fiddler request.

A kérés- és válaszfejlécek megtekintésének másik módja, ha a böngésző fejlesztői eszközein, például a Microsoft Edge-ben vagy a Chrome-ban tekint meg. Válassza az F12 lehetőséget, vagy kattintson a jobb gombbal a Fejlesztői eszközök vizsgálata elemre>. Válassza a Hálózat lapot. Töltsön be egy weblapot, és válassza ki a vizsgálandó kérést.

Screenshot that shows a Network inspector request.

Ha a kérelem cookie-kat tartalmaz, a Cookie-k fülre kattintva megtekintheti őket a Fiddlerben. A cookie-információk felhasználhatók kizárások vagy egyéni szabályok létrehozására is a WAF-ban.

Anomáliapontozási szabály

Ha a WAF finomhangolása során a 949110-es szabályazonosító jelenik meg, annak jelenléte azt jelzi, hogy a kérést az anomáliadetektálási folyamat blokkolta.

Tekintse át ugyanahhoz a kéréshez tartozó többi WAF-naplóbejegyzést, ha ugyanazzal a nyomkövetési hivatkozással keresi meg a naplóbejegyzéseket. Tekintse meg az aktivált szabályokat. Az egyes szabályok finomhangolásához kövesse az ebben a cikkben található útmutatást.

Következő lépések