Parte: 10 — Seguridad en la nube y contenedores · Fuente: AWS Well-Architected Framework: Security Pillar y CIS Amazon Web Services Foundations Benchmark ⏱️ Duración estimada: 130 min · Nivel: Intermedio
Endurecer una cuenta de AWS aplicando los controles nativos clave: segmentación de red con VPC y security groups, protección de datos con cifrado y KMS, aislamiento de almacenamiento S3, y los servicios de seguridad gestionados (GuardDuty, Security Hub, Config). Al terminar, el alumno podrá llevar una cuenta desde su estado por defecto hasta una postura alineada con el CIS Benchmark.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | VPC, subredes y security groups | Segmentación de red y control de tráfico |
| 2 | S3: block public access y políticas | Buckets públicos son la fuga clásica |
| 3 | Cifrado en reposo y KMS | Protege datos y controla claves |
| 4 | GuardDuty | Detección de amenazas basada en logs |
| 5 | Security Hub | Consolidación de hallazgos y benchmarks |
| 6 | AWS Config | Inventario y evaluación de cumplimiento continuo |
| 7 | CloudTrail y Flow Logs | Auditoría de API y tráfico de red |
aws configurada con un perfil de laboratorio y MFA.pip install prowler.# Comprobar que S3 no permite acceso público a nivel de cuenta
aws s3control get-public-access-block --account-id 123456789012
# Habilitar GuardDuty en la región actual
aws guardduty create-detector --enable
prowler aws --compliance cis_2.0_aws y compara los hallazgos con lo que muestra Security Hub. Corrige al menos tres hallazgos de severidad alta y vuelve a ejecutar.PutObject.UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.Toma una cuenta de laboratorio "recién creada" y llévala a una postura base: sin buckets públicos, CloudTrail multi-región activo, GuardDuty y Security Hub habilitados, y cifrado por defecto en S3 y EBS.
Criterio de aceptación: una ejecución de prowler aws --compliance cis_2.0_aws muestra 0
hallazgos críticos/altos en las secciones de S3, logging y cifrado, y Security Hub reporta esos
controles como PASSED.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| Bucket "public" pese a política privada | ACL heredada o BPA desactivado; activa Block Public Access a nivel de cuenta. |
| SG "no funciona" al denegar un puerto | Los SG solo permiten; para deny explícito usa NACL a nivel de subred. |
| GuardDuty sin hallazgos aunque hay actividad | Solo cubre la región activada; habilítalo en todas las regiones usadas. |
| CloudTrail sin registros históricos | Solo captura desde su creación; créalo antes de necesitarlo, multi-región. |
AccessDenied al usar una clave KMS |
Falta permiso en la política de la clave; añade el principal a kms:Decrypt. |
❓ ¿Security Group o NACL? Usa ambos. El SG es stateful y va en la instancia (control fino); el NACL es stateless, va en la subred y sirve para bloqueos amplios (deny) que el SG no puede expresar.
❓ ¿GuardDuty reemplaza a un SIEM? No. GuardDuty detecta amenazas conocidas a partir de los logs de AWS; un SIEM correlaciona múltiples fuentes. Lo habitual es enviar los hallazgos de GuardDuty al SIEM.
❓ ¿Debo usar claves gestionadas por AWS o por el cliente (CMK)? Para control de auditoría, rotación y separación de deberes, usa claves gestionadas por el cliente (CMK). Las gestionadas por AWS son cómodas pero dan menos control sobre la política.
Clase 222 — IAM en la nube: identidades, roles y permisos