Cerramos el capítulo de entrega de contenido con la seguridad frente a ataques. Tu web ya es rápida (CloudFront) y cifrada (ACM), pero en internet hay tráfico malicioso: bots, hackers, intentos de ataque. El WAF (Web Application Firewall) es el escudo que filtra ese tráfico dañino antes de que llegue a tu aplicación. Integrado con CloudFront, protege tu sitio en el borde de la red.

Qué es un WAF

Un WAF (Web Application Firewall) es un cortafuegos especializado en aplicaciones web. A diferencia de los Security Groups (Capítulo 4), que filtran por puertos e IPs a nivel de red, el WAF entiende de HTTP y examina el contenido de las peticiones web para detectar y bloquear ataques.

   Tráfico de internet
   ┌─────────────────────────┐
   │ ✓ usuarios legítimos     │
   │ ✗ bots maliciosos        │ ──► [ WAF ] ──► solo pasa lo legítimo ──► tu web
   │ ✗ intentos de ataque     │      (filtra)
   │ ✗ scrapers abusivos      │
   └─────────────────────────┘

Analogía: el WAF es como el portero de seguridad de una discoteca. Revisa a cada persona que quiere entrar: deja pasar a los clientes normales, pero frena a los que vienen buscando problemas (los que llevan armas, los conflictivos). Inspecciona quién entra y con qué intención, no solo la puerta.

¿De qué protege un WAF?

El WAF defiende contra los ataques más comunes a aplicaciones web, muchos de ellos del famoso OWASP Top 10 (la lista de las vulnerabilidades web más críticas):

  • Inyección SQL (SQL injection): intentos de «colar» comandos maliciosos a tu base de datos a través de formularios o URLs.
  • Cross-Site Scripting (XSS): intentos de inyectar scripts dañinos en tu web para atacar a otros usuarios.
  • Bots maliciosos: programas automáticos que rastrean, copian contenido o buscan vulnerabilidades.
  • Ataques de fuerza bruta: intentos repetidos de adivinar contraseñas.
  • Picos de peticiones abusivas: demasiadas peticiones desde una misma fuente (rate limiting).

Cómo funciona: las reglas

El WAF funciona con reglas que definen qué bloquear y qué permitir. Hay dos formas de obtenerlas:

Reglas gestionadas por AWS (lo más fácil)

AWS ofrece grupos de reglas predefinidos y mantenidos por sus expertos en seguridad. Con activarlos, tu web queda protegida contra las amenazas más habituales, sin que tengas que ser un experto en seguridad. AWS los actualiza constantemente según aparecen nuevas amenazas.

Para empezar, esto es lo recomendable: activa las reglas gestionadas de AWS (por ejemplo, el conjunto «Core» y el de «known bad inputs») y tendrás una protección sólida con muy poco esfuerzo.

Reglas propias (personalizadas)

También puedes crear tus propias reglas para tu caso concreto:

  • Bloquear o permitir por IP: vetar IPs concretas o permitir solo ciertas (una lista negra o blanca).
  • Bloquear por país (geo): si tu negocio es solo nacional, puedes bloquear tráfico de países de donde solo recibes ataques.
  • Rate limiting (límite de velocidad): «si una IP hace más de 1.000 peticiones en 5 minutos, bloquéala». Excelente contra bots y fuerza bruta.
  • Filtrar por contenido: bloquear peticiones con patrones sospechosos en la URL, las cabeceras, etc.
Regla de rate limiting:
  ¿Una IP hace más de 1000 peticiones en 5 min?
     → SÍ: bloquéala temporalmente (probablemente es un bot)
     → NO: déjala pasar

Por qué integrarlo con CloudFront

Aquí está la ventaja de combinar WAF con CloudFront (subcapítulo 16.2): al ponerlo en la CDN, el filtrado ocurre en el borde de la red (las edge locations), lejos de tu aplicación.

Atacante ──► Edge location (WAF filtra aquí) ──✗ bloqueado
                                                  │
Usuario ───► Edge location (WAF lo aprueba) ──✓──► tu aplicación

Beneficio doble:

  • El tráfico malicioso se bloquea en el borde, antes de viajar hasta tu servidor. Tu aplicación ni se entera del ataque.
  • Como el filtrado está distribuido por todo el mundo, absorbe ataques a gran escala sin saturar tu origen.

Ejemplo del mundo real: una tienda online sufre un ataque de bots que intentan probar miles de tarjetas robadas en su formulario de pago. Con WAF integrado en CloudFront, una regla de rate limiting detecta las peticiones masivas desde las mismas IPs y las bloquea en las edge locations, lejos de la tienda. Los servidores de la tienda siguen funcionando con normalidad para los clientes reales, sin enterarse del ataque.

WAF y los demás: una defensa en capas

El WAF no sustituye a las otras protecciones; se suma a ellas formando una defensa en profundidad (concepto que ampliaremos en el Capítulo 23):

Capa Qué protege Nivel
WAF Ataques a la aplicación web (SQL injection, XSS, bots) Aplicación (HTTP)
Security Groups (Cap. 4) Qué puertos/IPs alcanzan tus recursos Red
Network ACLs (Cap. 6) Tráfico a nivel de subred Red
IAM (Cap. 7) Quién puede hacer qué en AWS Identidad

Cada capa cubre un aspecto distinto. Juntas, hacen tu aplicación mucho más difícil de atacar.

Lo que debes recordar

  • Un WAF (Web Application Firewall) es un cortafuegos que entiende de HTTP y filtra el tráfico web malicioso examinando el contenido de las peticiones (a diferencia de los Security Groups, que filtran por red). Es como el «portero de seguridad» de tu web.
  • Protege contra ataques comunes del OWASP Top 10: inyección SQL, XSS, bots maliciosos, fuerza bruta y picos abusivos.
  • Funciona con reglas: las gestionadas por AWS dan protección sólida sin ser experto (lo recomendado para empezar), y puedes añadir reglas propias (bloqueo por IP/país, rate limiting...).
  • Integrado con CloudFront, filtra el tráfico malicioso en el borde de la red, lejos de tu aplicación, y absorbe ataques a gran escala.
  • El WAF forma parte de una defensa en capas junto a Security Groups, Network ACLs e IAM.

¡Has terminado el Capítulo 16! Tu aplicación ya es rápida, segura y protegida de cara a internet. En el Capítulo 17 cerramos la Parte IV con los contenedores en AWS: Docker, ECR, ECS y EKS, otra forma fundamental de desplegar aplicaciones.

Cloud, AWS & Terraform — De cero a experto

Capítulo 1 · Qué es el cloud computing

Capítulo 2 · El mercado cloud y los grandes proveedores

Capítulo 3 · Regiones, zonas de disponibilidad y edge

Capítulo 4 · Cómputo: EC2

Capítulo 5 · Almacenamiento: S3

Capítulo 6 · Redes: VPC

Capítulo 7 · Identidad y acceso: IAM

Capítulo 8 · Bases de datos gestionadas

Capítulo 9 · Por qué Infraestructura como Código

Capítulo 10 · HCL: el lenguaje de Terraform

Capítulo 11 · Providers y estado

Capítulo 12 · Tu primera infraestructura real en Terraform

Capítulo 13 · Balanceo de carga y autoescalado

Capítulo 14 · Serverless con Lambda

Capítulo 15 · Mensajería y eventos

Capítulo 16 · Entrega de contenido y DNS

Capítulo 17 · Contenedores en AWS

Capítulo 18 · Módulos: reutilización y composición

Capítulo 19 · Workspaces y gestión de entornos

Capítulo 20 · Backends remotos y locking

Capítulo 21 · Testing de infraestructura

Capítulo 22 · Terraform en CI/CD

Capítulo 23 · Seguridad en profundidad

Capítulo 24 · Observabilidad: logs, métricas y trazas

Capítulo 25 · Optimización de costes

Capítulo 26 · Alta disponibilidad y disaster recovery

Capítulo 27 · Well-Architected Framework de AWS

Capítulo 28 · Arquitecturas serverless a escala

Capítulo 29 · Plataformas de datos en AWS

Capítulo 30 · Multi-cuenta y landing zones

Capítulo 31 · Platform Engineering e Internal Developer Platform

Capítulo 32 · Certificaciones AWS relevantes

Capítulo 33 · Proyectos para consolidar lo aprendido

Capítulo 34 · Recursos y comunidad

© Copyright 2024. Todos los derechos reservados