Defensa en profundidad
Apilar controles independientes para que, cuando uno falle (y alguno fallará), el siguiente detenga, detecte o contenga el ataque.
En 2019, un atacante sacó de la nube (en este caso, AWS) los datos de más de 100 millones de clientes de Capital One. No hubo un único fallo: un WAF mal configurado permitió una petición SSRF, esa petición alcanzó el servicio de metadatos de la instancia, las credenciales obtenidas pertenecían a un rol con permisos de lectura sobre demasiados almacenes de objetos, y la exfiltración no se detectó hasta meses después, por un aviso externo. Cada capa tenía un agujero, y los agujeros estaban alineados. La defensa en profundidadDefensa en profundidadEstrategia de apilar controles independientes y de distinto tipo para que, si uno falla, otro detenga, detecte o contenga el ataque. busca justo lo contrario: que los agujeros no se alineen.
La idea#
NIST la define como una estrategia que integra personas, tecnología y operaciones para establecer barreras variadas a lo largo de múltiples capas de la organización. La metáfora viene de la estrategia militar: en lugar de una sola muralla, varias líneas sucesivas que retrasan al enemigo y te dan tiempo para reaccionar. La NSA la llevó a la seguridad de la información a principios de los 2000, con tres ejes: personas, tecnología y operaciones.
Hay dos ideas clave:
- Asume que cada capa va a fallar. No porque esté mal hecha, sino porque ningún control es perfecto: los WAF tienen evasiones, las reglas de red tienen excepciones y la gente hace clic en enlaces.
- Las capas deben fallar por motivos distintos. Dos filtros que se saltan con el mismo truco cuentan como una sola capa.
Paso 1 de 6Capas
Entre Internet y los datos de Citas hay cinco capas independientes. Ninguna es perfecta: la idea es que fallen por motivos distintos.
Las capas de Citas#
Así se reparten los controles de la app de referencia, descritos por lo que hacen, desde Internet hasta el dato:
| Capa | Control en Citas | Tipo |
|---|---|---|
| Edge | CDN con WAF (reglas gestionadas y rate-based) y protección DDoS | Preventivo |
| Red | el balanceador solo acepta 443 desde el CDN; contenedores en subredes privadas; base de datos en subredes aisladas; listas de control de red | Preventivo |
| Cómputo | contenedores gestionados (sin SSH), sistema de ficheros de solo lectura, imágenes escaneadas en el registro, identidad de carga de trabajo mínima | Preventivo |
| Aplicación | verificación del token de sesión firmado, autorización por clínica, validación de entrada, consultas parametrizadas | Preventivo |
| Datos | cifrado con claves gestionadas en la base de datos y el almacén de objetos, usuario de BD con mínimo privilegioMínimo privilegioCada identidad (persona, servicio o máquina) tiene solo los permisos imprescindibles para su tarea, durante el tiempo imprescindible., backups y versionado | Preventivo y correctivo |
| Identidad | control de acceso por identidad (IAM), MFA, barreras a nivel de organización que prohíben lo peligroso, despliegue por OIDC sin claves de larga duración | Preventivo |
| Monitorización | registros de auditoría firmados en una cuenta aislada, detección de amenazas gestionada, logs del WAF, registros de flujos de red, alarmas | Detectivo |
Cada capa recibe un nombre distinto en cada nube, pero el control es el mismo:
| Capa | AWS | Azure | Google Cloud |
|---|---|---|---|
| Edge (WAF + DDoS) | CloudFront + WAF + Shield | Front Door + WAF + DDoS Protection | Cloud CDN + Cloud Armor |
| Red (balanceador, subredes) | ALB + VPC + Security Groups/NACL | Load Balancer + VNet + NSG | Cloud Load Balancing + VPC + firewall rules |
| Cómputo (contenedores) | ECS/Fargate + ECR | Container Apps + ACR | Cloud Run + Artifact Registry |
| Datos (cifrado gestionado) | RDS/S3 + KMS | Azure SQL/Blob + Key Vault | Cloud SQL/Storage + Cloud KMS |
| Identidad (barreras org.) | IAM + SCP (Organizations) | Entra ID + Azure Policy | IAM + Organization Policy |
| Monitorización (auditoría + detección) | CloudTrail + GuardDuty | Activity Log + Defender | Cloud Audit Logs + SCC |
La identidad no es “una capa más” en línea: es transversal. En la nube, quien tenga una credencial de administrador habla directamente con la API del proveedor y se salta el WAF, los grupos de seguridad y la aplicación. Por eso la identidad necesita sus propias capas: MFA, barreras a nivel de organización que prohíben lo peligroso aunque la política lo permita, y detección sobre los registros de auditoría.
Un ejemplo en código: dos capas distintas para la misma amenaza#
Contra la inyección SQL, el WAF filtra por patrones en el borde. Pero la capa que de verdad la elimina es la aplicación:
Vulnerable
Seguro
// Si el WAF no reconoce el payload, esta línea es explotableconst r = await db.query( `SELECT * FROM citas WHERE paciente = '${req.query.nombre}'`,);// El payload viaja como dato, nunca como SQL. Y solo ve su clínica.const r = await db.query( 'SELECT * FROM citas WHERE paciente = $1 AND clinica_id = $2', [req.query.nombre, req.user.clinicaId],);Y si también fallara la aplicación, la capa de datos acota el daño: el usuario con el que conecta la API no puede leer otras tablas ni borrar nada.
En la red, el balanceador no debería aceptar tráfico que no venga del CDN. Si no, el WAF del borde se puede rodear yendo directamente al balanceador. El control concreto es una regla del grupo de seguridad que solo admite el puerto 443 desde los rangos del CDN (en AWS, la managed prefix list de CloudFront; en Azure, una restricción de servicio de Front Door; en Google Cloud, política que exige pasar por Cloud Armor), de modo que no haya una puerta trasera al origen.
En identidad, una barrera a nivel de organización impide que nadie apague el registro de auditoría, ni siquiera un administrador de la cuenta de producción. Así se ve la forma de la política, como ejemplo en AWS (una service control policy que niega las acciones de parada del trail):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ProtegerCloudTrail", "Effect": "Deny", "Action": [ "cloudtrail:StopLogging", "cloudtrail:DeleteTrail", "cloudtrail:UpdateTrail", "cloudtrail:PutEventSelectors" ], "Resource": "*" } ]}Prevenir, detectar, corregir#
Las capas no solo bloquean. Un diseño equilibrado mezcla tres tipos de control:
- Preventivos: impiden que ocurra (WAF, grupos de seguridad, control de acceso por identidad, consultas parametrizadas).
- Detectivos: avisan cuando ocurre o ha ocurrido (registros de auditoría, detección de amenazas gestionada, alarmas sobre los logs del WAF).
- Correctivos: devuelven el sistema a un estado bueno (restaurar un backup, revocar credenciales, añadir una regla al WAF tras un incidente).
Si todas tus capas son preventivas, el día que el atacante las atraviese no te enterarás. La animación lo muestra: la prevención falla dos veces, la detección avisa, una capa posterior detiene el ataque y un control correctivo cierra la primera brecha.
Anti-patrones#
- Capas correlacionadas: dos WAF con reglas parecidas, o tres servicios que usan la misma credencial. Fallan juntos.
- Capas sin dueño: un control que nadie monitoriza ni prueba es una suposición, no una capa.
- Más capas siempre es mejor: cada capa añade latencia, coste, complejidad y alertas. Una capa que genera 500 alertas al día acaba ignorada, y eso es peor que no tenerla.
- La oscuridad como capa: cambiar el puerto de SSH o esconder
/adminen una ruta rara puede reducir el ruido, pero no cuenta como control.
Cómo diseñarla para un flujo concreto#
-
Elige un activo y un flujo
Por ejemplo: “un recepcionista consulta las citas del día”. Dibuja el camino completo, desde el navegador hasta la base de datos.
-
Enumera los controles por capa
Para cada salto (edge, red, cómputo, aplicación, datos, identidad), anota qué control existe y de qué tipo es.
-
Rompe una capa cada vez
Pregúntate: si esta capa falla, ¿qué capa posterior lo detiene? ¿Quién se entera, y en cuánto tiempo?
-
Busca fallos compartidos
Si dos capas dependen de la misma credencial, la misma librería o el mismo equipo, cuentan como una sola.
-
Prueba de verdad
Pentests, game days y simulaciones de detección. Una capa que nunca has visto actuar es solo una hipótesis.
Tu turno
Explica la defensa en profundidad con un ejemplo de tu trabajo actual
Elige una petición real de un sistema que conozcas (un login, una subida de fichero, una llamada a una API interna) y sigue su camino capa a capa.
- ¿Qué controles atraviesa? ¿Cuántos son preventivos, cuántos detectivos y cuántos correctivos?
- Si el primer control fallara, ¿cuál sería el siguiente en actuar? ¿Lo has comprobado alguna vez?
- ¿Hay dos capas que fallarían por el mismo motivo?
- Si alguien robara la credencial más poderosa de ese flujo, ¿qué capa quedaría en pie?
Flujo: ...
| Capa | Control | Tipo (P/D/C) | ¿Qué pasa si falla? || -------------- | ------- | ------------ | ------------------- || Edge | | | || Red | | | || Cómputo | | | || Aplicación | | | || Datos | | | || Identidad | | | || Monitorización | | | |Reto
Citas pone un segundo WAF de otro proveedor delante del CDN con su propio WAF. ¿Has ganado una capa de defensa en profundidad?
▸Mostrar solución
Muy poco. Ambos son filtros por patrones en el borde y es probable que fallen ante las mismas técnicas de ofuscación: son capas correlacionadas. Rinde mucho más invertir en una capa de otro tipo, como consultas parametrizadas, un usuario de BD con mínimos privilegios o alertas sobre los logs del WAF.
Reto
Un atacante roba las credenciales de larga duración de un administrador de la cuenta de producción. ¿Qué capas de Citas le siguen frenando?
▸Mostrar solución
Las de red y edge no le afectan: habla directamente con la API del proveedor, no pasa por la red privada ni por el WAF. Le frenan las capas de identidad y detección: las barreras a nivel de organización (no puede apagar los registros de auditoría), las condiciones de MFA en acciones sensibles, la detección de amenazas gestionada (llamadas desde ubicaciones o patrones anómalos) y que los logs vivan en una cuenta aislada, donde no puede borrarlos. Por eso, en la nube, la identidad es una capa transversal.
En resumen#
- Defensa en profundidad significa varias barreras independientes entre el atacante y el activo, porque cualquier capa puede fallar.
- Las capas valen si fallan por motivos distintos. Las correlacionadas cuentan como una.
- Mezcla controles preventivos, detectivos y correctivos: la detección es lo que te salva cuando la prevención falla.
- En la nube, la identidad es transversal: una credencial poderosa se salta la red, así que protégela con MFA, barreras a nivel de organización y monitorización.
- Evita la cáscara de huevo, las capas sin dueño y añadir capas que solo generan ruido.