Solución de problemas de Web Application Firewall (WAF) para Azure Application Gateway

Resumen

Este artículo le ayuda a solucionar problemas de Web Application Firewall (WAF) para Azure Application Gateway cuando se bloquean las solicitudes legítimas, por lo que puede permitir el tráfico válido al tiempo que mantiene la protección.

Empiece por revisar la información general de WAF y la documentación de configuración de WAF y asegúrese de que la supervisión de WAF esté habilitada. En estos artículos se explica cómo funciona waf, cómo funcionan los conjuntos de reglas y cómo acceder a los registros de WAF.

Los conjuntos de reglas de OWASP están diseñados para que sean estrictos desde el principio y para ser ajustados según las necesidades específicas de la aplicación u organización que use WAF. Es completamente normal y, en muchos casos, es de esperar crear exclusiones, reglas personalizadas e incluso desactivar reglas que podrían causar problemas o falsos positivos. Las directivas por sitio y por URI permiten que estos cambios solo afecten a sitios o URI específicos. Por lo tanto, los cambios no deben afectar a otros sitios que podrían no encontrarse con los mismos problemas.

Comprender los registros de WAF

El propósito de los registros de WAF es mostrar cada solicitud que WAF coincide o bloquea. Es un registro de todas las solicitudes evaluadas que se emparejan o se bloquean. Si nota que el WAF bloquea una solicitud que no debería (un falso positivo), puede tomar algunas medidas. En primer lugar, restrinja y busque la solicitud específica. Examine los registros para buscar el identificador URI, la marca de tiempo o el identificador de transacción específicos de la solicitud. Cuando encuentre las entradas de registro asociadas, puede empezar a actuar sobre los falsos positivos.

Por ejemplo, supongamos que tiene un tráfico legítimo que contiene la cadena 1=1 que desea que pase a través del WAF. Si prueba la solicitud, el WAF bloquea el tráfico que contiene su cadena 1=1 en cualquier parámetro o campo. Esta cadena se suele asociar a un ataque por inyección de código SQL. Puede examinar los registros y ver la marca de tiempo de la solicitud y las reglas que se han bloqueado o que coinciden.

En el ejemplo siguiente, puede ver que se desencadenan cuatro reglas durante la misma solicitud (mediante el campo TransactionId). La primera dice que coincide porque el usuario usó una dirección IP numérica para la solicitud, lo que aumenta la puntuación de anomalías en tres, ya que es una advertencia. La siguiente regla que coincide es 942130, que es la que está buscando. Puede ver el 1=1 en el campo details.data. Esto vuelve a aumentar la puntuación de anomalía en tres, ya que también es una advertencia. Por lo general, cada regla que tenga la acción Coincide con aumenta la puntuación de anomalías y, en este momento, la puntuación de anomalías es seis. Para obtener más información, consulte Modo de puntuación de anomalías.

Las dos entradas finales del registro muestran que la solicitud se bloqueó porque la puntuación de anomalía era lo suficientemente alta. Estas entradas tienen una acción diferente a las otras dos. Muestran que realmente bloquearon la solicitud. Estas reglas son obligatorias y no se pueden deshabilitar. No considere estas reglas como simples reglas, sino más bien como infraestructura central del funcionamiento interno del WAF.

{ 
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": { 
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "920350",
        "message": "Host header is a numeric IP address",
        "action": "Matched",
        "site": "Global",
        "details": { 
            "message": "Warning. Pattern match \\\"^[\\\\\\\\d.:]+$\\\" at REQUEST_HEADERS:Host. ",
            "data": "40.90.218.160",
            "file": "rules\/REQUEST-920-PROTOCOL-ENFORCEMENT.conf\\\"",
            "line": "791" 
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt" 
    } 
} 
{ 
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": { 
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "942130",
        "message": "SQL Injection Attack: SQL Tautology Detected.",
        "action": "Matched",
        "site": "Global",
        "details": { 
            "message": "Warning. Pattern match \\\"(?i:([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)([\\\\\\\\d\\\\\\\\w]++)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?:(?:=|\\u003c=\\u003e|r?like|sounds\\\\\\\\s+like|regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)\\\\\\\\2|(?:!=|\\u003c=|\\u003e=|\\u003c\\u003e|\\u003c|\\u003e|\\\\\\\\^|is\\\\\\\\s+not|not\\\\\\\\s+like|not\\\\\\\\s+regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?!\\\\\\\\2)([\\\\\\\\d\\\\\\\\w]+)))\\\" at ARGS:text1. ",
            "data": "Matched Data: 1=1 found within ARGS:text1: 1=1",
            "file": "rules\/REQUEST-942-APPLICATION-ATTACK-SQLI.conf\\\"",
            "line": "554" 
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt" 
    } 
} 
{ 
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": { 
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "",
        "ruleSetVersion": "",
        "ruleId": "0",
        "message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Score: 8)",
        "action": "Blocked",
        "site": "Global",
        "details": { 
            "message": "Access denied with code 403 (phase 2). Operator GE matched 5 at TX:anomaly_score. ",
            "data": "",
            "file": "rules\/REQUEST-949-BLOCKING-EVALUATION.conf\\\"",
            "line": "57" 
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt" 
    } 
} 
{ 
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": { 
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "",
        "ruleSetVersion": "",
        "ruleId": "0",
        "message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Inbound Score: 8 - SQLI=5,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0): SQL Injection Attack: SQL Tautology Detected.",
        "action": "Blocked",
        "site": "Global",
        "details": { 
            "message": "Warning. Operator GE matched 5 at TX:inbound_anomaly_score. ",
            "data": "",
            "file": "rules\/RESPONSE-980-CORRELATION.conf\\\"",
            "line": "73" 
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt" 
    }
}

Corrección de falsos positivos

Con esta información y el conocimiento de que la regla 942130 es la que coincide con la 1=1 cadena, puede realizar algunos pasos para impedir que esta regla bloquee el tráfico:

  • Use una lista de exclusión. Para obtener más información sobre las listas de exclusión, consulte Listas de exclusión de WAF.

  • Desactiva la regla.

Mitigue los falsos positivos del nivel de paranoia 2

En OWASP CRS 3.2, las reglas de inyección SQL 942430, 942440 y 942450 pertenecen al Nivel de paranoia 2 (PL2). Si los registros de WAF muestran que una solicitud de autenticación legítima coincide con una de estas reglas, identifique el campo de solicitud de contribución antes de agregar una exclusión. Confirme que la solicitud es legítima e identifique su identificador de regla y el conjunto de reglas configurados. Para obtener descripciones y reemplazos específicos por versión, consulte grupos de reglas y reglas de WAF. No habilite una regla inactiva ni cambie los conjuntos de reglas solo para seguir este ejemplo.

  1. En Log Analytics, use la siguiente consulta si la configuración de diagnóstico envía registros del firewall a la tabla AzureDiagnostics. Sustituya el identificador del recurso y el periodo de tiempo por la puerta de enlace y el intervalo que desea investigar. Estos registros pueden contener datos de solicitud confidenciales; no comparta valores de campo ni tokens de autenticación.

Ejecute la siguiente consulta.

AzureDiagnostics
| where TimeGenerated > ago(1h)
| where _ResourceId =~ "<application-gateway-resource-id>"
| where Category == "ApplicationGatewayFirewallLog"
| where ruleId_s in ("942430", "942440", "942450")
| project TimeGenerated, transactionId_g, requestUri_s,
    ruleId_s, action_s, details_message_s, details_data_s
| order by TimeGenerated desc
  1. Busque la transacción correspondiente a la solicitud fallida. Una regla de contribución puede tener la acción Matched, mientras que una regla independiente de puntuación de anomalías bloquea la transacción. Para inspeccionar todas las coincidencias de esa transacción, reemplace el filtro rule-ID por un filtro en transactionId_g. No excluya una regla de puntuación de anomalías en lugar de la regla de contribución.
  2. En caso de falso positivo confirmado, configure una exclusión para el campo específico y solo los ID de las reglas contribuyentes. Las exclusiones por regla requieren un conjunto de reglas de directiva waf compatible, como OWASP CRS 3.2. Use Equals para el selector de campos y conserve otras reglas y la configuración de directiva existente. Consulte el procedimiento de la CLI y de PowerShell para una regla específica y los ejemplos de exclusión para cada regla. Para la detección de reglas, consulte la guía de personalización de PowerShell y la guía de personalización de la CLI.
  3. Vuelva a leer la directiva para confirmar que la exclusión contiene la versión del conjunto de reglas, el grupo, los identificadores de regla, la variable de coincidencia y el selector. Una exclusión global que ya cubre ese campo sigue siendo aplicable; agregar una exclusión más estrecha no la quita. Revise cualquier exclusión amplia existente por separado en lugar de borrar todas las exclusiones.
  4. Repita la misma solicitud legítima y compruebe su respuesta y los nuevos registros de transacciones. Confirme que la regla seleccionada ya no coincide con el campo excluido e investigue cualquier otra regla de contribución si la solicitud permanece bloqueada. Una consulta vacía sin tráfico reproducible ni una recopilación de datos de diagnóstico operativa no demuestra que haya habido éxito. Compruebe que los campos no relacionados permanecen inspeccionados en un entorno de prueba controlado.

No excluya automáticamente los tres identificadores ni todos los campos de autenticación. Mantenga el WAF en modo de prevención para este cambio específico. Si necesita deshacerlo, quite solo la exclusión limitada al ámbito de la regla que añadió después de revisar la política; conserve las exclusiones preexistentes.

Usar una lista de exclusión

Para tomar una decisión informada sobre el control de un falso positivo, familiarícese con las tecnologías que usa la aplicación. Por ejemplo, si tu pila tecnológica no incluye un servidor SQL y estás recibiendo falsos positivos relacionados con esas reglas, deshabilitar esas reglas no debilita necesariamente tu seguridad.

Una exclusión omite un atributo de solicitud seleccionado de la inspección. Una exclusión global se aplica a todas las reglas administradas, mientras que una exclusión por regla solo se aplica a las reglas seleccionadas en un conjunto de reglas admitido. Ambas se aplican allí donde esté asociada la directiva WAF, por lo que verifique las aplicaciones y rutas de la directiva antes de cambiarla. Por ejemplo, excluir un campo puede crear un riesgo cuando 1=1 es válido para una aplicación, pero no para otra que comparte la directiva. Es preferible una exclusión de alcance limitado a excluir la solicitud completa.

En ocasiones, determinados parámetros se envían al WAF de un modo que podría no ser intuitivo. Por ejemplo, hay un token que se envía al autenticarse con Microsoft Entra ID. __RequestVerificationToken normalmente se pasa como una cookie de solicitud. Sin embargo, en algunos casos en los que las cookies están deshabilitadas, este token también se pasa como un atributo de solicitud o arg. Si esto sucede, debe asegurarse de que __RequestVerificationToken se agregue también a la lista de exclusión como un nombre de atributo Request .

Captura de pantalla de la configuración de la lista de exclusión de WAF en la Azure portal.

En este ejemplo, desea excluir el nombre del atributo Request que es igual a text1. Este nombre de atributo es evidente porque puede ver el nombre del atributo en los registros de firewall: datos: Datos coincidentes: 1=1 encontrados en ARGS:text1: 1=1. El atributo es text1. También puede encontrar este nombre de atributo de algunas otras maneras, consulte Búsqueda de nombres de atributo de solicitud.

Captura de pantalla de las opciones de configuración de WAF para listas de exclusión en Application Gateway.

Puede crear exclusiones para WAF en Application Gateway en distintos niveles de ámbito. Para obtener más información, consulte Web Application Firewall listas de exclusión.

Deshabilitar reglas

Otra forma de gestionar un falso positivo es deshabilitar la regla que coincidió con la entrada que el WAF consideró malintencionada. Puesto que ha analizado los registros de WAF y ha reducido la regla a 942130, puede deshabilitarla en el portal de Azure. Consulte Reglas de firewall de aplicaciones web personalizadas a través del portal de Azure.

Si sabe que todo el tráfico que contiene una determinada condición y que normalmente se bloquea es tráfico válido, puede deshabilitar esa regla para todo el WAF. Sin embargo, si solo hay tráfico válido en un caso de uso específico, usted abre una vulnerabilidad al deshabilitar esa regla para todo el WAF, ya que afecta a toda la configuración global.

Para usar Azure PowerShell, consulte Personalización de reglas de firewall de aplicaciones web mediante PowerShell. Para usar CLI de Azure, consulte Personalización de reglas de firewall de aplicaciones web a través del CLI de Azure.

Registro de archivos HAR

Puede usar el explorador o una herramienta externa como Fiddler para registrar archivos de archivo HTTP (HAR). Los archivos HAR contienen información sobre las solicitudes y respuestas que realiza el explorador al cargar una página web. Esta información puede ser útil para solucionar problemas de WAF.

Sugerencia

Es recomendable que el archivo HAR esté listo al ponerse en contacto con el soporte técnico. El equipo de soporte técnico puede usar el archivo HAR para ayudar a diagnosticar el problema.

Para registrar y guardar un archivo HAR en Microsoft Edge, siga estos pasos:

  1. Presione F12 o Ctrl+Mayús+I para abrir edge Herramientas de desarrollo. También puede abrir las herramientas en el menú de la barra de herramientas en Más herramientas>Herramientas de desarrollo.

  2. En la pestaña Consola , seleccione Borrar consola o presione Ctrl+L.

Captura de pantalla de la pestaña Consola de Microsoft Edge developer tools.

  1. Seleccione la pestaña Red .

  2. Seleccione Borrar registro de red o presione Ctrl+L y, a continuación, seleccione Grabar registro de red si no se está grabando.

Captura de pantalla de la pestaña Red de herramientas para desarrolladores de Microsoft Edge.

  1. Cargue la página web que desea diagnosticar y que está protegida por su WAF.

  2. Para detener la grabación, seleccione Detener el registro de red.

  3. Seleccione Exportar HAR (saneado)... y guarde el archivo HAR.

Captura de pantalla de la opción Exportar HAR (saneado) en las herramientas de desarrollo de Microsoft Edge.

Buscar nombres de atributo de solicitud

Utilice Fiddler para inspeccionar solicitudes individuales y determinar cómo se llaman los campos específicos de una página web. El uso de esta información le ayuda a excluir determinados campos de la inspección mediante listas de exclusión.

En este ejemplo, puede ver que el campo donde se especificó la cadena 1=1 se denomina text1.

Captura de pantalla de Fiddler Web Debugger. En la pestaña Raw, 1=1 está visible después del nombre text1.

Se trata de un campo que se puede excluir. Para más información sobre las lista de exclusión, consulte Listas de exclusión del firewall de aplicaciones web. Puede excluir la evaluación en este caso configurando la siguiente exclusión:

Captura de pantalla de una exclusión de WAF configurada para un atributo de solicitud específico.

También puede examinar los registros de firewall para obtener la información para ver lo que necesita agregar a la lista de exclusión. Para habilitar el registro, consulte Estado del back-end, registros de recursos y métricas de Application Gateway.

Examine el registro del firewall y vea el archivo PT1H.json durante la hora en que se produjo la solicitud que desea inspeccionar.

En este ejemplo, verá que tiene cuatro reglas con el mismo TransactionID y que todas se produjeron exactamente al mismo tiempo:

{
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "920350",
        "message": "Host header is a numeric IP address",
        "action": "Matched",
        "site": "Global",
        "details": {
            "message": "Warning. Pattern match \\\"^[\\\\\\\\d.:]+$\\\" at REQUEST_HEADERS:Host. ",
            "data": "40.90.218.160",
            "file": "rules\/REQUEST-920-PROTOCOL-ENFORCEMENT.conf\\\"",
            "line": "791"
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
    }
}
{
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "942130",
        "message": "SQL Injection Attack: SQL Tautology Detected.",
        "action": "Matched",
        "site": "Global",
        "details": {
            "message": "Warning. Pattern match \\\"(?i:([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)([\\\\\\\\d\\\\\\\\w]++)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?:(?:=|\\u003c=\\u003e|r?like|sounds\\\\\\\\s+like|regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)\\\\\\\\2|(?:!=|\\u003c=|\\u003e=|\\u003c\\u003e|\\u003c|\\u003e|\\\\\\\\^|is\\\\\\\\s+not|not\\\\\\\\s+like|not\\\\\\\\s+regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?!\\\\\\\\2)([\\\\\\\\d\\\\\\\\w]+)))\\\" at ARGS:text1. ",
            "data": "Matched Data: 1=1 found within ARGS:text1: 1=1",
            "file": "rules\/REQUEST-942-APPLICATION-ATTACK-SQLI.conf\\\"",
            "line": "554"
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
    }
}
{
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "",
        "ruleSetVersion": "",
        "ruleId": "0",
        "message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Score: 8)",
        "action": "Blocked",
        "site": "Global",
        "details": {
            "message": "Access denied with code 403 (phase 2). Operator GE matched 5 at TX:anomaly_score. ",
            "data": "",
            "file": "rules\/REQUEST-949-BLOCKING-EVALUATION.conf\\\"",
            "line": "57"
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
    }
}
{
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "",
        "ruleSetVersion": "",
        "ruleId": "0",
        "message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Inbound Score: 8 - SQLI=5,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0): SQL Injection Attack: SQL Tautology Detected.",
        "action": "Blocked",
        "site": "Global",
        "details": {
            "message": "Warning. Operator GE matched 5 at TX:inbound_anomaly_score. ",
            "data": "",
            "file": "rules\/RESPONSE-980-CORRELATION.conf\\\"",
            "line": "73"
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
    }
}

Con el conocimiento de cómo funcionan los conjuntos de reglas de CRS y de que el conjunto de reglas de CRS 3.0 funciona con un sistema de puntuación de anomalías (consulte Web Application Firewall para Azure Application Gateway) sabe que las dos reglas inferiores con la action: Blocked propiedad se bloquean en función de la puntuación total de anomalías. Las reglas en las que centrarse son las dos principales.

La primera entrada se registra porque el usuario usó una dirección IP numérica para navegar a Application Gateway, que puede omitir en este caso.

La segunda entrada (regla 942130) se ve en los detalles a medida que coincide con un patrón (1=1)y el campo se denomina text1. Siga los mismos pasos anteriores para excluir el nombre del atributo de solicitud que es igual a text1.

Buscar nombres de encabezados de solicitud

Use Fiddler para encontrar los nombres de los encabezados de solicitud. En la captura de pantalla siguiente, puede ver los encabezados de esta solicitud GET, que incluyen Content-Type, User-Agent y otros encabezados.

Captura de pantalla de Fiddler Web Debugger. La pestaña Raw muestra los detalles del encabezado de solicitud, como la conexión, el tipo de contenido y el agente de usuario.

También puede usar las herramientas de desarrollo en Microsoft Edge o Google Chrome para ver los encabezados de solicitud y respuesta. Para obtener más información, vaya a Registrar archivos HAR.

Si la solicitud contiene cookies, seleccione la pestaña Cookies para verlas en Fiddler.

Restricción de parámetros globales para eliminar los falsos positivos

  • Deshabilitar la inspección del cuerpo de la solicitud

    Al establecer Inspeccionar el cuerpo de la solicitud en Desactivado, su WAF no evalúa los cuerpos de las solicitudes de su tráfico. Esta configuración es útil si sabe que los cuerpos de las solicitudes no son maliciosos para la aplicación.

    Al deshabilitar esta opción, solo el cuerpo de la solicitud omite la inspección. Los encabezados y cookies se siguen inspeccionando, a menos que excluya los individuales mediante la funcionalidad de la lista de exclusión.

  • Deshabilitar el límite máximo de tamaño del cuerpo de la solicitud

    Cuando deshabilita el límite máximo del cuerpo de la solicitud, WAF puede procesar cuerpos de solicitud grandes sin rechazarlos por superar el límite de tamaño. Esta configuración es útil si tiene solicitudes grandes con regularidad.

    Al deshabilitar esta opción, el cuerpo de la solicitud solo se inspecciona hasta el límite máximo de inspección del cuerpo de la solicitud. Si hay contenido malicioso en la solicitud más allá del límite máximo de inspección del cuerpo de la solicitud, el WAF no lo detecta.

  • Deshabilitación de los límites máximos de tamaño de archivo

    Al deshabilitar los límites de tamaño de archivo para el WAF, se pueden cargar archivos grandes sin que WAF rechace estas cargas de archivos. Al permitir que se carguen archivos grandes, aumenta el riesgo de que el back-end se agote. Si sabe que el tamaño máximo que puede tener una carga de archivos, establezca un límite de tamaño para las cargas de archivos ligeramente por encima del tamaño máximo esperado. Limitar el tamaño del archivo a un caso de uso normal para la aplicación es otra manera de evitar ataques. Sin embargo, si las cargas de archivos superan regularmente el límite máximo de tamaño de carga de archivos ejecutable, es posible que tenga que deshabilitar los límites de tamaño de carga de archivos por completo para evitar falsos positivos.

    Nota:

    Si sabe que la aplicación nunca necesita ninguna carga de archivos por encima de un tamaño determinado, puede restringir ese tamaño estableciendo un límite.

    Advertencia

    Al asignar un nuevo conjunto de reglas administrado a una directiva waf, todas las personalizaciones anteriores de los conjuntos de reglas administrados existentes, como el estado de regla, las acciones de regla y las exclusiones de nivel de regla, se restablecen a los nuevos valores predeterminados del conjunto de reglas administrados. Sin embargo, las reglas personalizadas, la configuración de directiva y las exclusiones globales no se ven afectadas durante la nueva asignación del conjunto de reglas.

Métricas de firewall (solo WAF v1)

En el caso de los firewalls de aplicaciones web v1, el portal ahora proporciona las siguientes métricas:

  1. Web Application Firewall Recuento de solicitudes bloqueadas El número de solicitudes bloqueadas.
  2. Firewall de aplicaciones web Recuento de reglas bloqueadas Todas las reglas que coinciden y bloquean la solicitud.
  3. Web Application Firewall Distribución total de reglas Todas las reglas que coinciden durante la evaluación.

Para habilitar las métricas, seleccione la pestaña Métricas en el portal y seleccione una de las tres métricas.

References