Resourcelogboeken voor Azure Web Application Firewall
U kunt Web Application Firewall-resources bewaken met behulp van logboeken. U kunt prestaties, toegang en andere gegevens opslaan of gebruiken vanuit een resource voor bewakingsdoeleinden.
Notitie
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Diagnostische logboeken
U kunt verschillende typen logboeken in Azure gebruiken om toepassingsgateways te beheren en problemen met toepassingsgateways op te lossen. Via de portal kunt u toegang verkrijgen tot sommige van deze logboeken. Alle logboeken kunnen worden geëxtraheerd uit Azure Blob Storage en worden weergegeven in verschillende hulpprogramma's, zoals Azure Monitor-logboeken, Excel en Power BI. Meer informatie over de verschillende typen logboeken vindt u in de volgende lijst:
- Activiteitenlogboek: U kunt Azure-activiteitenlogboeken gebruiken om alle bewerkingen weer te geven die zijn verzonden naar uw Azure-abonnement en hun status. Activiteitenlogboekitems worden standaard verzameld en kunnen in de Azure-portal worden bekeken.
- Toegang tot resourcelogboek: u kunt dit logboek gebruiken om toegangspatronen voor Application Gateway weer te geven en belangrijke informatie te analyseren. Dit omvat het IP-adres van de aanroeper, aangevraagde URL, reactielatentie, retourcode en bytes in en uit. Dit logboek bevat afzonderlijke records voor elke aanvraag en koppelt die aanvraag aan de unieke Application Gateway die de aanvraag heeft verwerkt. Unieke Application Gateway-exemplaren kunnen worden geïdentificeerd door de exemplaar-id van de eigenschap.
- Prestatieresourcelogboek: u kunt dit logboek gebruiken om te bekijken hoe Application Gateway-exemplaren presteren. In dit logboek worden prestatiegegevens vastgelegd voor elk exemplaar, inclusief het totale aantal aanvragen dat wordt geleverd, de doorvoer in bytes, het totale aantal aanvragen, het aantal mislukte aanvragen en het aantal beschadigde back-endinstanties. Er wordt elke 60 seconden een prestatielogboek verzameld. Het prestatielogboek is alleen beschikbaar voor de v1-SKU. Voor de v2-SKU gebruikt u Metrische gegevens voor prestatiegegevens.
- Firewall-resourcelogboek: u kunt dit logboek gebruiken om de aanvragen weer te geven die zijn geregistreerd via de detectie- of preventiemodus van een toepassingsgateway die is geconfigureerd met de web application firewall.
Notitie
Logboeken zijn alleen beschikbaar voor resources die zijn geïmplementeerd in het Azure Resource Manager-implementatiemodel. U kunt geen logboeken gebruiken voor resources in het klassieke implementatiemodel. Zie het artikel Over resource manager-implementatie en klassieke implementatie voor een beter begrip van de twee modellen.
U hebt drie opties voor het opslaan van uw logboeken:
- Opslagaccount: opslagaccounts kunnen het best worden gebruikt wanneer logboeken voor een langere periode worden opgeslagen en moeten kunnen worden bekeken wanneer dat nodig is.
- Event Hubs: Event Hubs zijn een uitstekende optie voor integratie met andere SIEM-hulpprogramma's (Security Information and Event Management) om waarschuwingen over uw resources op te halen.
- Azure Monitor-logboeken: Azure Monitor-logboeken kunnen het beste worden gebruikt voor algemene realtime bewaking van uw toepassing of voor het bekijken van trends.
Logboekregistratie inschakelen via PowerShell
Activiteitenlogboekregistratie is automatisch ingeschakeld voor elke Resource Manager-resource. U moet toegangs- en prestatielogboekregistratie inschakelen om te beginnen met het verzamelen van de gegevens die beschikbaar zijn via deze logboeken. Gebruik de volgende stappen om logboekregistratie in te schakelen:
Noteer de resource-ID van uw opslagaccount waar de logboekgegevens worden opgeslagen. Deze waarde is van het formulier: /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name>. U kunt elk opslagaccount in uw abonnement gebruiken. U kunt de Azure-portal gebruiken om deze informatie te vinden.
Noteer de resource-id van uw toepassingsgateway waarvoor logboekregistratie is ingeschakeld. Deze waarde is van het formulier: /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application Gateway name>. U kunt de portal gebruiken om deze informatie te vinden.
Schakel resourcelogboekregistratie in met behulp van de volgende 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
Tip
Voor activiteitenlogboeken is geen afzonderlijk opslagaccount vereist . Voor het gebruik van opslag voor toegangs- en prestatielogboeken worden servicekosten in rekening gebracht.
Logboekregistratie inschakelen via de Azure-portal
Zoek uw resource in Azure Portal en selecteer diagnostische instellingen.
Voor Application Gateway zijn drie logboeken beschikbaar:
- Toegangslogboek
- Prestatielogboek
- Firewalllogboek
Selecteer Diagnostische instellingen toevoegen.
De pagina Diagnostische instelling bevat de instellingen voor de resourcelogboeken. In dit voorbeeld worden de logboeken opgeslagen in Log Analytics. U kunt ook een Event Hub, een opslagaccount of een partneroplossing gebruiken om de resourcelogboeken op te slaan.
Typ een naam voor de instellingen, bevestig de instellingen en selecteer Opslaan.
Activiteitenlogboek
Azure genereert standaard het activiteitenlogboek. De logboeken worden gedurende 90 dagen bewaard in het Logboekenarchief van Azure. Lees het artikel Gebeurtenissen en activiteitenlogboeken weergeven voor meer informatie over deze logboeken.
Toegangslogboek
Het toegangslogboek wordt alleen gegenereerd als u dit hebt ingeschakeld voor elk Application Gateway-exemplaar, zoals beschreven in de voorgaande stappen. De gegevens worden opgeslagen in het opslagaccount dat u hebt opgegeven toen u de logboekregistratie hebt ingeschakeld. Elke toegang tot Application Gateway wordt vastgelegd in JSON-indeling, zoals wordt weergegeven in het volgende voorbeeld voor v1:
Weergegeven als | Beschrijving |
---|---|
instanceId | Application Gateway-exemplaar dat de aanvraag heeft geleverd. |
clientIP | Oorspronkelijk IP-adres voor de aanvraag. |
clientPort | Oorspronkelijke poort voor de aanvraag. |
httpMethod | De HTTP-methode die wordt gebruikt door de aanvraag. |
requestUri | URI van de ontvangen aanvraag. |
RequestQuery | Serverrouted: back-endpoolexemplaren die de aanvraag hebben verzonden. X-AzureApplicationGateway-LOG-ID: Correlatie-id die wordt gebruikt voor de aanvraag. Het kan worden gebruikt om verkeersproblemen op de back-endservers op te lossen. SERVER-STATUS: HTTP-antwoordcode die Application Gateway heeft ontvangen van de back-end. |
UserAgent | Gebruikersagent van de HTTP-aanvraagheader. |
httpStatus | HTTP-statuscode geretourneerd naar de client vanuit Application Gateway. |
httpVersion | HTTP-versie van de aanvraag. |
ontvangenbytes | Grootte van het ontvangen pakket, in bytes. |
verzonden bytes | De grootte van het pakket dat wordt verzonden, in bytes. |
timeTaken | De tijdsduur (in milliseconden) die nodig is om een aanvraag te verwerken en de reactie die moet worden verzonden. Dit wordt berekend als het interval van het tijdstip waarop Application Gateway de eerste byte van een HTTP-aanvraag ontvangt tot het tijdstip waarop de verzendbewerking van het antwoord is voltooid. Het is belangrijk om te weten dat het veld Time-Taken meestal de tijd bevat waarop de aanvraag- en antwoordpakketten via het netwerk worden verzonden. |
sslEnabled | Of communicatie met de back-endpools TLS/SSL heeft gebruikt. Geldige waarden zijn in- en uitgeschakeld. |
host | De hostnaam waarmee de aanvraag naar de back-endserver is verzonden. Als de hostnaam van de back-end wordt overschreven, wordt deze naam weergegeven. |
originalHost | De hostnaam waarmee de aanvraag is ontvangen door de Application Gateway van de client. |
{
"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"
}
}
Voor Application Gateway en WAF v2 geven de logboeken wat meer informatie weer:
Weergegeven als | Beschrijving |
---|---|
instanceId | Application Gateway-exemplaar dat de aanvraag heeft geleverd. |
clientIP | Oorspronkelijk IP-adres voor de aanvraag. |
clientPort | Oorspronkelijke poort voor de aanvraag. |
httpMethod | De HTTP-methode die wordt gebruikt door de aanvraag. |
requestUri | URI van de ontvangen aanvraag. |
UserAgent | Gebruikersagent van de HTTP-aanvraagheader. |
httpStatus | HTTP-statuscode geretourneerd naar de client vanuit Application Gateway. |
httpVersion | HTTP-versie van de aanvraag. |
ontvangenbytes | Grootte van het ontvangen pakket, in bytes. |
verzonden bytes | De grootte van het pakket dat wordt verzonden, in bytes. |
timeTaken | De tijdsduur (in milliseconden) die nodig is om een aanvraag te verwerken en de reactie die moet worden verzonden. Dit wordt berekend als het interval van het tijdstip waarop Application Gateway de eerste byte van een HTTP-aanvraag ontvangt tot het tijdstip waarop de verzendbewerking van het antwoord is voltooid. Het is belangrijk om te weten dat het veld Time-Taken meestal de tijd bevat waarop de aanvraag- en antwoordpakketten via het netwerk worden verzonden. |
sslEnabled | Of de communicatie met de back-endpools TLS heeft gebruikt. Geldige waarden zijn in- en uitgeschakeld. |
sslCipher | Coderingssuite die wordt gebruikt voor TLS-communicatie (als TLS is ingeschakeld). |
sslProtocol | TLS-protocol dat wordt gebruikt (als TLS is ingeschakeld). |
serverRouted | De back-endserver waarnaar de toepassingsgateway de aanvraag stuurt. |
serverStatus | HTTP-statuscode van de back-endserver. |
serverResponseLatency | Latentie van het antwoord van de back-endserver. |
host | Adres vermeld in de hostheader van de aanvraag. |
{
"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",
}
}
Prestatielogboek
Het prestatielogboek wordt alleen gegenereerd als u dit hebt ingeschakeld voor elk Application Gateway-exemplaar, zoals beschreven in de voorgaande stappen. De gegevens worden opgeslagen in het opslagaccount dat u hebt opgegeven toen u de logboekregistratie hebt ingeschakeld. De prestatielogboekgegevens worden met intervallen van 1 minuut gegenereerd. Deze is alleen beschikbaar voor de v1-SKU. Voor de v2-SKU gebruikt u Metrische gegevens voor prestatiegegevens. De volgende gegevens worden vastgelegd:
Weergegeven als | Beschrijving |
---|---|
instanceId | Application Gateway-exemplaar waarvoor prestatiegegevens worden gegenereerd. Voor een toepassingsgateway met meerdere exemplaren is er één rij per exemplaar. |
healthyHostCount | Aantal hosts in orde in de back-endpool. |
unHealthyHostCount | Aantal beschadigde hosts in de back-endpool. |
requestCount | Het aantal aanvragen dat is verwerkt. |
latentie | Gemiddelde latentie (in milliseconden) van aanvragen van het exemplaar naar de back-end die de aanvragen verwerkt. |
failedRequestCount | Aantal mislukte aanvragen. |
doorvoer | Gemiddelde doorvoer sinds het laatste logboek, gemeten in bytes per seconde. |
{
"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"
}
}
Notitie
Latentie wordt berekend vanaf het moment waarop de eerste byte van de HTTP-aanvraag wordt ontvangen tot het moment waarop de laatste byte van het HTTP-antwoord wordt verzonden. Dit is de som van de verwerkingstijd van Application Gateway plus de netwerkkosten voor de back-end, plus de tijd die de back-end nodig heeft om de aanvraag te verwerken.
Firewalllogboek
Het firewalllogboek wordt alleen gegenereerd als u dit hebt ingeschakeld voor elke toepassingsgateway, zoals beschreven in de voorgaande stappen. Dit logboek vereist ook dat de webtoepassingsfirewall is geconfigureerd op een toepassingsgateway. De gegevens worden opgeslagen in de bestemming die u hebt opgegeven toen u de logboekregistratie hebt ingeschakeld. De volgende gegevens worden vastgelegd:
Weergegeven als | Beschrijving |
---|---|
instanceId | Application Gateway-exemplaar waarvoor firewallgegevens worden gegenereerd. Voor een toepassingsgateway met meerdere exemplaren is er één rij per exemplaar. |
clientIp | Oorspronkelijk IP-adres voor de aanvraag. |
requestUri | URL van de ontvangen aanvraag. |
ruleSetType | Type regelset. De beschikbare waarde is OWASP. |
ruleSetVersion | Gebruikte regelsetversie. Beschikbare waarden zijn 2.2.9 en 3.0. |
ruleId | Regel-id van de activerende gebeurtenis. |
bericht | Gebruiksvriendelijk bericht voor de triggergebeurtenis. Meer informatie vindt u in de sectie details. |
action | Beleidsmodus: Detectie - gedetecteerd : dit is de enige actie voor de WAF in de detectiemodus. Alle voorwaarden voor een bepaalde regel zijn gekoppeld en de aanvraag is geregistreerd en vervolgens doorgegeven aan de back-end. Beleidsmodus: Preventie - toegestaan : alle voorwaarden zijn gekoppeld aan een bepaalde regel en de aanvraag is doorgegeven aan de back-end. - Geblokkeerd : alle voorwaarden zijn gematcht voor een bepaalde regel en de aanvraag is geblokkeerd. - Overeenkomend : een/meer voorwaarden zijn gevonden voor een bepaalde regel, maar de beslissing om de aanvraag te blokkeren of door te geven, moet verder worden geëvalueerd en wordt geëvalueerd op basis van de laatste anomaliescoreregel. Beleidsmodus: JS-uitdaging - JSChallengeIssued: Uitgegeven vanwege ontbrekende/ongeldige toestemming voor uitdaging, ontbrekend antwoord. Dit logboek wordt gemaakt wanneer een client de eerste keer toegang tot een webtoepassing aanvraagt en nog niet eerder is gevraagd. Deze client ontvangt de pagina JS-uitdaging en gaat verder met het berekenen van de JS-uitdaging. Na een geslaagde berekening krijgt de client de geldigheidscookis. - JSChallengePass: Geslaagd vanwege een geldig antwoord op de uitdaging. Dit logboek wordt gemaakt wanneer een client de JS-uitdaging oplost en de aanvraag opnieuw indient met het juiste antwoord. In dit geval valideert Azure WAF de cookie en gaat verder met het verwerken van de resterende regels zonder dat er een andere JS-uitdaging wordt gegenereerd. - JSChallengeValid: Geregistreerd/passthrough vanwege een geldige uitdaging Dit logboek wordt gemaakt wanneer een client eerder een uitdaging heeft opgelost. In dit geval registreert Azure WAF de aanvraag en verwerkt de resterende regels. - JSChallengeBlock: Geblokkeerd Dit logboek wordt gemaakt wanneer een JS-uitdagingsberekening mislukt. |
site | Site waarvoor het logboek is gegenereerd. Momenteel wordt alleen Algemeen vermeld omdat regels globaal zijn. |
details | Details van de triggering-gebeurtenis. |
details.message | Beschrijving van de regel. |
details.data | Specifieke gegevens gevonden in aanvraag die overeenkomen met de regel. |
details.file | Configuratiebestand met de regel. |
details.line | Regelnummer in het configuratiebestand dat de gebeurtenis heeft geactiveerd. |
hostname | Hostnaam of IP-adres van de Application Gateway. |
transactionId | Unieke id voor een bepaalde transactie die helpt bij het groeperen van meerdere regelschendingen die zich in dezelfde aanvraag hebben voorgedaan. |
policyId | Unieke id van het firewallbeleid dat is gekoppeld aan application gateway, listener of pad. |
policyScope | De locatie van het beleid - waarden kunnen 'Globaal', 'Listener' of 'Locatie' zijn. |
policyScopeName | De naam van het object waarop het beleid wordt toegepast. |
{
"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"
}
}
}
Het activiteitenlogboek bekijken en analyseren
U kunt activiteitenlogboekgegevens bekijken en analyseren via een van de volgende methoden:
- Azure-hulpprogramma’s: Haal informatie uit het activiteitenlogboek op via Azure PowerShell, de Azure CLI, de Azure REST-API of de Azure-portal. In het artikel Activiteitsbewerkingen met Resource Manager staan stapsgewijze instructies voor elke methode.
- Power BI: Als u nog geen Power BI-account hebt, kunt u het gratis uitproberen. Met behulp van de Power BI-sjabloon-apps kunt u uw gegevens analyseren.
De toegangs-, prestatie- en firewalllogboeken weergeven en analyseren
Azure Monitor-logboeken kunnen de teller- en gebeurtenislogboekbestanden verzamelen uit uw Blob Storage-account. Het omvat visualisaties en krachtige zoekmogelijkheden om uw logboeken te analyseren.
U kunt ook verbinding maken met uw opslagaccount en de JSON-logboekitems voor toegangs- en prestatielogboeken ophalen. Nadat u de JSON-bestanden hebt gedownload, kunt u ze naar de CSV-indeling converteren en in Excel, Power BI of een ander hulpprogramma voor gegevensvisualisatie bekijken.
Tip
Als u bekend bent met Visual Studio en de basisconcepten van het wijzigen van waarden voor constanten en variabelen in C#, kunt u de logboekconversieprogramma’s gebruiken die beschikbaar zijn in GitHub.
Toegangslogboeken analyseren via GoAccess
We hebben een Resource Manager-sjabloon gepubliceerd waarmee de populaire GoAccess-logboekanalyse voor Application Gateway-toegangslogboeken wordt geïnstalleerd en uitgevoerd. GoAccess biedt waardevolle HTTP-verkeersstatistieken zoals unieke bezoekers, aangevraagde bestanden, hosts, besturingssystemen, browsers, HTTP-statuscodes en meer. Zie het Leesmij-bestand in de map Resource Manager-sjabloon in GitHub voor meer informatie.
Volgende stappen
- Visualiseer teller- en gebeurtenislogboeken met behulp van Azure Monitor-logboeken.
- Visualiseer uw Azure-activiteitenlogboek met een Power BI-blogbericht .
- Azure-activiteitenlogboeken weergeven en analyseren in Power BI en meer blogpost.