Este artículo se basa en una presentación realizada en un evento de la comunidad de AWS Ecuador, explorando la evolución y aplicación práctica de AWS WAF para la protección de aplicaciones web. Desde la implementación de reglas gestionadas hasta la creación de complejas reglas personalizadas, abordaremos cómo AWS WAF se integra con otros servicios, su monitoreo y los desafíos comunes.

¿Qué es AWS WAF y por qué es fundamental?

AWS WAF (Web Application Firewall) es un servicio de seguridad que ayuda a proteger tus aplicaciones web o APIs contra exploits web comunes que podrían afectar la disponibilidad, comprometer la seguridad o consumir excesivos recursos. Permite controlar el tráfico que llega a tus aplicaciones mediante la definición de reglas de seguridad personalizables.

Características Clave:
* Protección en tiempo real: Defensa continua contra amenazas.
* Filtrado de tráfico: Basado en reglas personalizables para inspeccionar encabezados, cuerpo y cadenas de consulta.
* Respuesta automática: Bloqueo o conteo de amenazas detectadas.
* Control granular: Listas blancas/negras de IPs, y limitación de tasas para mitigar ataques DDoS.

Integración Nativa con AWS:
AWS WAF se integra sin problemas con servicios clave de AWS, permitiendo una protección escalable y de fácil despliegue:
* Amazon CloudFront: Para proteger distribuciones de contenido.
* Application Load Balancer (ALB): Para asegurar aplicaciones detrás de balanceadores de carga.
* Amazon API Gateway: Para proteger tus APIs.
* AWS AppSync: Para proteger APIs GraphQL.

Reglas Gestionadas por AWS: Un Punto de Partida Poderoso

Las reglas gestionadas son un conjunto de reglas preconfiguradas y mantenidas por AWS y socios de seguridad. Se actualizan automáticamente para responder a nuevas amenazas, lo que facilita su implementación sin necesidad de una experiencia profunda en seguridad.

Tipos de Reglas Gestionadas Populares:
* Core Rule Set (CRS): Ofrece protección contra las 10 principales vulnerabilidades de OWASP, incluyendo inyección SQL, Cross-Site Scripting (XSS) e inclusión de archivos.
* Known Bad Inputs: Bloquea patrones de ataque conocidos, exploits comunes, técnicas de evasión, firmas de malware y herramientas de hacking.

Ventajas de las Reglas Gestionadas:
* Mantenimiento automático y actualizaciones continuas.
* Beneficio de la experiencia de expertos en seguridad.
* Implementación inmediata con amplia cobertura de amenazas.

Mejores Prácticas:
Para una implementación exitosa, se recomienda:
1. Comenzar en modo “Count”: Esto permite monitorear el impacto de las reglas sin bloquear tráfico, identificando posibles falsos positivos.
2. Implementar gradualmente: Activar las reglas de forma progresiva.
3. Monitorear falsos positivos: Ajustar o excluir reglas que bloqueen tráfico legítimo.
4. Documentar configuraciones: Mantener un registro de los cambios y decisiones.

Desafíos y la Transición a Reglas Personalizadas

Si bien las reglas gestionadas son un excelente punto de partida, pueden surgir desafíos. La diversidad de aplicaciones y, en ocasiones, el uso de patrones de desarrollo no ideales, pueden llevar a que las reglas gestionadas bloqueen tráfico legítimo, afectando la funcionalidad de la aplicación.

Solución:
Cuando se presentan estos problemas, es crucial:
1. Identificar las reglas problemáticas: Determinar qué reglas gestionadas están causando los bloqueos.
2. Analizar el tráfico afectado: Revisar los logs detalladamente para entender los requests bloqueados (métodos HTTP, URI/Path, cuerpo del request) y por qué las reglas gestionadas coincidieron con ellos.
3. Crear reglas personalizadas: Desarrollar reglas específicas para permitir el tráfico legítimo o bloquear patrones de ataque muy concretos que las reglas gestionadas no manejan adecuadamente sin impactar la aplicación.

Creando Reglas Personalizadas Avanzadas

Las reglas personalizadas ofrecen un control granular para abordar escenarios específicos y refinar la protección de tu aplicación.

1. Reglas Basadas en IP:
Estas reglas permiten bloquear o permitir el tráfico de direcciones IP o rangos específicos. Son útiles para:
* Lista blanca: Permitir el tráfico de IPs de confianza (ej. sistemas internos, herramientas de monitoreo).
* Lista negra: Bloquear IPs maliciosas conocidas.

2. Reglas Basadas en Tasa (Rate-based Rules):
Ayudan a prevenir ataques DDoS limitando el número de solicitudes permitidas desde una IP de origen en un período de tiempo definido (ventana de 5 minutos). Si una IP excede el umbral, las solicitudes posteriores serán bloqueadas automáticamente hasta que la tasa disminuya. La configuración debe basarse en el tráfico promedio esperado de un cliente.

3. Reglas Basadas en Patrones de Ataque Comunes:
Estas reglas son poderosas para identificar y bloquear intentos de explotación específicos. Puedes configurar condiciones que busquen:
* Cadenas de texto o expresiones regulares en el URI, encabezados o cuerpo del request.
* Extensiones de archivo que suelen ser objetivo de ataques (ej. .php en servidores web populares como WordPress).
* Patrones de inyección SQL o XSS específicos que no son capturados por las reglas gestionadas o que generan falsos positivos.

Entendiendo los WCU y la Facturación de AWS WAF

Los WCU (Web ACL Capacity Units) son una medida de la complejidad computacional de las reglas en AWS WAF.

¿Cómo Funcionan?
Cada regla consume una cantidad de WCU según su complejidad:
* Reglas simples (ej. bloquear IP): 1 WCU.
* Reglas con expresiones regulares: 3-10 WCU.
* Reglas de limitación de tasa: 2 WCU.
* Reglas administradas de AWS: Varían (generalmente 10-50 WCU).
* Grupos de reglas de terceros: Pueden variar significativamente.

Límites: El límite predeterminado es de 1,500 WCU por Web ACL, que puede ser aumentado previa solicitud a AWS Support.

WCU y Costos: Una Clarificación Importante:
Los WCU NO se facturan directamente. Son únicamente una medida de la capacidad para gestionar la complejidad de tu Web ACL. Los costos de AWS WAF se basan en:
* Web ACLs: Un cargo fijo por cada Web ACL implementado (aprox. $5.00/mes).
* Reglas: Un cargo por cada regla que configures (aprox. $1.00/mes por regla).
* Requests: Un cargo por millón de requests procesados (aprox. $0.60 por millón de requests).

Monitoreo y Visibilidad con CloudWatch

Una parte fundamental de cualquier estrategia de seguridad es el monitoreo continuo. AWS WAF se integra con CloudWatch para proporcionar visibilidad y análisis.

Configuración de Logging:
* Habilita los logs en tu Web ACL.
* Define el destino de los logs: CloudWatch Logs, Amazon S3 o Amazon Kinesis Data Firehose.
* Los logs se generan en formato JSON estructurado, con retención configurable.

Análisis de Logs con CloudWatch Log Insights:
CloudWatch Log Insights te permite consultar tus logs de WAF de manera eficiente. Aquí algunos ejemplos de consultas útiles:

  • Top IPs bloqueadas:
    ”’sql
    fields @timestamp, httpRequest.clientIp, action
    | filter action = “BLOCK”
    | stats count() by httpRequest.clientIp
    | sort count desc
    | limit 10
    ”’

  • Análisis de reglas activadas (bloqueadas):
    ”’sql
    fields @timestamp, terminatingRuleId, action
    | filter action = “BLOCK”
    | stats count() by terminatingRuleId
    | sort count desc
    ”’
    Estas consultas ayudan a identificar rápidamente las fuentes de ataques y las reglas que más se activan, permitiendo ajustar tu configuración de WAF proactivamente.

Conclusión

AWS WAF es una herramienta poderosa para proteger tus aplicaciones web y APIs. Comenzar con reglas gestionadas ofrece una base sólida, pero la capacidad de crear y ajustar reglas personalizadas es crucial para abordar desafíos específicos y optimizar la seguridad. Un monitoreo constante a través de CloudWatch es indispensable para mantener una postura de seguridad robusta y adaptativa, asegurando que tus aplicaciones estén protegidas de manera efectiva y sin interrupciones para el tráfico legítimo.

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.
You need to agree with the terms to proceed