User Tools

Site Tools


aws:tutoriales:challenges:waf

This is an old revision of the document!


WAF (Web Application Firewall)

Parte 1: Teoría Básica

1. ¿Qué es AWS WAF?

  • Definición: Servicio de firewall gestionado que protege aplicaciones web de ataques comunes (SQLi, XSS, bots, etc.).
  • Integración: Funciona con CloudFront, API Gateway y Application Load Balancer (ALB).
  • Modelo de Costo: Pago por reglas creadas y solicitudes procesadas.

2. Conceptos Clave

  • Web ACL (Access Control List): Conjunto de reglas para filtrar tráfico.
  • Reglas (Rules): Acciones (Allow, Block, Count) basadas en condiciones (IPs, headers, etc.).
  • Rule Groups: Grupos de reglas reutilizables (Managed por AWS o custom).

3. Notas de Uso Básico

  • Crear un Web ACL:

1. Ir a AWS WAF & Shield en la consola.

  2. Asociar a un recurso (ALB, CloudFront).  
  3. Agregar reglas con acciones definidas.  
* **Reglas Comunes**:  
  * Bloquear IPs: Usar **IP match conditions**.  
  * Detectar SQLi: Regex en el body (ej: `(?i)(\bunion\b)`).  
* **Monitoreo**: Habilitar [[https://docs.aws.amazon.com/waf/latest/developerguide/logging.html|AWS WAF Logs]] en S3/CloudWatch.  

4. Documentación Oficial

Parte 2: Ejercicios Prácticos

Ejercicio 1 (Custom): Bloquear SQLi y XSS

Objetivo: Crear reglas personalizadas para ataques SQL Injection y Cross-Site Scripting.

Pasos:

  1. Crear Web ACL:
  
    1. En AWS WAF, ir a "Web ACLs" > "Create web ACL".  
    2. Asociar a un ALB/CloudFront.  
    
  1. Regla SQLi:
  • Field to inspect: Body.
  • Regex: `(?i)(\b(union|select|insert)\b)`.
  1. Regla XSS:
  • Field to inspect: URI o Headers.
  • Regex: `(<script>|javascript:)`.

Prueba:

<code>  
curl "http://tu-endpoint?param=<script>alert('xss')</script>"  
</code>  
* **Resultado esperado**: HTTP 403 Forbidden.  

Ejercicio 2 (Oficial AWS): Reglas Administradas

Objetivo: Usar AWS Managed Rules para bloquear tráfico malicioso.

Pasos:

1. En **Web ACL**, agregar un **Rule Group** > **AWSManagedRulesCommonRuleSet**.  
2. Configurar acción **Block**.  
3. Probar con User-Agent: `BadBot`.  

Documentación:

Ejercicio 3 (Challenge Extra): Rate Limiting

Objetivo: Limitar solicitudes a 1000/IP en 5 minutos.

Configuración:

<code>  
1. En Web ACL, crear "Rate-based rule".  
2. Límite: 1000 solicitudes.  
3. Acción: Block.  
</code>  

Prueba:

<code>  
ab -n 2000 -c 10 http://tu-endpoint/  
</code>  

Recursos Adicionales

Notas Finales

  • Capa Gratuita: 1 Web ACL, 10 reglas, 1M solicitudes/mes.
  • Pruebas: Siempre en staging antes de producción.
  • Mantenimiento: Actualizar reglas managed cada 3-6 meses.
aws/tutoriales/challenges/waf.1740394425.txt.gz · Last modified: 2025/02/24 10:53 by gepelbaum