Communitygithub.com

auditoría-de-infraestructura-terraform-para-seguridad

Auditoría de infraestructura como código de Terraform para identificar malas configuraciones de seguridad.

¿Qué es auditoría-de-infraestructura-terraform-para-seguridad?

Esta skill está diseñada para realizarauditorías de seguridad sobre infraestructura como código (IaC) de Terraform. Su propósito es detectar malas configuraciones de seguridad, como buckets S3 sin cifrado, grupos de seguridad con acceso SSH público, políticas IAM con permisos excesivos y más. Es útil para equipos de DevOps y SRE que quieran integrar escaneos de seguridad en sus pipelines CI/CD, aplicar políticas como código (Policy as Code) con OPA/Rego, o auditar el estado actual de la infraestructura desplegada. Soporta herramientas como Checkov, tfsec y Terrascan, y cubre flujos de trabajo como el escaneo de planos de Terraform, la escritura de políticas personalizadas en Rego y la generación de informes SARIF para GitHub Security. La skill enfatiza un enfoque de "shift left" (desplazar la seguridad a la izquierda) para detectar y corregir vulnerabilidades antes de aplicar cambios en producción.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/auditing-terraform-infrastructure-for-security

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Auditoría de Infraestructura Terraform para Seguridad

Cuándo Usarlo

  • Al integrar escaneos de seguridad en pipelines CI/CD para despliegues de Terraform
  • Al revisar planos y módulos de Terraform en busca de mejores prácticas de seguridad antes de aplicarlos
  • Al construir barreras de seguridad con políticas como código para el aprovisionamiento de infraestructura en la nube
  • Al auditar archivos de estado de Terraform existentes para identificar malas configuraciones desplegadas
  • Al aplicar estándares de seguridad organizacionales en múltiples proyectos de Terraform

No usar para monitoreo de seguridad en tiempo de ejecución (usar herramientas CSPM), para pruebas de seguridad de aplicaciones (usar SAST/DAST) o para detección de desviaciones de configuración en la nube (usar AWS Config o Azure Policy después del despliegue).

Prerrequisitos

  • Checkov instalado (pip install checkov)
  • tfsec instalado (brew install tfsec o binario desde GitHub)
  • Terrascan instalado (brew install terrascan)
  • Terraform v1.0+ para generación de planos
  • OPA (Open Policy Agent) para aplicar políticas personalizadas
  • Repositorio Git con código Terraform para auditar

Flujo de Trabajo

Paso 1: Escanear Código Terraform con Checkov

Ejecuta Checkov para un escaneo completo de seguridad de IaC con políticas integradas y personalizadas.

# Escanear un directorio de Terraform
checkov -d ./terraform/ --framework terraform

# Escanear con categorías de verificación específicas
checkov -d ./terraform/ --check CKV_AWS_18,CKV_AWS_19,CKV_AWS_20,CKV_AWS_21

# Escanear y generar resultados en JSON
checkov -d ./terraform/ --output json > checkov-results.json

# Escanear un archivo de plano de Terraform para un análisis más preciso
terraform init && terraform plan -out=tfplan
terraform show -json tfplan > tfplan.json
checkov -f tfplan.json --framework terraform_plan

# Omitir verificaciones específicas con justificación
checkov -d ./terraform/ --skip-check CKV_AWS_145 \
  --bc-api-key $BRIDGECREW_API_KEY

# Escanear módulos de Terraform
checkov -d ./modules/ --framework terraform --compact

# Listar todas las verificaciones disponibles
checkov --list --framework terraform | grep CKV_AWS

Paso 2: Escanear con tfsec para Problemas Específicos de Terraform

Usa tfsec para un análisis de seguridad nativo de Terraform con guías de remediación detalladas.

# Escanear un directorio de Terraform
tfsec ./terraform/

# Escanear con un umbral de severidad mínimo
tfsec ./terraform/ --minimum-severity HIGH

# Generar salida en JSON para procesamiento en CI/CD
tfsec ./terraform/ --format json > tfsec-results.json

# Escanear con verificaciones personalizadas
tfsec ./terraform/ --custom-check-dir ./custom-checks/

# Excluir reglas específicas
tfsec ./terraform/ --exclude-downloaded-modules \
  --exclude aws-s3-enable-bucket-logging

# Escanear y fallar con una severidad específica
tfsec ./terraform/ --minimum-severity CRITICAL --soft-fail

# Generar salida SARIF para la pestaña de Seguridad de GitHub
tfsec ./terraform/ --format sarif > tfsec.sarif

Paso 3: Ejecutar Terrascan para Cumplimiento Multi-Framework

Ejecuta Terrascan para verificar el cumplimiento con los marcos CIS, NIST y SOC 2.

# Escanear Terraform contra el benchmark CIS de AWS
terrascan scan -t aws -i terraform -d ./terraform/ \
  --policy-type aws --verbose

# Escanear contra marcos de cumplimiento específicos
terrascan scan -t aws -i terraform -d ./terraform/ \
  --policy-type aws \
  --categories "Compliance Validation"

# Generar salida en JSON
terrascan scan -t aws -i terraform -d ./terraform/ \
  --output json > terrascan-results.json

# Escanear un plano de Terraform
terrascan scan -t aws -i terraform \
  --iac-file tfplan.json \
  --iac-type tfplan

# Listar políticas disponibles
terrascan scan --list-policies -t aws

Paso 4: Crear Políticas OPA Personalizadas para Estándares Organizacionales

Escribe políticas Rego para requisitos de seguridad específicos de la organización.

# policy/aws_s3_encryption.rego
package terraform.aws.s3

denied[msg] {
    resource := input.resource.aws_s3_bucket[name]
    not resource.server_side_encryption_configuration
    msg := sprintf("El bucket S3 '%s' debe tener cifrado del lado del servidor habilitado", [name])
}

# policy/aws_iam_no_wildcards.rego
package terraform.aws.iam

denied[msg] {
    resource := input.resource.aws_iam_policy[name]
    statement := resource.policy.Statement[_]
    statement.Action == "*"
    statement.Effect == "Allow"
    msg := sprintf("La política IAM '%s' no debe usar comodines (*) en acciones", [name])
}

denied[msg] {
    resource := input.resource.aws_iam_policy[name]
    statement := resource.policy.Statement[_]
    statement.Resource == "*"
    statement.Effect == "Allow"
    contains(statement.Action[_], "*")
    msg := sprintf("La política IAM '%s' tiene acciones demasiado permisivas sobre recursos comodín", [name])
}

# policy/aws_no_public_ingress.rego
package terraform.aws.security_group

denied[msg] {
    resource := input.resource.aws_security_group_rule[name]
    resource.type == "ingress"
    resource.cidr_blocks[_] == "0.0.0.0/0"
    resource.from_port <= 22
    resource.to_port >= 22
    msg := sprintf("La regla del grupo de seguridad '%s' permite SSH desde 0.0.0.0/0", [name])
}
# Evaluar el plano de Terraform contra las políticas OPA
terraform show -json tfplan | opa eval \
  --data ./policy/ \
  --input /dev/stdin \
  "data.terraform.aws" \
  --format pretty

# Ejecutar Conftest para pruebas de políticas OPA más sencillas
conftest test tfplan.json --policy ./policy/ --output json

Paso 5: Integrar el Escaneo de Seguridad en el Pipeline CI/CD

Agrega el escaneo de seguridad de IaC como una compuerta obligatoria en CI/CD.

# GitHub Actions: Pipeline de seguridad de Terraform
name: Escaneo de Seguridad de Terraform
on:
  pull_request:
    paths: ['terraform/**']

jobs:
  security-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Configurar Terraform
        uses: hashicorp/setup-terraform@v3

      - name: Terraform Init & Plan
        run: |
          cd terraform/
          terraform init
          terraform plan -out=tfplan
          terraform show -json tfplan > tfplan.json

      - name: Escaneo Checkov
        uses: bridgecrewio/checkov-action@master
        with:
          directory: terraform/
          framework: terraform
          output_format: sarif
          output_file_path: checkov.sarif
          soft_fail: false

      - name: Escaneo tfsec
        uses: aquasecurity/[email protected]
        with:
          working_directory: terraform/
          soft_fail: false

      - name: Subir SARIF
        uses: github/codeql-action/upload-sarif@v2
        with:
          sarif_file: checkov.sarif

      - name: Verificación de Políticas OPA
        run: |
          conftest test terraform/tfplan.json \
            --policy ./policy/ \
            --output json

Paso 6: Escanear el Estado de Terraform para Malas Configuraciones Desplegadas

Audita el estado actual de Terraform para identificar problemas de seguridad ya desplegados.

# Exportar el estado actual como JSON
terraform show -json > terraform-state.json

# Escanear el estado con Checkov
checkov -f terraform-state.json --framework terraform_plan

# Consultar el estado para problemas de seguridad específicos
terraform state list | while read recurso; do
  terraform state show "$recurso" 2>/dev/null | grep -i "public\|0.0.0.0\|encrypt.*false\|password"
done

# Encontrar recursos sin las etiquetas requeridas
terraform state list | grep aws_instance | while read recurso; do
  tags=$(terraform state show "$recurso" | grep -A20 "tags")
  if ! echo "$tags" | grep -q "Environment"; then
    echo "ETIQUETA FALTANTE: a $recurso le falta la etiqueta 'Environment'"
  fi
done

Conceptos Clave

TérminoDefinición
Infraestructura como CódigoPráctica de gestionar infraestructura en la nube mediante archivos de configuración declarativos (Terraform, CloudFormation) en lugar de operaciones manuales en la consola
Política como CódigoExpresar políticas de seguridad y cumplimiento como código ejecutable (Rego, Python) que se puede evaluar automáticamente contra definiciones de infraestructura
Desplazar la Seguridad a la IzquierdaMover las comprobaciones de seguridad a etapas tempranas del ciclo de desarrollo escaneando IaC antes del despliegue en lugar de auditar después del aprovisionamiento
Plano de TerraformVista previa de los cambios que Terraform realizará, que se puede exportar como JSON para escaneos de seguridad antes de aplicar los cambios
CheckovHerramienta de análisis estático de código abierto para IaC compatible con Terraform, CloudFormation, Kubernetes y Docker, con más de 1000 políticas integradas
OPA/RegoOpen Policy Agent y su lenguaje de políticas Rego para definir reglas de seguridad personalizadas que evalúan datos estructurados de entrada

Herramientas y Sistemas

  • Checkov: Escáner integral de IaC con más de 1000 políticas para Terraform, CloudFormation, Kubernetes, ARM y Dockerfile
  • tfsec: Herramienta de análisis estático específica de Terraform con guías de remediación detalladas y salida SARIF
  • Terrascan: Escáner multi-IaC compatible con marcos de cumplimiento (CIS, NIST, SOC 2) con política como código
  • OPA/Conftest: Motor de políticas personalizadas para definir reglas de seguridad específicas de la organización usando el lenguaje Rego
  • Bridgecrew: Plataforma comercial basada en Checkov que proporciona detección de desviaciones y seguridad en la cadena de suministro

Escenarios Comunes

Escenario: Agregar Compuertas de Seguridad a un Pipeline CI/CD de Terraform Existente

Contexto: Un equipo de DevOps despliega infraestructura mediante Terraform en GitHub Actions pero no tiene escaneo de seguridad. Hallazgos de auditoría recientes muestran múltiples buckets S3 sin cifrado y grupos de seguridad que permiten SSH desde internet.

Enfoque:

  1. Agregar Checkov como la primera compuerta de seguridad en el flujo de trabajo de GitHub Actions
  2. Ejecutar checkov -d ./terraform/ para establecer la línea base actual de hallazgos
  3. Clasificar los hallazgos existentes: corregir los CRÍTICOS, crear tickets para los ALTOS, suprimir los riesgos aceptados
  4. Agregar tfsec como escáner secundario para comprobaciones específicas de Terraform
  5. Escribir políticas OPA personalizadas para estándares organizacionales (etiquetas requeridas, convenciones de nombres)
  6. Configurar el pipeline para bloquear PRs con hallazgos CRÍTICOS o ALTOS
  7. Generar informes SARIF para la integración con la pestaña de Seguridad de GitHub

Errores Comunes: Agregar escaneo de seguridad a un proyecto existente inicialmente producirá cientos de hallazgos. Implementar gradualmente comenzando con bloqueos solo CRÍTICOS y luego expandir a ALTOS. Usar comentarios de supresión en línea (#checkov:skip=CKV_AWS_18:Bucket público para sitio web estático) para excepciones intencionales con justificación documentada.

Formato de Salida

Informe de Auditoría de Seguridad de Terraform
==================================================
Repositorio: acme-corp/infrastructure
Rama: main
Fecha de Escaneo: 2026-02-23
Herramientas: Checkov 3.x, tfsec 1.x, Políticas OPA personalizadas

RESULTADOS DEL ESCANEO:
  Verificaciones Checkov pasadas:    187
  Verificaciones Checkov fallidas:    34
  Verificaciones tfsec pasadas:      156
  Verificaciones tfsec fallidas:      28
  Políticas OPA personalizadas:       12 pasadas, 3 fallidas

HALLAZGOS CRÍTICOS:
[TF-001] Bucket S3 Sin Cifrado
  Archivo: modules/storage/main.tf:24
  Recurso: aws_s3_bucket.data_lake
  Verificación: CKV_AWS_19
  Solución: Agregar bloque server_side_encryption_configuration

[TF-002] Grupo de Seguridad Permite SSH desde 0.0.0.0/0
  Archivo: modules/network/security.tf:45
  Recurso: aws_security_group_rule.ssh_access
  Verificación: CKV_AWS_24
  Solución: Restringir cidr_blocks a la subred bastión

[TF-003] Política IAM con Acciones Comodín
  Archivo: modules/iam/policies.tf:12
  Recurso: aws_iam_policy.developer_policy
  Verificación: CKV_AWS_1
  Solución: Limitar las acciones a los servicios específicos requeridos

RESUMEN POR SEVERIDAD:
  Crítico:  6 hallazgos
  Alto:     14 hallazgos
  Medio:    28 hallazgos
  Bajo:     18 hallazgos
  Info:     12 hallazgos

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Skills relacionados