Auditoría de la Nube con Benchmarks CIS
Cuándo Usarlo
- Al realizar auditorías de seguridad iniciales de entornos cloud frente a benchmarks estándar de la industria
- Al prepararse para auditorías SOC 2, ISO 27001 o regulatorias que referencien controles CIS
- Al establecer una línea base de seguridad medible para nuevas cuentas o suscripciones en la nube
- Al rastrear la mejora del cumplimiento a lo largo del tiempo con reevaluaciones periódicas
- Al evaluar la postura de seguridad de entornos cloud adquiridos o heredados
No usar para detección de amenazas en tiempo de ejecución (ver detecting-cloud-threats-with-guardduty), para pruebas de seguridad a nivel de aplicación (ver conducting-cloud-penetration-testing) o para marcos de cumplimiento no basados en CIS (consultar archivos de skill regulatorios específicos).
Prerrequisitos
- Acceso de solo lectura a las cuentas cloud objetivo (política AWS SecurityAudit, rol Azure Reader, rol GCP Viewer)
- Prowler, ScoutSuite o herramientas CSPM nativas de la nube instaladas y configuradas
- Comprensión de la estructura del benchmark CIS: secciones, controles, perfiles (Nivel 1 y Nivel 2)
- Acceso de remediación para implementar correcciones (separado de las credenciales de auditoría)
Flujo de Trabajo
Paso 1: Seleccionar la Versión Apropiada del Benchmark CIS
Elige la versión correcta del benchmark para cada proveedor cloud. Las versiones actuales a partir de 2025 incluyen CIS AWS Foundations Benchmark v5.0, CIS Azure Foundations Benchmark v4.0 y CIS GCP Foundations Benchmark v4.0.
Áreas de Cobertura del Benchmark CIS:
+-------------------+-------------------------+------------------------+
| Sección | AWS v5.0 | Azure v4.0 |
+-------------------+-------------------------+------------------------+
| Identidad y Acceso| Políticas IAM, MFA, root| Azure AD, RBAC, PIM |
| Registro | CloudTrail, Config | Activity Log, Diag |
| Monitoreo | Alarmas CloudWatch | Defender, Sentinel |
| Redes | VPC, SG, NACLs | NSG, ASG, Firewall |
| Almacenamiento | Cifrado S3, acceso | Cifrado Storage |
| Base de Datos | Cifrado RDS | SQL TDE, auditoría |
+-------------------+-------------------------+------------------------+
Niveles de Perfil CIS:
Nivel 1: Configuraciones de seguridad prácticas que pueden implementarse sin impacto
significativo en el rendimiento o funcionalidad reducida
Nivel 2: Configuraciones de defensa en profundidad que pueden reducir funcionalidad o
requerir planificación adicional para su implementación
Paso 2: Ejecutar Evaluación Automatizada con Prowler
Ejecuta escaneos completos del benchmark CIS usando Prowler para la evaluación automatizada de controles en AWS, Azure y GCP.
# Evaluación AWS CIS v5.0
prowler aws \
--compliance cis_5.0_aws \
--profile audit-account \
--output-formats json-ocsf,html,csv \
--output-directory ./cis-audit-$(date +%Y%m%d)
# Evaluación Azure CIS v4.0
prowler azure \
--compliance cis_4.0_azure \
--subscription-ids "sub-id-1,sub-id-2" \
--output-formats json-ocsf,html,csv \
--output-directory ./cis-audit-azure-$(date +%Y%m%d)
# Evaluación GCP CIS v4.0
prowler gcp \
--compliance cis_4.0_gcp \
--project-ids "project-1,project-2" \
--output-formats json-ocsf,html,csv \
--output-directory ./cis-audit-gcp-$(date +%Y%m%d)
# Escaneo multi-cuenta AWS usando ScoutSuite
scout suite aws \
--profile audit-account \
--report-dir ./scout-report \
--ruleset cis-5.0 \
--force
Paso 3: Interpretar Resultados y Priorizar la Remediación
Analiza los resultados de la auditoría por sección y gravedad. Prioriza primero los controles de Nivel 1, ya que representan la higiene de seguridad fundamental, luego aborda los controles de Nivel 2 para defensa en profundidad.
# Analizar resultados de Prowler para controles fallidos
cat ./cis-audit-*/prowler-output-*.json | \
jq '[.[] | select(.StatusExtended == "FAIL")] | group_by(.CheckID) |
map({control: .[0].CheckID, description: .[0].CheckTitle,
failed_resources: length, severity: .[0].Severity}) |
sort_by(-.failed_resources)'
# Generar puntuación de cumplimiento por sección
cat ./cis-audit-*/prowler-output-*.json | \
jq 'group_by(.Section) | map({
section: .[0].Section,
total: length,
passed: [.[] | select(.StatusExtended == "PASS")] | length,
failed: [.[] | select(.StatusExtended == "FAIL")] | length,
score: (([.[] | select(.StatusExtended == "PASS")] | length) / length * 100 | round)
})'
Paso 4: Remediar Controles Críticos y Altos
Aborda los controles fallidos comenzando por los elementos de mayor impacto. Usa AWS Config remediation, Azure Policy o Terraform para aplicar las correcciones de manera sistemática.
# CIS 1.4: Asegurar que no exista clave de acceso para la cuenta raíz
aws iam list-access-keys --user-name root
# Si existen claves, eliminarlas
aws iam delete-access-key --user-name root --access-key-id AKIAEXAMPLE
# CIS 2.1.1: Asegurar que el cifrado predeterminado de S3 esté habilitado
for bucket in $(aws s3api list-buckets --query 'Buckets[*].Name' --output text); do
aws s3api put-bucket-encryption --bucket "$bucket" \
--server-side-encryption-configuration '{
"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]
}' 2>/dev/null && echo "Cifrado: $bucket" || echo "FALLÓ: $bucket"
done
# CIS 3.1: Asegurar que CloudTrail esté habilitado en todas las regiones
aws cloudtrail create-trail \
--name organization-trail \
--s3-bucket-name cloudtrail-logs-bucket \
--is-multi-region-trail \
--enable-log-file-validation \
--kms-key-id arn:aws:kms:us-east-1:123456789012:key/key-id
aws cloudtrail start-logging --name organization-trail
# CIS 4.x: Configurar filtros de métricas y alarmas de CloudWatch
aws logs put-metric-filter \
--log-group-name CloudTrail/DefaultLogGroup \
--filter-name UnauthorizedAPICalls \
--filter-pattern '{ ($.errorCode = "*UnauthorizedAccess*") || ($.errorCode = "AccessDenied*") }' \
--metric-transformations metricName=UnauthorizedAPICalls,metricNamespace=CISBenchmark,metricValue=1
Paso 5: Establecer Monitoreo Continuo de Cumplimiento
Despliega monitoreo automatizado de cumplimiento para detectar desviaciones de configuración entre auditorías periódicas. Usa AWS Security Hub, Azure Policy o GCP Security Command Center.
# AWS: Habilitar CIS v5.0 en Security Hub
aws securityhub batch-enable-standards \
--standards-subscription-requests '[
{"StandardsArn": "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/5.0.0"}
]'
# Azure: Asignar iniciativa de política de benchmark CIS
az policy assignment create \
--name cis-azure-benchmark \
--scope "/subscriptions/<sub-id>" \
--policy-set-definition "1a5bb27d-173f-493e-9568-eb56638dbd0e" \
--params '{"effect": {"value": "AuditIfNotExists"}}'
# Programar evaluaciones periódicas con Prowler
# Ejecutar semanalmente mediante cron o pipeline CI/CD
0 2 * * 1 prowler aws --compliance cis_5.0_aws --output-formats csv --output-directory /opt/audits/weekly-$(date +\%Y\%m\%d)
Conceptos Clave
| Término | Definición |
|---|---|
| Benchmark CIS | Pautas prescriptivas de configuración de seguridad desarrolladas por el Center for Internet Security mediante consenso comunitario |
| Perfil Nivel 1 | Controles de seguridad prácticos implementables sin impacto significativo en el rendimiento o la funcionalidad, representando la higiene de seguridad |
| Perfil Nivel 2 | Controles de defensa en profundidad que pueden restringir la funcionalidad y requieren planificación cuidadosa antes de su implementación |
| Benchmark de Fundamentos | Benchmark CIS específico para proveedores cloud que cubre seguridad de IAM, registro, monitoreo, redes y almacenamiento |
| ID de Control | Identificador numérico único para cada recomendación CIS (ej. 1.4 para verificación de claves raíz, 2.1.1 para cifrado S3) |
| Puntuación de Cumplimiento | Porcentaje de controles CIS en estado de aprobación, rastreado a lo largo del tiempo para medir la mejora de la postura de seguridad |
| Evaluación Automatizada | Evaluación de controles CIS impulsada por herramientas que utiliza las API del proveedor cloud para verificar las configuraciones de recursos frente a los requisitos del benchmark |
| Runbook de Remediación | Procedimiento documentado paso a paso para corregir un control CIS fallido específico, incluyendo verificaciones previas y validación |
Herramientas y Sistemas
- Prowler: Herramienta de seguridad cloud de código abierto que realiza más de 300 verificaciones, incluyendo evaluaciones de benchmark CIS para AWS, Azure y GCP
- ScoutSuite: Herramienta de auditoría de seguridad multi-cloud con conjuntos de reglas de benchmark CIS que genera informes HTML
- AWS Security Hub: Servicio nativo de AWS que admite el Benchmark de Fundamentos CIS AWS como estándar de seguridad
- Azure Policy: Servicio de gobernanza con iniciativas de política de benchmark CIS integradas para monitoreo automatizado de cumplimiento
- GCP Security Command Center: Servicio nativo de GCP que evalúa configuraciones frente al Benchmark de Fundamentos CIS GCP
Escenarios Comunes
Escenario: Evaluación CIS Pre-Auditoría para Certificación SOC 2
Contexto: Una empresa SaaS que busca la certificación SOC 2 Tipo II necesita demostrar controles de seguridad en la nube alineados con los benchmarks CIS. El auditor requiere evidencia de monitoreo continuo de cumplimiento en 45 cuentas AWS.
Enfoque:
- Ejecutar evaluación Prowler CIS v5.0 en las 45 cuentas para establecer la puntuación de cumplimiento base
- Exportar resultados a CSV y categorizar fallos por sección (IAM, Registro, Monitoreo, Redes)
- Mapear cada control CIS al criterio de Servicios de Confianza SOC 2 relevante (CC6.1, CC6.6, CC7.1, etc.)
- Remediar todos los fallos de control de Nivel 1 en un plazo de 30 días y los de Nivel 2 en un plazo de 60 días
- Habilitar CIS v5.0 en AWS Security Hub para monitoreo continuo y detección automatizada de desviaciones
- Generar informes de cumplimiento semanales que muestren la trayectoria de mejora para el auditor
- Documentar excepciones para controles intencionalmente no implementados con justificación de aceptación de riesgo
Errores comunes: Remediar controles sin probarlos primero en un entorno de pruebas puede romper cargas de trabajo en producción. Ignorar por completo los controles de Nivel 2 debilita la narrativa de auditoría incluso si no son estrictamente requeridos.
Formato de Salida
Informe de Auditoría de Benchmark CIS
========================================
Proveedor Cloud: AWS
Versión del Benchmark: CIS AWS Foundations Benchmark v5.0
Cuentas Evaluadas: 45
Fecha de Evaluación: 2025-02-23
Herramienta: Prowler v4.3.0
PUNTUACIÓN DE CUMPLIMIENTO GENERAL: 74%
CUMPLIMIENTO POR SECCIÓN:
1. Gestión de Identidad y Acceso: 68% (41/60 controles aprobados)
2. Almacenamiento: 82% (28/34 controles aprobados)
3. Registro: 91% (20/22 controles aprobados)
4. Monitoreo: 55% (18/33 controles aprobados)
5. Redes: 78% (32/41 controles aprobados)
CONTROLES MÁS FALLIDOS (por cuentas afectadas):
[1.4] La cuenta raíz tiene claves de acceso activas - 3/45 cuentas
[1.5] MFA no habilitado para la cuenta raíz - 2/45 cuentas
[2.1.1] Cifrado predeterminado de S3 no habilitado - 12/45 cuentas
[3.1] CloudTrail no es multi-región - 8/45 cuentas
[4.3] No hay alarma para uso de la cuenta raíz - 28/45 cuentas
[5.1] Flujos de VPC no habilitados - 15/45 cuentas
[5.4] Grupos de seguridad permiten entrada 0.0.0.0/0 - 22/45 cuentas
PRIORIDAD DE REMEDIACIÓN:
Crítico (Corregir en 7 días): Claves de acceso raíz, MFA raíz faltante
Alta (Corregir en 30 días): Cifrado S3, CloudTrail, flujos de VPC
Media (Corregir en 60 días): Alarmas CloudWatch, restricciones de grupos de seguridad
Baja (Corregir en 90 días): Controles de Nivel 2, elementos informativos