Supervisión y registro del firewall de aplicaciones web de AzureAzure Web Application Firewall monitoring and logging

La supervisión y el registro del firewall de aplicaciones web de Azure (WAF) se proporcionan mediante el registro y la integración con Azure Monitor y con los registros de Azure Monitor.Azure Web Application Firewall (WAF) monitoring and logging are provided through logging and integration with Azure Monitor and Azure Monitor logs.

Azure MonitorAzure Monitor

WAF con el registro de FrontDoor se integra con Azure Monitor.WAF with FrontDoor log is integrated with Azure Monitor. Azure Monitor permite realizar un seguimiento de la información de diagnóstico incluidos los registros y las alertas de WAF.Azure Monitor allows you to track diagnostic information including WAF alerts and logs. Puede configurar la supervisión de WAF dentro del recurso de Front Door en el portal, en la pestaña Diagnóstico o mediante el servicio Azure Monitor directamente.You can configure WAF monitoring within the Front Door resource in the portal under the Diagnostics tab or through the Azure Monitor service directly.

Desde Azure Portal, vaya al tipo de recurso Front Door.From Azure portal, go to Front Door resource type. En la pestaña Supervisión/Métricas a la izquierda, puede agregar WebApplicationFirewallRequestCount para realizar un seguimiento del número de solicitudes que coinciden con las reglas de WAF.From Monitoring/Metrics tab on the left, you can add WebApplicationFirewallRequestCount to track number of requests that match WAF rules. Se pueden crear filtros personalizados en función de los tipos de acción y los nombres de las reglas.Custom filters can be created based on action types and rule names.

WAFMetrics

Registros y diagnósticosLogs and diagnostics

WAF con Front Door ofrece informes detallados sobre cada amenaza que detecta.WAF with Front Door provides detailed reporting on each threat it detects. El registro se integra con los registros de Diagnósticos de Azure y las alertas se registran en formato json.Logging is integrated with Azure Diagnostics logs and alerts are recorded in a json format. Estos registros pueden integrarse con los registros de Azure Monitor.These logs can be integrated with Azure Monitor logs.

WAFDiag

FrontdoorAccessLog registra todas las solicitudes.FrontdoorAccessLog logs all requests. FrontdoorWebApplicationFirewallLog registra cualquier solicitud que coincida con una regla de WAF y que tenga el siguiente esquema:FrontdoorWebApplicationFirewallLog logs any request that matches a WAF rule having the below schema:

PropiedadProperty DescripciónDescription
AcciónAction Acción realizada en la solicitudAction taken on the request
ClientIpClientIp Dirección IP del cliente que realizó la solicitud.The IP address of the client that made the request. Si hubiera un encabezado X-Forwarded-For en la solicitud, la dirección IP del cliente se seleccionaría del mismo campo de encabezado.If there was an X-Forwarded-For header in the request, then the Client IP is picked from the header field.
ClientPortClientPort Puerto IP del cliente que realizó la solicitud.The IP port of the client that made the request.
DetallesDetails Detalles adicionales sobre la solicitud coincidenteAdditional details on the matched request
matchVariableName: el nombre del parámetro http de la solicitud coincidente, por ejemplo, los nombres de encabezadomatchVariableName: http parameter name of the request matched, for example, header names
matchVariableValue: valores que desencadenaron la coincidenciamatchVariableValue: values that triggered the match
HostHost El encabezado de host de la solicitud coincidenteThe host header of the matched request
DirectivaPolicy El nombre de la directiva WAF que coincidió con la solicitud.The name of the WAF policy that the request matched.
PolicyModePolicyMode Modo de operaciones de la directiva WAF.Operations mode of the WAF policy. Los valores posibles son: "Prevention" y "Detection"Possible values are "Prevention" and "Detection"
RequestUriRequestUri URI completo de la solicitud coincidente.Full URI of the matched request.
RuleNameRuleName El nombre de la regla de WAF que coincidió con la solicitud.The name of the WAF rule that the request matched.
SocketIpSocketIp La dirección IP de origen que WAF detectó.The source IP address seen by WAF. Esta dirección IP se basa en la sesión de TCP, independientemente de los encabezados de solicitud.This IP address is based on TCP session, independent of any request headers.
TrackingReferenceTrackingReference La cadena de referencia exclusiva que identifica una solicitud atendida por Front Door, que también se envía como encabezado X-Azure-Ref al cliente.The unique reference string that identifies a request served by Front Door, also sent as X-Azure-Ref header to the client. Se requiere para buscar los detalles en los registros de acceso para una solicitud específica.Required for searching details in the access logs for a specific request.

La siguiente consulta de ejemplo devuelve los registros de WAF en las solicitudes bloqueadas:The following query example returns WAF logs on blocked requests:

AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"

Este es un ejemplo de una solicitud registrada en el registro de WAF:Here is an example of a logged request in WAF log:

{
    "time":  "2020-06-09T22:32:17.8376810Z",
    "category": "FrontdoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Network/FrontDoorWebApplicationFirewallLog/Write",
    "properties":
    {
        "clientIP":"xxx.xxx.xxx.xxx",
        "clientPort":"52097",
        "socketIP":"xxx.xxx.xxx.xxx",
        "requestUri":"https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
        "ruleName":"Microsoft_DefaultRuleSet-1.1-SQLI-942100",
        "policy":"WafDemoCustomPolicy",
        "action":"Block",
        "host":"wafdemofrontdoorwebapp.azurefd.net",
        "trackingReference":"08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
        "policyMode":"prevention",
        "details":
            {
            "matches":
                [{
                "matchVariableName":"QueryParamValue:q",
                "matchVariableValue":"' or 1=1"
                }]
            }
     }
}

La siguiente consulta de ejemplo devuelve las entradas de AccessLogs:The following example query returns AccessLogs entries:

AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorAccessLog"

Este es un ejemplo de una solicitud registrada en el registro de acceso:Here is an example of a logged request in Access log:

{
"time": "2020-06-09T22:32:17.8383427Z",
"category": "FrontdoorAccessLog",
"operationName": "Microsoft.Network/FrontDoor/AccessLog/Write",
 "properties":
    {
    "trackingReference":"08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "httpMethod":"GET",
    "httpVersion":"2.0",
    "requestUri":"https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "requestBytes":"715",
    "responseBytes":"380",
    "userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4157.0 Safari/537.36 Edg/85.0.531.1",
    "clientIp":"xxx.xxx.xxx.xxx",
    "socketIp":"xxx.xxx.xxx.xxx",
    "clientPort":"52097",
    "timeTaken":"0.003",
    "securityProtocol":"TLS 1.2",
    "routingRuleName":"WAFdemoWebAppRouting",
    "rulesEngineMatchNames":[],
    "backendHostname":"wafdemowebappuscentral.azurewebsites.net:443",
    "sentToOriginShield":false,
    "httpStatusCode":"403",
    "httpStatusDetails":"403",
    "pop":"SJC",
    "cacheStatus":"CONFIG_NOCACHE"
    }
}

Pasos siguientesNext steps