Az Azure Web Application Firewall erőforrásnaplói
Naplókkal figyelheti Web Application Firewall erőforrásokat. Mentheti a teljesítményt, a hozzáférést és más adatokat, vagy felhasználhatja őket egy erőforrásból monitorozás céljából.
Megjegyzés
Javasoljuk, hogy az Azure-ral való interakcióhoz az Azure Az PowerShell-modult használja. Az első lépésekhez tekintse meg az Azure PowerShell telepítését ismertető szakaszt. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.
Diagnosztikai naplók
Az Azure-ban különböző típusú naplókat használhat az alkalmazásátjárók kezeléséhez és hibaelhárításához. Ezen naplók egy része a portálról érhető el. Minden napló kinyerhető az Azure Blob Storage-ból, és különböző eszközökben tekinthetők meg, például az Azure Monitor-naplókban, az Excelben és a Power BI-ban. A naplók különböző típusairól az alábbi listában tudhat meg többet:
- Tevékenységnapló: Az Azure-tevékenységnaplók segítségével megtekintheti az Azure-előfizetésbe küldött összes műveletet és azok állapotát. A tevékenységnaplók bejegyzéseit alapértelmezés szerint gyűjti a rendszer, ezeket az Azure Portalon tekintheti meg.
- Hozzáférési erőforrásnapló: Ezzel a naplóval megtekintheti Application Gateway hozzáférési mintákat, és elemezheti a fontos információkat. Ez magában foglalja a hívó IP-címét, a kért URL-címet, a válasz késését, a visszatérési kódot, valamint a bájtok be- és kimenő értékét. Ez a napló minden egyes kérelemhez külön rekordokat tartalmaz, és a kérést a kérést feldolgozó egyedi Application Gateway társítja. Az egyedi Application Gateway példányokat a tulajdonság instanceId azonosítója azonosíthatja.
- Teljesítményerőforrás-napló: Ezzel a naplóval megtekintheti Application Gateway példányok teljesítményét. Ez a napló rögzíti az egyes példányok teljesítményadatait, beleértve a kiszolgált kérések teljes számát, a bájtokban megadott átviteli sebességet, a kiszolgált kérelmek teljes számát, a sikertelen kérelmek számát, valamint a háttérpéldányok kifogástalan és nem kifogástalan állapotát. A rendszer 60 másodpercenként gyűjt teljesítménynaplót. A teljesítménynapló csak a v1 termékváltozathoz érhető el. A v2 termékváltozat esetében használja a Metrikákat a teljesítményadatokhoz.
- Tűzfalerőforrás-napló: Ezzel a naplóval megtekintheti a webalkalmazási tűzfallal konfigurált application gateway észlelési vagy megelőzési módjával naplózott kéréseket.
Megjegyzés
A naplók csak az Azure Resource Manager üzembehelyezési modellben üzembe helyezett erőforrásokhoz érhetők el. A klasszikus üzemi modell erőforrásaihoz nem használhat naplókat. A két modell jobb megismeréséhez tekintse meg a Resource Manager üzembe helyezés és a klasszikus üzembe helyezés ismertetése című cikket.
A naplók tárolásához három lehetőség közül választhat:
- Storage-fiók: A Storage-fiókok akkor a legmegfelelőbbek a naplók tárolására, ha a naplókat hosszabb ideig tárolják, és szükség esetén áttekintik őket.
- Eseményközpontok: Az eseményközpontok kiváló lehetőséget kínálnak az egyéb biztonsági információ- és eseménykezelési (SIEM) eszközökkel való integrációra az erőforrásokra vonatkozó riasztások lekéréséhez.
- Azure Monitor-naplók: Az Azure Monitor-naplók az alkalmazás általános valós idejű monitorozásához vagy trendek megtekintéséhez használhatók.
Naplózás engedélyezése a PowerShell-lel
A tevékenységnaplózás automatikusan engedélyezve van minden Resource Manager-erőforráshoz. A naplókon keresztül elérhető adatok gyűjtésének megkezdéséhez engedélyeznie kell a hozzáférést és a teljesítménynaplózást. A naplózás engedélyezéséhez kövesse az alábbi lépéseket:
Jegyezze fel azon Storage-fiók erőforrás-azonosítóját, ahol a naplóadatokat tárolja. Ez az érték a következő formát követi: /előfizetések/<előfizetésazonosító>/erőforráscsoportok/<erőforráscsoport neve>/szolgáltatások/Microsoft.Storage/storage-fiókok/<storage-fiók neve>. Az előfizetés bármilyen tárfiókját használhatja. Ezeket az információkat az Azure Portalon találhatja meg.
Jegyezze fel az Application Gateway erőforrás-azonosítóját, amelyhez engedélyezve van a naplózás. Ez az érték a következő formában jelenik meg: /subscriptions/subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name>.< Ezeket az információkat a portálon találhatja meg.
Engedélyezze az erőforrás-naplózást a következő PowerShell-parancsmag használatával:
Set-AzDiagnosticSetting -ResourceId /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name> -StorageAccountId /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name> -Enabled $true
Tipp
A tevékenységnaplókhoz nincs szükség külön tárfiókra. A Storage hozzáférés- és teljesítménynaplózásra való használata szolgáltatási díjjal jár.
Naplózás engedélyezése az Azure Portalon
A Azure Portal keresse meg az erőforrást, és válassza a Diagnosztikai beállítások lehetőséget.
A Application Gateway esetében három napló érhető el:
- Hozzáférési napló
- Teljesítménynapló
- Tűzfalnapló
Válassza a Diagnosztikai beállítások megadása lehetőséget.
A Diagnosztikai beállítás lapon megadhatja az erőforrásnaplók beállításait. Ebben a példában a Log Analytics tárolja a naplókat. Az erőforrásnaplók mentéséhez eseményközpontot, tárfiókot vagy partnermegoldást is használhat.
Írja be a beállítások nevét, erősítse meg a beállításokat, és válassza a Mentés lehetőséget.
Tevékenységnapló
Az Azure alapértelmezés szerint létrehozza a tevékenységnaplót. A naplók 90 napig megmaradnak az Azure eseménynapló-tárolójában. Ezekről a naplókról az Események és tevékenységnaplók megtekintése című cikkből tudhat meg többet.
Hozzáférési napló
A hozzáférési napló csak akkor jön létre, ha minden Application Gateway példányon engedélyezte, az előző lépésekben leírtak szerint. Az adatok a naplózás engedélyezésekor megadott tárfiókban lesznek tárolva. A Application Gateway minden hozzáférése JSON formátumban van naplózva, ahogy az a v1 esetében az alábbi példában látható:
Érték | Leírás |
---|---|
instanceId | Application Gateway kérést kézbesítő példány. |
clientIP | A kérés eredeti IP-címe. |
clientPort | A kérés eredeti portja. |
httpMethod | A kérés által használt HTTP-metódus. |
requestUri | A fogadott kérelem URI-ja. |
RequestQuery | Kiszolgáló által átirányított: A kérést küldő háttérkészletpéldány. X-AzureApplicationGateway-LOG-ID: A kéréshez használt korrelációs azonosító. A háttérkiszolgálók forgalmi problémáinak elhárítására használható. SERVER-STATUS: A háttérrendszerből Application Gateway HTTP-válaszkód. |
Useragent | Felhasználói ügynök a HTTP-kérelem fejlécéből. |
httpStatus | HTTP-állapotkód visszaadva az ügyfélnek Application Gateway. |
httpVersion | A kérés HTTP-verziója. |
receivedBytes | A fogadott csomag mérete bájtban. |
sentBytes | Az elküldött csomag mérete bájtban. |
timeTaken | A kérés feldolgozásához és a válasz elküldéséhez szükséges idő (ezredmásodpercben). Ezt a függvény attól az időponttól számítja ki, amikor Application Gateway megkapja egy HTTP-kérés első bájtját, és a válaszküldési művelet befejeződésének időpontjáig. Fontos megjegyezni, hogy a Time-Taken mező általában azt az időt tartalmazza, amikor a kérés- és válaszcsomagok a hálózaton keresztül haladnak. |
sslEnabled | Azt jelzi, hogy a háttérkészletekkel folytatott kommunikáció TLS/SSL protokollt használt-e. Az érvényes értékek be- és ki vannak kapcsolva. |
gazda | Az a gazdagépnév, amellyel a kérést a háttérkiszolgálóra küldték. Ha a háttérbeli gazdagépnév felül van bírálva, ez a név ezt fogja tükrözni. |
originalHost | Az a gazdagépnév, amellyel a kérést a Application Gateway megkapta az ügyféltől. |
{
"resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
"operationName": "ApplicationGatewayAccess",
"timestamp": "2017-04-26T19:27:38Z",
"category": "ApplicationGatewayAccessLog",
"properties": {
"instanceId": "ApplicationGatewayRole_IN_0",
"clientIP": "191.96.249.97",
"clientPort": 46886,
"httpMethod": "GET",
"requestUri": "/phpmyadmin/scripts/setup.php",
"requestQuery": "X-AzureApplicationGateway-CACHE-HIT=0&SERVER-ROUTED=10.4.0.4&X-AzureApplicationGateway-LOG-ID=874f1f0f-6807-41c9-b7bc-f3cfa74aa0b1&SERVER-STATUS=404",
"userAgent": "-",
"httpStatus": 404,
"httpVersion": "HTTP/1.0",
"receivedBytes": 65,
"sentBytes": 553,
"timeTaken": 205,
"sslEnabled": "off",
"host": "www.contoso.com",
"originalHost": "www.contoso.com"
}
}
A Application Gateway és a WAF v2 esetében a naplók egy kicsit több információt tartalmaznak:
Érték | Leírás |
---|---|
instanceId | Application Gateway példány, amely kiszolgálta a kérést. |
clientIP | A kérés eredeti IP-címe. |
clientPort | A kérés eredeti portja. |
httpMethod | A kérelem által használt HTTP-metódus. |
requestUri | A kapott kérelem URI-ja. |
Useragent | Felhasználói ügynök a HTTP-kérelem fejlécéből. |
httpStatus | HTTP-állapotkód Application Gateway az ügyfélnek. |
httpVersion | A kérés HTTP-verziója. |
receivedBytes | A fogadott csomag mérete bájtban. |
sentBytes | Az elküldött csomag mérete bájtban. |
timeTaken | A kérés feldolgozásához és a válasz elküldéséhez szükséges időtartam (ezredmásodpercben). Ez attól az időtartamtól számítható ki, amikor Application Gateway megkapja egy HTTP-kérés első bájtját a válaszküldési művelet befejezésének időpontjáig. Fontos megjegyezni, hogy a Time-Taken mező általában azt az időt tartalmazza, amikor a kérés- és válaszcsomagok a hálózaton keresztül haladnak. |
sslEnabled | Azt jelzi, hogy a háttérkészletekkel folytatott kommunikáció TLS-t használt-e. Az érvényes értékek be- és ki vannak kapcsolva. |
sslCipher | Titkosítási csomag használata TLS-kommunikációhoz (ha a TLS engedélyezve van). |
sslProtocol | TLS protokoll használata (ha a TLS engedélyezve van). |
serverRouted | Az a háttérkiszolgáló, amelybe az Application Gateway átirányítja a kérést. |
serverStatus | A háttérkiszolgáló HTTP-állapotkódja. |
serverResponseLatency | A háttérkiszolgáló válaszának késése. |
gazda | A kérelem gazdagépfejlécében felsorolt cím. |
{
"resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
"operationName": "ApplicationGatewayAccess",
"time": "2017-04-26T19:27:38Z",
"category": "ApplicationGatewayAccessLog",
"properties": {
"instanceId": "appgw_1",
"clientIP": "191.96.249.97",
"clientPort": 46886,
"httpMethod": "GET",
"requestUri": "/phpmyadmin/scripts/setup.php",
"userAgent": "-",
"httpStatus": 404,
"httpVersion": "HTTP/1.0",
"receivedBytes": 65,
"sentBytes": 553,
"timeTaken": 205,
"sslEnabled": "off",
"sslCipher": "",
"sslProtocol": "",
"serverRouted": "104.41.114.59:80",
"serverStatus": "200",
"serverResponseLatency": "0.023",
"host": "www.contoso.com",
}
}
Teljesítménynapló
A teljesítménynapló csak akkor jön létre, ha engedélyezte azt az egyes Application Gateway példányokon, az előző lépésekben leírtak szerint. Az adatokat a naplózás engedélyezésekor megadott tárfiók tárolja. A teljesítménynapló adatai 1 perces időközönként jönnek létre. Csak az 1-s verziós termékváltozathoz érhető el. A v2 termékváltozathoz használja a Metrikákat a teljesítményadatokhoz. A rendszer a következő adatokat naplózza:
Érték | Leírás |
---|---|
instanceId | Application Gateway példány, amelyhez teljesítményadatok jönnek létre. Többpéldányos application gateway esetén példányonként egy sor van. |
healthyHostCount | A háttérkészlet kifogástalan állapotú gazdagépeinek száma. |
unHealthyHostCount | A háttérkészlet nem megfelelő állapotú gazdagépeinek száma. |
requestCount | A kézbesített kérések száma. |
késés | A példánytól a kéréseket kiszolgáló háttérrendszerig érkező kérések átlagos késése (ezredmásodpercben). |
failedRequestCount | Sikertelen kérések száma. |
korlátozások | Az utolsó napló óta eltelt átlagos átviteli sebesség másodpercenként bájtban mérve. |
{
"resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
"operationName": "ApplicationGatewayPerformance",
"time": "2016-04-09T00:00:00Z",
"category": "ApplicationGatewayPerformanceLog",
"properties":
{
"instanceId":"ApplicationGatewayRole_IN_1",
"healthyHostCount":"4",
"unHealthyHostCount":"0",
"requestCount":"185",
"latency":"0",
"failedRequestCount":"0",
"throughput":"119427"
}
}
Megjegyzés
A késés attól az időponttól számítható ki, amikor a HTTP-kérés első bájtja a HTTP-válasz utolsó bájtjának elküldésének időpontjáig érkezik. Ez a Application Gateway feldolgozási idő és a háttérrendszer hálózati költségeinek összege, valamint a kérés feldolgozásához szükséges idő.
Tűzfalnapló
A tűzfalnapló csak akkor jön létre, ha engedélyezte azt az egyes application gatewayekhez, az előző lépésekben leírtak szerint. Ez a napló azt is megköveteli, hogy a webalkalmazás tűzfala egy application gatewayen legyen konfigurálva. Az adatok a naplózás engedélyezésekor megadott célhelyen lesznek tárolva. A rendszer a következő adatokat naplózza:
Érték | Leírás |
---|---|
instanceId | Application Gateway példány, amelyhez tűzfaladatok jönnek létre. Többpéldányos application gateway esetén példányonként egy sor van. |
clientIp | A kérés eredeti IP-címe. |
clientPort | A kérés eredeti portja. |
requestUri | A kapott kérelem URL-címe. |
ruleSetType | Szabálykészlet típusa. A rendelkezésre álló érték az OWASP. |
ruleSetVersion | Szabálykészlet használt verziója. A rendelkezésre álló értékek a 2.2.9 és a 3.0. |
ruleId | Az eseményindító esemény szabályazonosítója. |
message | Felhasználóbarát üzenet az eseményindító eseményhez. További részleteket a részletek szakaszban talál. |
action | Házirend mód:Észlelés észlelve – Észlelési - módban ez az egyetlen művelet a WAF esetében. A rendszer megfelelt egy adott szabály összes feltételének, és a kérést naplózták, majd átadták a háttérrendszernek. Házirend mód: Megelőzés - engedélyezve – Minden feltétel megfelelt egy adott szabálynak, és a kérés át lett adva a háttérrendszernek. - Letiltva – Az összes feltétel megfelelt egy adott szabálynak, és a kérés le lett tiltva. - Megfeleltetve – Egy vagy több feltétel megfelelt egy adott szabálynak, de a kérelem letiltására vagy átadására vonatkozó döntéshez további értékelésre van szükség, és a végső anomáliadetektálási szabály alapján lesz kiértékelve. |
hely | Az a webhely, amelyhez a naplót létrehozták. Jelenleg csak a Globális lista jelenik meg, mert a szabályok globálisak. |
részletek | Az eseményindító esemény részletei. |
details.message | A szabály leírása. |
details.data | A kérelemben található, a szabálynak megfelelő adatok. |
details.file | A szabályt tartalmazó konfigurációs fájl. |
details.line | Az eseményt kiváltó konfigurációs fájlban lévő sor száma. |
gazdaeszköznév | A Application Gateway állomásneve vagy IP-címe. |
transactionId | Egy adott tranzakció egyedi azonosítója, amely segít több szabálysértés csoportosításában, amelyek ugyanabban a kérelemben történtek. |
policyId | A Application Gateway, figyelőhöz vagy elérési úthoz társított tűzfalszabályzat egyedi azonosítója. |
policyScope | A szabályzat helye – az értékek lehetnek "Globális", "Figyelő" vagy "Hely". |
policyScopeName | Annak az objektumnak a neve, amelyre a szabályzat vonatkozik. |
{
"resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
"operationName": "ApplicationGatewayFirewall",
"time": "2017-03-20T15:52:09.1494499Z",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "ApplicationGatewayRole_IN_0",
"clientIp": "52.161.109.147",
"clientPort": "0",
"requestUri": "/",
"ruleSetType": "OWASP",
"ruleSetVersion": "3.0",
"ruleId": "920350",
"ruleGroup": "920-PROTOCOL-ENFORCEMENT",
"message": "Host header is a numeric IP address",
"action": "Matched",
"site": "Global",
"details": {
"message": "Warning. Pattern match \"^[\\\\d.:]+$\" at REQUEST_HEADERS:Host ....",
"data": "127.0.0.1",
"file": "rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf",
"line": "791"
},
"hostname": "127.0.0.1",
"transactionId": "16861477007022634343",
"policyId": "/subscriptions/1496a758-b2ff-43ef-b738-8e9eb5161a86/resourceGroups/drewRG/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/perListener",
"policyScope": "Listener",
"policyScopeName": "httpListener1"
}
}
}
A tevékenységnapló megtekintése és elemzése
A tevékenységnaplók adatainak megtekintéséhez és elemzéséhez használja az alábbi módszerek bármelyikét:
- Azure-eszközök: Információkat kérhet le a tevékenységnaplóból az Azure PowerShell-lel, az Azure CLI-vel, az Azure REST API-val vagy az Azure Portallal. Az egyes módszerek részletes útmutatóit a Resource Managerrel végzett tevékenységművelet című cikkben találja.
- Power BI: Ha még nem rendelkezik Power BI-fiókkal, ingyenesen kipróbálhatja. A Power BI-sablonalkalmazások használatával elemezheti az adatokat.
A hozzáférési, teljesítmény- és tűzfalnaplók megtekintése és elemzése
Az Azure Monitor-naplók összegyűjthetik a számláló- és eseménynaplófájlokat a Blob Storage-fiókból. A Log Analytics vizualizációkat és hatékony keresési lehetőségeket is tartalmaz a naplók elemzéséhez.
A Storage-fiókjához is csatlakozhat, és lekérheti a hozzáférés- és teljesítménynaplók JSON-naplóbejegyzéseit. A letöltött JSON-fájlokat átalakíthatja CSV-fájlokká, és ezeket megtekintheti az Excelben, Power BI-ban vagy bármely más adatvizualizációs eszközben.
Tipp
Ha ismeri a Visual Studiót, illetve C#-állandók és -változók módosításának alapfogalmait, használja a GitHubról elérhető naplókonvertáló eszközöket.
Hozzáférési naplók elemzése a GoAccess használatával
Közzétettünk egy Resource Manager sablont, amely telepíti és futtatja a népszerű GoAccess-naplóelemzőt Application Gateway Access-naplókhoz. A GoAccess értékes HTTP-forgalomstatisztikákat biztosít, például egyedi látogatókat, kért fájlokat, gazdagépeket, operációs rendszereket, böngészőket, HTTP-állapotkódokat és egyebeket. További részletekért tekintse meg a GitHub Resource Manager sablonmappájának Readme fájlját.
Következő lépések
- Számláló- és eseménynaplók vizualizációja az Azure Monitor-naplók használatával.
- Az Azure-tevékenységnapló vizualizációja a Power BI blogbejegyzésével .
- Azure-tevékenységnaplók megtekintése és elemzése a Power BI-ban és további blogbejegyzések.