Resursloggar för Azure Web Application Firewall
Du kan övervaka brandväggsresurser för webbaserade program med hjälp av loggar. Du kan spara prestanda, åtkomst och andra data eller använda dem från en resurs i övervakningssyfte.
Kommentar
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Diagnostikloggar
Du kan använda olika typer av loggar i Azure för att hantera och felsöka programgatewayer. Du kan komma åt vissa av de här loggarna via portalen. Alla loggar kan extraheras från Azure Blob Storage och visas i olika verktyg, till exempel Azure Monitor-loggar, Excel och Power BI. Du kan lära dig mer om de olika typerna av loggar från följande lista:
- Aktivitetslogg: Du kan använda Azure-aktivitetsloggar för att visa alla åtgärder som skickas till din Azure-prenumeration och deras status. Aktivitetsloggposter samlas in som standard, och du kan visa dem i Azure Portal.
- Åtkomst till resurslogg: Du kan använda den här loggen för att visa Åtkomstmönster för Application Gateway och analysera viktig information. Detta inkluderar anroparens IP-adress, begärd URL, svarsfördröjning, returkod och byte in och ut. Den här loggen innehåller enskilda poster för varje begäran och associerar den begäran till den unika Application Gateway som bearbetade begäran. Unika Application Gateway-instanser kan identifieras av egenskapen instanceId.
- Prestandaresurslogg: Du kan använda den här loggen för att visa hur Application Gateway-instanser fungerar. Den här loggen samlar in prestandainformation för varje instans, inklusive totalt antal begäranden som hanteras, dataflöde i byte, totalt antal begäranden som hanteras, antal misslyckade begäranden och felfritt antal serverdelsinstanser. En prestandalogg samlas in var 60:e sekund. Prestandaloggen är endast tillgänglig för V1-SKU:n. För V2 SKU använder du Mått för prestandadata.
- Brandväggsresurslogg: Du kan använda den här loggen för att visa begäranden som loggas via antingen identifierings- eller förebyggande läge för en programgateway som har konfigurerats med brandväggen för webbprogram.
Kommentar
Loggar är endast tillgängliga för resurser som distribueras i Azure Resource Manager-distributionsmodellen. Du kan inte använda loggar för resurser i den klassiska distributionsmodellen. En bättre förståelse för de två modellerna finns i artikeln Förstå Resource Manager-distribution och klassisk distribution .
Du har tre alternativ för att lagra dina loggar:
- Storage-konto: Storage-konton passar bäst när loggarna ska lagras en längre tid och granskas vid behov.
- Händelsehubbar: Händelsehubbar är ett bra alternativ för att integrera med andra SIEM-verktyg (säkerhetsinformation och händelsehantering) för att få aviseringar om dina resurser.
- Azure Monitor-loggar: Azure Monitor-loggar används bäst för allmän realtidsövervakning av ditt program eller för att titta på trender.
Aktivera loggning via PowerShell
Aktivitetsloggning är automatiskt aktiverad för alla Resource Manager-resurser. Du måste aktivera åtkomst och prestandaloggning för att börja samla in de data som är tillgängliga via dessa loggar. Använd följande steg för att aktivera loggning:
Anteckna resurs-ID:t för det lagringskonto där loggdata lagras. Det här värdet är av formuläret : /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name>. Du kan använda valfritt lagringskonto i din prenumeration. Du hittar den här informationen i Azure Portal.
Observera programgatewayens resurs-ID som loggning är aktiverad för. Det här värdet är av formuläret : /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name>. Du hittar den här informationen i Azure Portal.
Aktivera resursloggning med hjälp av följande PowerShell-cmdlet:
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
Dricks
Aktivitetsloggar kräver inte ett separat lagringskonto. När du använder lagring för åtkomst- och prestandaloggning debiteras avgifter för tjänsten.
aktivera loggning via Azure Portal
Leta upp resursen i Azure Portal och välj Diagnostikinställningar.
För Application Gateway är tre loggar tillgängliga:
- Åtkomstlogg
- Prestandalogg
- Brandväggslogg
Välj Lägg till diagnostikinställning.
Sidan Diagnostikinställning innehåller inställningarna för resursloggarna. I det här exemplet lagrar Log Analytics loggarna. Du kan också använda en händelsehubb, ett lagringskonto eller en partnerlösning för att spara resursloggarna.
Ange ett namn för inställningarna, bekräfta inställningarna och välj Spara.
Aktivitetslogg
Azure genererar aktivitetsloggen som standard. Loggarna bevaras i 90 dagar i Azure-händelseloggarkivet. Läs mer om dessa loggar genom att läsa artikeln Visa händelser och aktivitetsloggar .
Åtkomstlogg
Åtkomstloggen genereras endast om du har aktiverat den på varje Application Gateway-instans, enligt beskrivningen i föregående steg. Data lagras i det lagringskonto som du angav när du aktiverade loggningen. Varje åtkomst till Application Gateway loggas i JSON-format, enligt följande exempel för v1:
Värde | beskrivning |
---|---|
instanceId | Application Gateway-instans som hanterade begäran. |
clientIP | Ursprunglig IP-adress för begäran. |
clientPort | Ursprungsport för begäran. |
httpMethod | HTTP-metod som används av begäran. |
requestUri | URI för den mottagna begäran. |
RequestQuery | Server-Routed: Serverdelspoolinstans som skickades begäran. X-AzureApplicationGateway-LOG-ID: Korrelations-ID som används för begäran. Den kan användas för att felsöka trafikproblem på serverdelsservrarna. SERVER-STATUS: HTTP-svarskod som Application Gateway tog emot från serverdelen. |
UserAgent | Användaragent från HTTP-begärandehuvudet. |
httpStatus | HTTP-statuskod som returneras till klienten från Application Gateway. |
httpVersion | HTTP-versionen av begäran. |
receivedBytes | Storleken på det mottagna paketet i byte. |
sentBytes | Storleken på det paket som skickas i byte. |
timeTaken | Hur lång tid (i millisekunder) som det tar för en begäran att bearbetas och dess svar skickas. Detta beräknas som intervallet från den tidpunkt då Application Gateway tar emot den första byte av en HTTP-begäran till den tidpunkt då svarssändningen slutförs. Det är viktigt att observera att fältet Tidsåtgång vanligtvis innehåller den tid då paketen för begäran och svar färdas över nätverket. |
sslEnabled | Om kommunikationen till serverdelspoolerna använde TLS/SSL. Giltiga värden är på och av. |
värd | Värdnamnet som begäran har skickats till serverdelsservern med. Om serverdelsvärdnamnet åsidosätts kommer det här namnet att återspegla det. |
originalHost | Värdnamnet som begäran togs emot med av Application Gateway från klienten. |
{
"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": "203.0.113.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=aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e&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"
}
}
För Application Gateway och WAF v2 visar loggarna lite mer information:
Värde | beskrivning |
---|---|
instanceId | Application Gateway-instans som hanterade begäran. |
clientIP | Ursprunglig IP-adress för begäran. |
clientPort | Ursprungsport för begäran. |
httpMethod | HTTP-metod som används av begäran. |
requestUri | URI för den mottagna begäran. |
UserAgent | Användaragent från HTTP-begärandehuvudet. |
httpStatus | HTTP-statuskod som returneras till klienten från Application Gateway. |
httpVersion | HTTP-versionen av begäran. |
receivedBytes | Storleken på det mottagna paketet i byte. |
sentBytes | Storleken på det paket som skickas i byte. |
timeTaken | Hur lång tid (i millisekunder) som det tar för en begäran att bearbetas och dess svar skickas. Detta beräknas som intervallet från den tidpunkt då Application Gateway tar emot den första byte av en HTTP-begäran till den tidpunkt då svarssändningen slutförs. Det är viktigt att observera att fältet Tidsåtgång vanligtvis innehåller den tid då paketen för begäran och svar färdas över nätverket. |
sslEnabled | Om kommunikationen till serverdelspoolerna använde TLS. Giltiga värden är på och av. |
sslCipher | Chiffersvit som används för TLS-kommunikation (om TLS är aktiverat). |
sslProtocol | TLS-protokoll som används (om TLS är aktiverat). |
serverRouted | Serverdelsservern som programgatewayen dirigerar begäran till. |
serverStatus | HTTP-statuskod för serverdelsservern. |
serverResponseLatency | Svarstiden för svaret från serverdelsservern. |
värd | Adress som anges i värdhuvudet för begäran. |
{
"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": "203.0.113.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",
}
}
Prestandalogg
Prestandaloggen genereras endast om du har aktiverat den på varje Application Gateway-instans, enligt beskrivningen i föregående steg. Data lagras i det lagringskonto som du angav när du aktiverade loggningen. Prestandaloggdata genereras inom 1 minuts intervall. Den är endast tillgänglig för V1-SKU:n. För V2 SKU använder du Mått för prestandadata. Följande data loggas:
Värde | beskrivning |
---|---|
instanceId | Application Gateway-instans för vilken prestandadata genereras. För en programgateway med flera instanser finns det en rad per instans. |
healthyHostCount | Antal felfria värdar i serverdelspoolen. |
unHealthyHostCount | Antal värdar som inte är felfria i serverdelspoolen. |
requestCount | Antal begäranden som hanteras. |
svarstid | Genomsnittlig svarstid (i millisekunder) för begäranden från instansen till serverdelen som hanterar begäranden. |
failedRequestCount | Antal misslyckade begäranden. |
dataflöde | Genomsnittligt dataflöde sedan den senaste loggen, mätt i byte per sekund. |
{
"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"
}
}
Kommentar
Svarstiden beräknas från den tidpunkt då den första byte av HTTP-begäran tas emot till den tidpunkt då http-svarets sista byte skickas. Det är summan av Application Gateway-bearbetningstiden plus nätverkskostnaden för serverdelen, plus den tid som serverdelen tar att bearbeta begäran.
Brandväggslogg
Brandväggsloggen genereras endast om du har aktiverat den för varje programgateway, enligt beskrivningen i föregående steg. Den här loggen kräver också att brandväggen för webbprogram har konfigurerats på en programgateway. Data lagras i det mål som du angav när du aktiverade loggningen. Följande data loggas:
Värde | beskrivning |
---|---|
instanceId | Application Gateway-instans för vilken brandväggsdata genereras. För en programgateway med flera instanser finns det en rad per instans. |
clientIp | Ursprunglig IP-adress för begäran. |
requestUri | URL för den mottagna begäran. |
ruleSetType | Regeluppsättningstyp. Det tillgängliga värdet är OWASP. |
ruleSetVersion | Regeluppsättningsversion som används. Tillgängliga värden är 2.2.9 och 3.0. |
ruleId | Regel-ID för utlösande händelse. |
meddelande | Användarvänligt meddelande för utlösande händelse. Mer information finns i informationsavsnittet. |
åtgärd | Principläge: Identifiering identifierad - – Det här är den enda åtgärden för WAF när du är i identifieringsläge. Alla villkor för en viss regel matchades och begäran loggades och skickades sedan till serverdelen. Principläge: Skydd - tillåts – Alla villkor matchades för en viss regel och begäran skickades till serverdelen. - Blockerad – Alla villkor matchades för en viss regel och begäran blockerades. - Matchad – Ett/flera villkor matchades för en viss regel, men beslutet att blockera eller godkänna begäran behöver ytterligare utvärdering och utvärderas baserat på den slutliga regeln för avvikelsebedömning. Principläge: JS-utmaning - JSChallengeIssued: Utfärdad på grund av saknad/ogiltig utmaningsrensning, saknat svar. Den här loggen skapas när en klient begär åtkomst till ett webbprogram för första gången och inte har ifrågasatts tidigare. Den här klienten tar emot JS-utmaningssidan och fortsätter att beräkna JS-utmaningen. Vid lyckad beräkning beviljas klienten giltighetscookien. - JSChallengePass: Godkänd på grund av ett giltigt utmaningssvar. Den här loggen skapas när en klient löser JS-utmaningen och skickar begäran på nytt med rätt svar. I det här fallet validerar Azure WAF cookien och fortsätter att bearbeta de återstående reglerna utan att generera någon annan JS-utmaning. - JSChallengeValid: Loggad/genomströmning på grund av giltig utmaning Den här loggen skapas när en klient tidigare har löst en utmaning. I det här fallet loggar Azure WAF begäran och fortsätter att bearbeta de återstående reglerna. - JSChallengeBlock: Blockerad Den här loggen skapas när en JS-utmaningsberäkning misslyckas. |
webbplats | Webbplats som loggen genererades för. För närvarande visas endast Global eftersom reglerna är globala. |
information | Information om utlösande händelse. |
details.message | Beskrivning av regeln. |
details.data | Specifika data som hittades i begäran som matchade regeln. |
details.file | Konfigurationsfil som innehöll regeln. |
details.line | Radnummer i konfigurationsfilen som utlöste händelsen. |
värddatornamn | Programgatewayens värdnamn eller IP-adress. |
transactionId | Unikt ID för en viss transaktion som hjälper till att gruppera flera regelöverträdelser som inträffat inom samma begäran. |
policyId | Unikt ID för brandväggsprincipen som är associerad med Application Gateway, Lyssnare eller Sökväg. |
policyScope | Platsen för principen – värden kan vara "Global", "Lyssnare" eller "Plats". |
policyScopeName | Namnet på objektet där principen tillämpas. |
{
"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": "203.0.113.147",
"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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/drewRG/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/perListener",
"policyScope": "Listener",
"policyScopeName": "httpListener1"
}
}
}
Visa och analysera aktivitetsloggar
Du kan visa och analysera aktivitetsloggdata med någon av följande metoder:
- Azure-verktyg: Hämta information från aktivitetsloggen via Azure PowerShell, Azure-CLI:t, Azure REST-API:t eller Azure Portal. Det finns stegvisa instruktioner för respektive metod i artikeln Aktivitetsåtgärder med Resource Manager.
- Power BI: Om du inte redan har ett Power BI-konto kan du prova ett utan kostnad. Genom att använda Power BI-mallapparna kan du analysera dina data.
Visa och analysera åtkomst-, prestanda- och brandväggsloggar
Azure Monitor-loggar kan samla in räknar- och händelseloggfilerna från ditt Blob Storage-konto. Där finns visualiseringar och kraftfulla sökfunktioner när du ska analysera dina loggar.
Du kan också ansluta till ditt lagringskonto och hämta JSON-loggposter för åtkomst- och prestandaloggar. När du har laddat ned JSON-filerna kan du konvertera dem till CSV-format och visa dem i Excel, Power BI eller något annat verktyg för visualisering av data.
Dricks
Om du är bekant med Visual Studio och kan grunderna i att ändra värden för konstanter och variabler i C# så kan du använda verktygen för loggkonvertering från GitHub.
Analysera åtkomstloggar via GoAccess
Vi har publicerat en Resource Manager-mall som installerar och kör den populära GoAccess-logganalysen för Application Gateway-åtkomstloggar. GoAccess tillhandahåller värdefull HTTP-trafikstatistik som unika besökare, begärda filer, värdar, operativsystem, webbläsare, HTTP-statuskoder med mera. Mer information finns i Readme-filen i resource manager-mallmappen i GitHub.
Nästa steg
- Visualisera räknar- och händelseloggar med hjälp av Azure Monitor-loggar.
- Visualisera din Azure-aktivitetslogg med Power BI-blogginlägget .
- Visa och analysera Azure-aktivitetsloggar i Power BI och fler blogginlägg.