Protección de aplicaciones web con Azure Web Application Firewall (WAF)
14/01/2025
Este artículo técnico y educativo tiene como objetivo guiar a los analistas de seguridad, administradores de TI e ingenieros de sistemas en la implementación y configuración de Azure Web Application Firewall (WAF) para proteger las aplicaciones web contra ataques comunes. En un panorama digital donde las aplicaciones web son la puerta de entrada a muchas empresas, se han convertido en objetivos frecuentes de una variedad de ataques cibernéticos, como inyección SQL, secuencias de comandos entre sitios (XSS) y otras vulnerabilidades Top 10 de OWASP. Azure WAF proporciona una capa esencial de protección para mitigar estos riesgos, garantizando la disponibilidad, integridad y confidencialidad de los datos [1].
Introducción
Las aplicaciones web son componentes críticos de la infraestructura de TI de prácticamente todas las organizaciones. Sin embargo, su exposición a Internet los hace vulnerables a ataques que pueden comprometer datos, interrumpir servicios y dañar la reputación de la empresa. Un firewall de aplicaciones web (WAF) actúa como un proxy inverso, inspeccionando el tráfico HTTP/HTTPS que llega y sale de la aplicación web, identificando y bloqueando solicitudes maliciosas antes de que lleguen al servidor de aplicaciones. Azure WAF, disponible como característica de Azure Application Gateway o Azure Front Door, proporciona protección centralizada y escalable para sus aplicaciones web alojadas en Azure o incluso en entornos híbridos [2].
Esta guía práctica cubrirá los conceptos fundamentales de Azure WAF, sus modos de operación (Detección y Prevención), la configuración de políticas WAF con conjuntos de reglas administrados (OWASP Core Rule Set - CRS) y reglas personalizadas. Se proporcionarán instrucciones paso a paso para implementar WAF con Azure Application Gateway, probar su efectividad contra ataques comunes y validar los resultados, además de discutir las mejores prácticas y sugerencias para la solución de problemas. El objetivo es permitir al lector configurar y administrar Azure WAF de forma autónoma, profesional y confiable, protegiendo sus aplicaciones web contra las amenazas más frecuentes.
¿Por qué Azure WAF es crucial para la protección de aplicaciones web?
- Protección integral: defiende contra ataques web comunes, incluida la inyección SQL, secuencias de comandos entre sitios (XSS), inclusión de archivos, ataques de bot y otras vulnerabilidades principales de OWASP 10 [3].
- Reglas administradas: utiliza conjuntos de reglas administradas (como OWASP CRS) que Microsoft actualiza automáticamente, lo que garantiza la protección contra las amenazas más recientes sin intervención manual.
- Reglas personalizadas: permite la creación de reglas personalizadas para cumplir con los requisitos de seguridad específicos de la aplicación, bloqueando patrones de tráfico específicos o protegiendo contra vulnerabilidades no cubiertas por las reglas administradas.
- Modos de operación flexibles: Opera en modo
Detección(solo monitorea y registra ataques) oPrevención(bloquea ataques activamente), lo que permite un control gradual de la implementación. - Integración nativa con Azure: se integra perfectamente con Azure Application Gateway (para aplicaciones internas) y Azure Front Door (para aplicaciones globales), ofreciendo una solución completa de entrega de aplicaciones con seguridad integrada.
- Escalabilidad y alta disponibilidad: benefíciese de la escalabilidad y la alta disponibilidad de los servicios de entrega de aplicaciones de Azure, lo que garantiza que la protección esté siempre activa y sea eficaz.
- Cumplimiento: ayuda a las organizaciones a cumplir con los requisitos reglamentarios y los estándares de seguridad que requieren protección de las aplicaciones web.
Requisitos previos
Para implementar Azure WAF, necesitará los siguientes elementos:
- Suscripción activa de Azure: una suscripción de Azure para crear y administrar recursos.
- Acceso administrativo: una cuenta con los permisos necesarios para crear y administrar recursos como Application Gateways, Front Doors y políticas WAF (por ejemplo, "Colaborador" o "Administrador de red").
- Aplicación web existente: una aplicación web (alojada en Azure o en otro lugar) que desea proteger. Para esta guía, asumiremos una aplicación web simple a la que se accederá a través de Application Gateway.
- Red virtual (VNet) y subredes: una red virtual y subredes configuradas para Application Gateway y la aplicación web.
Paso a paso: Implementación de Azure WAF con Application Gateway
Configuremos Azure WAF para proteger unaplicación web mediante Azure Application Gateway.
1. Creación de una puerta de enlace de aplicaciones de Azure con WAF
- Abra su navegador y navegue hasta el portal de Azure:
https://portal.azure.com. - Inicie sesión con una cuenta que tenga los permisos necesarios.
- En el campo de búsqueda superior, escriba "Application Gateway" y selecciónelo de los resultados.
-
Haga clic en
+ Crear. -
Conceptos básicos:
- Suscripción: Selecciona tu suscripción.
- Grupo de recursos: cree un nuevo grupo de recursos (por ejemplo,
rg-waf-appgw) o seleccione uno existente. - Nombre de Application Gateway: proporcione un nombre (por ejemplo:
appgw-waf-01). - Región: Seleccione la región.
- Nivel: seleccione
Estándar v2(WAF solo está disponible en el nivel v2). - Habilitar WAF: seleccione
Sí. - Nombre de la política WAF: Asigne un nombre a la política WAF (por ejemplo,
wafpolicy-appgw-01). - Modo WAF: comience con "Detección" para monitorear y ajustar las reglas antes de pasar a "Prevención".
-
Haga clic en
Siguiente: Interfaces. -
Frontales:
- Tipo de dirección IP frontal: seleccione "Pública".
- Dirección IP pública: Haga clic en
+Agregar nuevoy asigne un nombre a la IP pública (por ejemplo,pip-appgw-waf).
-
Haga clic en
Siguiente: Backends. -
Servicios finales:
- Haga clic en
+Agregar grupo de backend. - Nombre del grupo de backend: asígnele un nombre (por ejemplo,
app-backend-pool). - Agregar grupo de backend sin destinos: seleccione "No".
- Tipo de destino: Seleccione
Dirección IP o FQDN. - Dirección IP/FQDN: ingrese la dirección IP o FQDN de su aplicación web (por ejemplo,
10.0.0.4para una VM en VNet o el FQDN de un App Service). - Haga clic en "Agregar".
- Haga clic en
-
Haga clic en
Siguiente: Configuración. -
Configuración:
- Configuración de enrutamiento: Haga clic en
+Agregar regla de enrutamiento. - Nombre de la regla: asígnele un nombre (por ejemplo:
regla-http). - Prioridad: Deje el valor predeterminado.
- Oyente:
- Nombre del oyente: proporcione un nombre (por ejemplo:
oyente-http). - Dirección IP frontend: Seleccione la IP pública creada.
- Protocolo: Seleccione
HTTP(para comenzar, puede agregar HTTPS más tarde). - Puerto:
80.
- Nombre del oyente: proporcione un nombre (por ejemplo:
- Objetivos de backend:
- Tipo de destino: seleccione
Grupo de backend. - Grupo de backend: seleccione
app-backend-pool. - Configuración de backend: Haga clic en
+Agregar nuevo.- Nombre de la configuración del backend: asígnele un nombre (por ejemplo,
http-setting). - Protocolo de backend:
HTTP. - Puerto backend:
80(o el puerto de su aplicación web). - Usar sonda personalizada: seleccione
No(para este ejemplo simple). - Haga clic en "Agregar".
- Nombre de la configuración del backend: asígnele un nombre (por ejemplo,
- Tipo de destino: seleccione
- Haga clic en "Agregar" en la regla de enrutamiento.
- Configuración de enrutamiento: Haga clic en
-
Haga clic en
Siguiente: Etiquetas. - Haga clic en
Siguiente: Revisar + crear. -
Revise la configuración y haga clic en "Crear".
- Explicación: Este proceso crea una puerta de enlace de aplicaciones con un WAF asociado. El WAF comenzará a inspeccionar el tráfico en modo "Detección".
2. Configuración de reglas WAF administradas y personalizadas
Después de la implementación, puede ajustar la política WAF.
- En Azure Portal, navegue hasta su Application Gateway (
appgw-waf-01). - En el panel de navegación izquierdo, en "Configuración", seleccione Firewall de aplicaciones web.
-
Haga clic en el nombre de su política WAF (
wafpolicy-appgw-01). -
Modo de política: en la sección "Descripción general", puede cambiar el "Modo" de "Detección" a "Prevención" cuando esté seguro de que sus reglas no están bloqueando el tráfico legítimo.
-
Reglas administradas:
- En el panel de navegación izquierdo de la política WAF, seleccione Reglas administradas.
- Asegúrese de que el
Conjunto de reglas predeterminado de OWASP(por ejemplo,OWASP_CRS/3.2) estéHabilitado. - Puede desactivar reglas específicas dentro del conjunto administrado si causan falsos positivos, pero hágalo con precaución y solo después de una cuidadosa consideración.
-
Reglas personalizadas:
- En el panel de navegación izquierdo de la política WAF, seleccione Reglas personalizadas.
- Haga clic en
+Agregar regla personalizada. - Nombre de la regla: Dale un nombre (ej:
BloquearIPMalicioso). - Prioridad: establece una prioridad (los números más pequeños tienen mayor prioridad).
- Tiporegla:
Coincidencia. - Condición:
- Tipo de variable:
Dirección remota. - Operador:
IPMatch. - Valor: Ingrese la dirección IP o el rango CIDR que desea bloquear (por ejemplo,
192.168.1.10/32).
- Tipo de variable:
-
Acción: Seleccione
Bloquear. -
Explicación: Las reglas personalizadas le permiten definir la lógica de bloqueo según criterios específicos, como direcciones IP, encabezados HTTP, cadenas de consulta, etc.
-
Haga clic en Agregar y luego en Guardar en la política WAF.
3. Monitoreo del WAF y revisión de registros
El seguimiento es esencial para comprender la eficacia del WAF y ajustar las políticas.
- En Azure Portal, navegue hasta su Application Gateway (
appgw-waf-01). - En el panel de navegación izquierdo, en "Monitoreo", seleccione Registros de diagnóstico.
- Haga clic en
+Agregar configuración de diagnóstico. - Nombre de configuración de diagnóstico: asígnele un nombre (por ejemplo:
diag-waf). - Categorías de registro: marque
ApplicationGatewayAccessLogyApplicationGatewayFirewallLog. - Detalles del destino: seleccione "Enviar al espacio de trabajo de Log Analytics" y elija su espacio de trabajo.
-
Haga clic en Guardar.
-
Después de unos minutos, navegue hasta su espacio de trabajo de Log Analytics.
- En el panel de navegación izquierdo, seleccione Registros.
- Utilice consultas KQL (Kusto Query Language) para analizar registros WAF:
- Para ver todos los eventos WAF:
kusto AzureDiagnostics | donde Proveedor de Recursos == "MICROSOFT.NETWORK" | donde Categoría == "ApplicationGatewayFirewallLog" | proyecto TimeGenerated, nombre_host_s, requestUri_s, Mensaje, acciones_s, políticas_s | ordenar por desc generado por tiempo - Para ver los ataques bloqueados (si WAF está en modo "Prevención"):
kusto AzureDiagnostics | donde Proveedor de Recursos == "MICROSOFT.NETWORK" | donde Categoría == "ApplicationGatewayFirewallLog" | donde action_s == "Bloqueado" | proyecto TimeGenerated, hostname_s, requestUri_s, Mensaje, ruleId_s | ordenar por desc generado por tiempo
- Para ver todos los eventos WAF:
Validación y pruebas
Probar el WAF es crucial para garantizar que bloquee los ataques esperados y no bloquee el tráfico legítimo (falsos positivos).
1. Prueba de ataques comunes (inyección SQL, XSS)
-
Escenario: Intente acceder a su aplicación web a través de Application Gateway (usando la IP pública o FQDN) y simule un ataque de inyección SQL en la URL o un parámetro de formulario.
- URL de ejemplo con intento de inyección SQL (no ejecutar en producción sin autorización):
http://<seu_ip_publico_appgw>/index.php?id=1' O '1'='1 - URL de ejemplo con intento XSS:
http://<seu_ip_publico_appgw>/search?query=<script>alert('XSS')</script>
- URL de ejemplo con intento de inyección SQL (no ejecutar en producción sin autorización):
-
Acción esperada (modo de detección): si el WAF está en modo "Detección", se debe permitir la solicitud, pero los registros del WAF en Log Analytics deben registrar el ataque y la regla que lo detectó.
-
Acción esperada (modo de prevención): si el WAF está en modo "Prevención", la solicitud debe bloquearse y el navegador debe mostrar una página de error de WAF (generalmente un error HTTP 403 prohibido).
-
Verificación: verifique los registros WAF en Log Analytics para confirmar que los ataques se detectaron (en modo de detección) o se bloquearon (en modo de prevención).
2. Prueba de reglas personalizadas (bloqueo de IP)
- Escenario: intente acceder a su aplicación web desde la dirección IP que configuró en la regla personalizada de bloqueo de IP.
- Acción esperada: el acceso debe bloquearse y el navegador debe mostrar una página de error WAF.
- Verificación: verifique los registros WAF en Log Analytics para confirmar que la regla personalizada bloqueó la IP.
Consejos de seguridad y mejores prácticas
- Iniciar en modo de detección: implemente siempre el WAF en modo "Detección" inicialmente. Supervise los registros cuidadosamente para identificar falsos positivos y ajuste las reglas antes de cambiar al modo "Prevención".
- Ajuste WAF: el ajuste fino es crucial. Deshabilite reglas específicas que generen falsos positivos (bloqueando tráfico legítimo) o agregue reglas de exclusión para parámetros específicos. Evite deshabilitar conjuntos de reglas completos.
- Reglas personalizadas: utilice reglas personalizadas para manejar los requisitos de seguridad específicos de su aplicación.o o para mitigar las vulnerabilidades recién descubiertas antes de que se actualicen las reglas administradas.
- Actualizaciones de CRS: mantenga actualizado su conjunto de reglas administradas (OWASP CRS) para garantizar la protección contra las amenazas más recientes. Azure WAF normalmente se actualiza automáticamente, pero verifique la versión.
- Integración con Azure Front Door: para aplicaciones web globales o aquellas que requieren optimización del rendimiento y enrutamiento avanzado, considere implementar WAF en Azure Front Door. Esto proporciona protección en el borde de la red global de Microsoft.
- Monitoreo y alertas: configure alertas en Azure Monitor para eventos de seguridad WAF, como ataques bloqueados o anomalías. Integre registros WAF con su SIEM (por ejemplo, Microsoft Sentinel) para obtener una vista centralizada.
- Pruebas de seguridad periódicas: realice periódicamente pruebas de penetración y análisis de vulnerabilidades en sus aplicaciones web para identificar nuevas vulnerabilidades y validar la eficacia del WAF.
- Principio de privilegio mínimo: asegúrese de que solo los usuarios autorizados tengan permisos para configurar y administrar políticas WAF.
Solución de problemas comunes
- WAF no bloquea los ataques esperados:
*Compruebe que el WAF esté en modo
Prevencióny no en modoDetección.- Asegúrese de que el conjunto de reglas administrado (OWASP CRS) esté habilitado.
- Revise los registros WAF en Log Analytics para ver si se detectó el ataque y qué regla se activó. Es posible que deba ajustar la sensibilidad del CRS o agregar una regla personalizada.
- Asegúrese de que no existan reglas de exclusión o listas blancas que permitan tráfico malicioso.
- WAF está bloqueando el tráfico legítimo (falsos positivos):
- Comience analizando sus registros WAF en Log Analytics para identificar qué regla está bloqueando el tráfico legítimo.
- Para la regla identificada, puedes:
- Deshabilitar regla específica (último recurso).
- Agregue una regla de exclusión para el parámetro o encabezado específico que está causando el falso positivo.
- Ajustar el umbral de puntuación de anomalías (si se utiliza CRS en modo de puntuación de anomalías).
- Considere volver al modo "Detección" temporalmente para ajustar las reglas.
- El rendimiento de la aplicación se degradó después de habilitar WAF:
- WAF añade una pequeña cantidad de latencia debido a la inspección de tráfico. Asegúrese de que Application Gateway o Front Door tengan el tamaño adecuado.
- Verifique los registros de rendimiento de Application Gateway en Azure Monitor.
- WAF no está asociado con la aplicación correcta:
- Verifique que la política WAF esté asociada con la Application Gateway o Front Door correcta.
- Asegúrese de que el tráfico a su aplicación web realmente pase a través de Application Gateway/Front Door con WAF habilitado.
Conclusión
Azure Web Application Firewall (WAF) es una defensa esencial para proteger las aplicaciones web contra una gran variedad de ciberataques. Al proporcionar una capa de inspección y filtrado del tráfico en el borde de la red, WAF actúa como un escudo que protege contra vulnerabilidades conocidas y amenazas de día cero. La flexibilidad de utilizar conjuntos de reglas personalizados y administrados, junto con la integración nativa con los servicios de entrega de aplicaciones de Azure, hacen de Azure WAF una solución sólida y escalable para cualquier organización. Con una implementación cuidadosa, un ajuste fino de las políticas y un monitoreo continuo, los profesionales de la seguridad pueden garantizar que sus aplicaciones web permanezcan seguras, disponibles y conformes, fortaleciendo la postura de seguridad general de la organización frente al panorama de amenazas en constante evolución.
Referencias:
[1] Microsoft aprende. ¿Qué es el Firewall de aplicaciones web de Azure?. Disponible en: https://learn.microsoft.com/pt-br/azure/web-application-firewall/overview [2] Microsoft aprende. Firewall de aplicaciones web (WAF) en Azure Application Gateway. Disponible en: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/ag-overview [3] Fundación OWASP. Top 10 de OWASP. Disponible en: https://owasp.org/www-project-top-ten/ [4] Microsoft aprende. Crear políticas de firewalll Web Application Gateway (WAF) para Azure Application Gateway. Disponible en: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/create-waf-policy-ag [5] Microsoft aprende. Reglas y grupos de reglas WAF CRS. Disponible en: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/application-gateway-waf-collection-rules [6] Microsoft aprende. Monitoreo y registro de WAF. Disponible en: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/waf-diagnostics