Delen via


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:

  1. 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.

    Portal: resource-id voor opslagaccount

  2. 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.

    Portal: resource-id voor toepassingsgateway

  3. 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

  1. Zoek uw resource in Azure Portal en selecteer diagnostische instellingen.

    Voor Application Gateway zijn drie logboeken beschikbaar:

    • Toegangslogboek
    • Prestatielogboek
    • Firewalllogboek
  2. Selecteer Diagnostische instellingen toevoegen.

  3. 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.

    Schermopname van diagnostische instellingen.

  4. 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