Comparteix a través de


Supervisión y registro del firewall de aplicaciones web de Azure

Azure Web Application Firewall en Azure Front Door ofrece amplios registros y telemetría que ayudan a comprender el rendimiento del firewall de aplicaciones web (WAF) y las acciones que realiza.

El registro de WAF de Azure Front Door está integrado en Azure Monitor. Azure Monitor le permite hacer un seguimiento de la información de diagnóstico, incluidos los registros y alertas de WAF. Puede configurar la supervisión de WAF dentro del recurso de Azure Front Door en Azure Portal, en la pestaña Diagnóstico, mediante enfoques de infraestructura como código o directamente mediante Azure Monitor.

Métricas

Azure Front Door registra automáticamente las métricas para ayudarle a comprender el comportamiento de WAF.

Para acceder a las métricas del firewall de aplicaciones web:

  1. Inicie sesión en Azure Portal y vaya a su perfil de Azure Front Door.
  2. En el panel de más a la izquierda, en Supervisión, seleccione la pestaña Métricas.
  3. Agregue la métrica Recuento de solicitudes del firewall de aplicaciones web para hacer un seguimiento del número de solicitudes que coinciden con las reglas de WAF.

Puede crear filtros personalizados en función de los tipos de acción y los nombres de las reglas. Las métricas incluyen solicitudes con todas las acciones excepto Log.

Captura de pantalla que muestra las métricas de un WAF de Azure Front Door.

Métricas de desafío de JavaScript (versión preliminar)

Para acceder a las métricas de WAF de desafío de JavaScript:

  • Agregue la métrica JS Challenge Request Count del firewall de aplicaciones web para hacer un seguimiento del número de solicitudes que coinciden con las reglas de WAF de desafío de JavaScript.

Los filtros siguientes se proporcionan como parte de esta métrica:

  • PolicyName (Nombre de directiva): este es el nombre de la directiva de WAF
  • Rule (Regla): puede ser cualquier regla personalizada o regla de bot
  • Action (Acción): hay cuatro valores posibles para la acción de desafío de JS
    • Issued (Emitido): el desafío de JS se invocó por primera vez
    • Passed (Pasado): el cálculo del desafío de JS se realizó correctamente y se recibió una respuesta
    • Valid (Válido): la cookie de validez del desafío de JS estaba presente
    • Blocked (Bloqueado): error en el cálculo del desafío de JS

Captura de pantalla en la que se muestran las métricas de desafío de JavaScript.

Registros y diagnósticos

El WAF de Azure Front Door proporciona informes detallados sobre cada solicitud y amenaza que detecta. El registro se integra con los registros de diagnóstico y las alertas de Azure mediante los registros de Azure Monitor.

Estos registros no están habilitados de forma predeterminada. Debe habilitar los registros de manera explícita. Puede configurar los registros en Azure Portal mediante la pestaña Configuración de diagnóstico.

Captura de pantalla que muestra cómo habilitar los registros de WAF.

Si el registro está habilitado y se desencadena una regla WAF, los patrones coincidentes se registran en texto sin formato para ayudarle a analizar y depurar el comportamiento de la directiva WAF. Puede usar exclusiones para ajustar las reglas y excluir los datos que quiera excluir de los registros. Para obtener más información, vea Listas de exclusión de Web en Front Door.

Puede habilitar tres tipos de registros de Azure Front Door:

  • Registros de WAF
  • Registros de acceso
  • Registros de sondeo de estado

Los registros de actividad se habilitan de manera predeterminada y proporcionan visibilidad sobre las operaciones realizadas en los recursos de Azure, como los cambios de configuración en el perfil de Azure Front Door.

Registros de WAF

El registro FrontDoorWebApplicationFirewallLog incluye solicitudes que coinciden con una regla de WAF.

El registro FrontdoorWebApplicationFirewallLog incluye cualquier solicitud que coincida con una regla de WAF.

En la tabla siguiente se muestran los valores registrados para cada parámetro.

Propiedad Descripción
Acción Acción realizada en la solicitud. Los registros incluyen solicitudes con todas las acciones. Las acciones son:
  • Allow y allow: se permitió que la solicitud continuara procesando.
  • Block y block: la solicitud coincide con una regla WAF configurada para bloquear la solicitud. Como alternativa, se alcanzó el umbral de puntuación de anomalías y se bloqueó la solicitud.
  • Log y log: la solicitud coincide con una regla WAF configurada para usar la acción Log.
  • AnomalyScoring y logandscore: la solicitud coincide con una regla de WAF. La regla contribuye a la puntuación de anomalías. Es posible que la solicitud se bloquee o no en función de otras reglas que se ejecuten en la misma solicitud.
  • JS Challenge y JSChallengeIssued: emitido debido a la no validez o la falta de autorización del desafío, falta la respuesta.

    El registro se crea cuando un cliente solicita acceso a una aplicación web por primera vez y no se ha desafiado anteriormente. Este cliente recibe la página de desafío de JS y continúa con el proceso del desafío de JS. Tras el cálculo correcto, al cliente se le concede la cookie de validez.
  • JS Challenge y JSChallengePass: se pasa debido a una respuesta de desafío válida.

    Este registro se crea cuando un cliente resuelve el desafío de JS y vuelve a enviar la solicitud con la respuesta correcta. En este caso, el WAF de Azure valida la cookie y continúa procesando las reglas restantes sin generar otro desafío de JS.
  • JS Challenge y JSChallengeValid: se registra o pasa debido a un desafío válido.

    Este registro se crea cuando un cliente ha resuelto previamente un desafío. En este caso, el WAF de Azure registra la solicitud y continúa con el proceso de las reglas restantes.
  • JS Challenge y JSChallengeBlock: bloqueado

    Este registro se crea cuando se produce un error en el cálculo del desafío de JS.
ClientIP Dirección IP del cliente que realizó la solicitud. Si había un encabezado X-Forwarded-For en la solicitud, la dirección IP del cliente se toma de ese campo de encabezado.
ClientPort Puerto IP del cliente que realizó la solicitud.
Detalles Más detalles sobre la solicitud, incluidas las amenazas detectadas.
matchVariableName: nombre del parámetro HTTP de la solicitud coincidente, por ejemplo, nombres de encabezados (hasta 100 caracteres como máximo).
matchVariableValue: valores que desencadenaron la coincidencia (hasta 100 caracteres como máximo).
Host Encabezado Host de la solicitud.
Directiva El nombre de la política WAF que procesó la solicitud.
PolicyMode Modo de operaciones de la directiva WAF. Los valores posibles son Prevention y Detection.
RequestUri URI completo de la solicitud.
RuleName El nombre de la regla de WAF que coincidió con la solicitud.
SocketIp La dirección IP de origen que WAF detectó. Esta dirección IP se basa en la sesión TCP y no tiene en cuenta ningún encabezado de solicitud.
TrackingReference La cadena de referencia única que identifica una solicitud servida por Front Door. Este valor se envía al cliente en el encabezado de respuesta X-Azure-Ref. Use este campo cuando busque una solicitud específica en el registro.

En el siguiente ejemplo de consulta se muestran las solicitudes que bloqueó el WAF de Azure Front Door:

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorWebApplicationFirewallLog" 
| where action_s == "Block" 
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"

En el fragmento de código a continuación se muestra una entrada de registro de ejemplo, que incluye la razón por la que se bloqueó la solicitud:

{
  "time": "2020-06-09T22:32:17.8376810Z",
  "category": "FrontdoorWebApplicationFirewallLog",
  "operationName": "Microsoft.Cdn/Profiles/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"
        }
      ]
    }
  }
}
{
  "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"
        }
      ]
    }
  }
}

Para más información sobre los registros de Azure Front Door, consulte Supervisión de métricas y registros en Azure Front Door.

Pasos siguientes

Obtenga más información acerca de Azure Front Door.