Un artículo de XDA este mes reveló algo que la mayoría de homelabs aprenden de la manera difícil: un archivo Docker Compose que funciona no es un archivo Docker Compose seguro. Los puertos se vinculan a 0.0.0.0 cuando deberían quedarse en 127.0.0.1, los servicios de base de datos terminan en el mismo puente público que el proxy inverso, y los paneles de administrador se envían con credenciales predeterminadas que nadie recuerda rotar. La solución es un escáner que lee el archivo compose, la imagen y la configuración del contenedor en conjunto, e indica qué está expuesto. Probamos siete herramientas de seguridad de Docker Compose en Windows, macOS y Linux contra una pila de homelab real, enfocándonos en las verificaciones que detectan configuraciones incorrectas reales en lugar de ruido.
Qué buscar en un escáner de seguridad de Docker Compose
El análisis consciente de Compose es la primera verificación. Un escáner que solo lee Dockerfile perderá los enlaces de puerto, la topología de red y los bloques de entorno que viven en docker-compose.yml. La opción correcta lee ambos y entiende expose versus ports, redes en modo de host y montajes de vinculación que llegan a /etc o /var/run/docker.sock.
Los datos de vulnerabilidad deben ser actuales. Eso significa un feed de CVE que se actualiza diariamente, cobertura de paquetes de distribución y dependencias a nivel de lenguaje, y una forma de saber qué hallazgos son realmente explotables en el contenedor en ejecución en lugar de solo presentes en la imagen. Una herramienta que muestra cada CVE independientemente del contexto inunda un homelab con advertencias y se ignora dentro de una semana.
La salida compatible con CI es lo que convierte un escaneo único en una verificación duradera. Salida JSON o SARIF, códigos de salida distintos de cero en hallazgos por encima de una gravedad elegida, y comentarios de supresión inline en el archivo compose permiten que la misma herramienta viva en un gancho de preconfirmación de git, un trabajo de GitHub Actions o un cron nocturno. La operación local primero es importante para un homelab, sin telemetría, sin cuenta de nube forzada.
Comparación rápida
| Aplicación | Mejor para | Plataformas | Plan gratuito | Precio inicial | Calificación |
|---|---|---|---|---|---|
| Trivy | Escáner de imagen y compose todo en uno | Windows, macOS, Linux | Sí | Gratuito | 4.8 |
| Docker Bench for Security | Auditoría de host y daemon CIS | Linux, macOS | Sí | Gratuito | 4.6 |
| Grype | Escaneo de vulnerabilidades de imagen rápido | Windows, macOS, Linux | Sí | Gratuito | 4.6 |
| Dockle | Linter de mejores prácticas de imagen | Windows, macOS, Linux | Sí | Gratuito | 4.5 |
| Hadolint | Linter de Dockerfile con reglas de seguridad | Windows, macOS, Linux | Sí | Gratuito | 4.6 |
| Checkov | Escáner de política de IaC y compose | Windows, macOS, Linux | Sí | Gratuito | 4.6 |
| Sysdig CLI Scanner | Escaneo de imagen profundo consciente del tiempo de ejecución | Windows, macOS, Linux | Prueba | Modesto para uso comercial | 4.5 |
1. Trivy, el primer paso por defecto para cualquier pila de compose
Trivy es la herramienta en la que la mayoría de homelabs aterrizan primero, y se merece el lugar. Escanea imágenes de contenedor para vulnerabilidades de SO y lenguaje, lee Dockerfiles y archivos compose para configuraciones incorrectas, e incluye escaneo de secretos que detecta una clave de API confirmada en un archivo env. Una única ejecución de trivy config docker-compose.yml contra una pila de homelab real produce un informe legible en menos de un minuto.
La actualización de la base de datos se ejecuta en cada escaneo por defecto, lo que mantiene los hallazgos actuales sin un trabajo cron. Los modos de salida cubren una tabla legible por humanos, JSON, SARIF e SBOM de CycloneDX, y los códigos de salida funcionan en un pipeline de CI. Es gratuito y de código abierto, se ejecuta como un único binario y sigue siendo útil mucho después del escaneo inicial.
- Plataforma: Windows, macOS, Linux
- Aspectos destacados: escaneo de imagen e IaC, detección de secretos, salida SBOM, instalación de binario único
- Precio: gratuito y de código abierto
- Ideal para: el primer escáner instalado en un homelab fresco
- Descargar: trivy.dev
2. Docker Bench for Security, la auditoría CIS para el host y el daemon
Docker Bench for Security es un script de shell que recorre la Evaluación Comparativa de Docker CIS contra un host en ejecución. Verifica la configuración del daemon, los contenedores en ejecución actualmente e imágenes ya en el disco contra aproximadamente cien controles documentados e imprime un informe con estados pass, warn, info y note.
No es un analizador de compose, pero es la forma más rápida de capturar configuraciones incorrectas a nivel de host que un escáner de compose no puede ver: un daemon de Docker escuchando en TCP sin TLS, contenedores --privileged, falta de no-new-privileges, valores predeterminados del controlador de registro y permisos de archivo en /etc/docker. Ejecute una vez al mes en cualquier host que ejecute un servicio público y fije los resultados en la wiki.
- Plataforma: Linux, macOS (bash)
- Aspectos destacados: verificaciones alineadas con CIS, cobertura de host y daemon, salida de texto plano y JSON
- Precio: gratuito y de código abierto
- Ideal para: auditoría trimestral del host Docker en sí
- Descargar: github.com/docker/docker-bench-security
3. Grype, escaneo rápido de vulnerabilidades de imagen emparejado con Syft
Grype es el escáner de vulnerabilidades de código abierto de Anchore. Lee una imagen directamente o un SBOM producido por Syft y devuelve una lista de CVE conocidas contra paquetes instalados y dependencias a nivel de lenguaje. Los escaneos se ejecutan en segundos porque Grype envía su base de datos de vulnerabilidades localmente y se actualiza según lo programado.
La razón para emparejarlo con Trivy es la cobertura. Trivy es más amplio; Grype a menudo detecta paquetes a nivel de lenguaje que Trivy no detecta, especialmente en imágenes Python y Node. En la práctica ejecutamos ambos en el mismo pipeline y fallamos en cualquier hallazgo de alta gravedad de cualquiera de los dos. Grype no agrega telemetría forzada ni cuenta, y funciona de la misma manera en todos los sistemas operativos de escritorio.
- Plataforma: Windows, macOS, Linux
- Aspectos destacados: escaneo basado en SBOM, base de datos de vulnerabilidades local, salida JSON y SARIF, escaneos rápidos
- Precio: gratuito y de código abierto
- Ideal para: una segunda opinión junto a Trivy en CVE de imagen
- Descargar: github.com/anchore/grype
4. Dockle, linter de mejores prácticas de imagen para el paso de CI
Dockle es un linter de imagen de contenedor alineado con las mejores prácticas de CIS. Donde Trivy se enfoca en CVE y Grype en vulnerabilidades de paquetes, Dockle verifica cómo se construye la imagen: ¿se establece USER en una cuenta que no es raíz, se envía un binario sudo innecesario adentro, ¿se cuecen los secretos en las capas, expone la imagen un shell que no necesita. Los hallazgos se asignan a números de control de CIS.
Es un pequeño binario que se ajusta a un trabajo de CI como un único comando por imagen. La salida es lo suficientemente corta para leerla, y el código de salida facilita la entrada. Junto con un escáner de compose cubre los dos lados del mismo problema: lo que el archivo de compose conecta y lo que contiene la imagen antes de ser conectada.
- Plataforma: Windows, macOS, Linux
- Aspectos destacados: linting de imagen, asignación de CIS, informes breves, fácil integración de CI
- Precio: gratuito y de código abierto
- Ideal para: capturar hábitos de construcción de imagen antes de que se envíen
- Descargar: github.com/goodwithtech/dockle
5. Hadolint, linter de Dockerfile que detecta errores adyacentes de compose
Hadolint lee un Dockerfile y señala los patrones que terminan como problemas de compose: credenciales codificadas, etiquetas faltantes, apt-get install -y sin limpieza, usuarios raíz dejados en su lugar y ADD usado donde pertenece COPY. Analiza el Dockerfile con un analizador de shell Haskell real, por eso detecta problemas que una herramienta basada en regex se pierde.
Hadolint está aguas arriba de compose. Arregle el Dockerfile una vez y el escáner de compose tiene menos de qué quejarse. Se ejecuta como un único binario, se integra limpiamente con pre-commit o CI y agrega una de las verificaciones de señal más altas por línea de código que hemos medido en proyectos de homelab.
- Plataforma: Windows, macOS, Linux
- Aspectos destacados: analizador de shell real, cientos de reglas, salida JSON y SARIF, listo para pre-commit
- Precio: gratuito y de código abierto
- Ideal para: equipos que escriben sus propios Dockerfile en lugar de extraer imágenes ascendentes
- Descargar: github.com/hadolint/hadolint
6. Checkov, política como código entre compose, Kubernetes y Terraform
Checkov es un escáner de política como código que habla docker-compose, manifiestos de Kubernetes, Terraform, Helm y una docena de otros formatos de IaC. En un archivo compose señala zócalos de daemon expuestos, contenedores raíz, modo de red de host, límites de recursos faltantes y enlaces de puerto públicos. Las políticas se envían con valores predeterminados razonables y se pueden ajustar por repositorio con un archivo de configuración.
La razón para elegirlo sobre una herramienta de formato único es la mezcla. Un homelab que ejecuta Docker Compose hoy pero planea pasar a un pequeño clúster k3s o Nomad mañana obtiene las mismas verificaciones contra ambos, y los mismos comentarios de supresión se transfieren. Se ejecuta donde sea que Python se ejecute, lo que cubre todos los sistemas operativos de escritorio.
- Plataforma: Windows, macOS, Linux
- Aspectos destacados: cobertura de IaC de múltiples formatos, políticas personalizadas, comentarios de supresión, salida SARIF
- Precio: gratuito y de código abierto
- Ideal para: homelabs de IaC mixtos que desean un motor de políticas
- Descargar: github.com/bridgecrewio/checkov
7. Sysdig CLI Scanner, la opción más profunda cuando el contexto de tiempo de ejecución importa
Sysdig CLI Scanner combina escaneo de vulnerabilidades con conocimiento de tiempo de ejecución. Lee la imagen, correlaciona CVE contra un feed de vulnerabilidades y, cuando se combina con una implementación de Sysdig, filtra los paquetes realmente cargados en tiempo de ejecución. Ese único filtro a menudo convierte un informe de cientos de hallazgos en una lista corta de una docena.
El escáner se ejecuta como un único binario en todos los sistemas operativos de escritorio. El nivel gratuito cubre la evaluación y pequeñas implementaciones; el uso comercial cae bajo un plan de pago. Para un homelab serio o un pequeño equipo que aloja servicios fuera de la LAN, el filtro de tiempo de ejecución vale la pena la configuración. Para una pila puramente privada, Trivy más Grype cubre la mayoría del mismo terreno de forma gratuita.
- Plataforma: Windows, macOS, Linux
- Aspectos destacados: filtrado consciente de tiempo de ejecución, escaneo de IaC e imagen, biblioteca de políticas, salida JSON
- Precio: nivel gratuito para evaluación y pequeño uso, pago para implementaciones comerciales
- Ideal para: equipos que ya ejecutan Sysdig para seguridad de tiempo de ejecución
- Descargar: docs.sysdig.com/en/sysdig-secure/vulnerability-management/cli-scanner
Cómo elegir el correcto
La respuesta predeterminada para un homelab es Trivy. Instálelo, ejecútelo contra el archivo compose y solucione lo que aparece. Cubre CVE de imagen, configuraciones incorrectas de compose y detección de secretos en un binario. Si un homelab ejecuta servicios públicos, agregue Docker Bench for Security como una auditoría mensual contra el host en sí, ya que un escáner de compose no puede ver problemas a nivel de daemon.
Para equipos que construyen sus propias imágenes, Hadolint detecta errores en la etapa de Dockerfile y Dockle detecta los que sobreviven a la imagen construida. Grype se gana un lugar junto a Trivy cuando la carga de trabajo es pesada en Python o Node, porque tiende a encontrar CVE a nivel de lenguaje que otros pasaron por alto. Checkov es la opción correcta para un repositorio de IaC mixto. Sysdig CLI Scanner es la opción más profunda para equipos que desean contexto de tiempo de ejecución y están listos para emparejarlo con un backend de Sysdig. Apilar los siete es excesivo; elija dos o tres y ejecute en cada confirmación.
FAQ
¿Cómo escaneo un docker-compose.yml para problemas de seguridad?
Instale Trivy y ejecute trivy config docker-compose.yml. Informa sobre exposición de puerto, contenedores raíz, zócalos de Docker montados y patrones secretos en un informe de texto plano. Agregue --exit-code 1 --severity HIGH,CRITICAL para fallar en un pipeline de CI en hallazgos serios.
¿Es Trivy mejor que Grype para la seguridad de Docker? Son complementarios en lugar de competidores. Trivy cubre una superficie más amplia, archivos de compose, imágenes e IaC, mientras que Grype a menudo detecta más CVE a nivel de lenguaje en imágenes Python, Node y Ruby. Ejecutar ambos en el mismo pipeline detecta más que cualquiera solo.
¿Cuál es la diferencia entre Dockle y Hadolint? Hadolint verifica el Dockerfile antes de que se construya la imagen. Dockle verifica la imagen construida en sí. Juntos cubren el mismo problema desde ambos lados: malos patrones de construcción y mal estado de imagen.
¿Puedo ejecutar estas herramientas sin una conexión a Internet? Trivy, Grype y Sysdig CLI Scanner todos admiten operación sin aire importando la base de datos de vulnerabilidades de un espejo. Dockle, Hadolint y Docker Bench for Security se ejecutan sin conexión de forma predeterminada porque sus reglas están horneadas.
¿Funcionan estos escáneres en Windows y macOS? Sí. Trivy, Grype, Dockle, Hadolint, Checkov y Sysdig CLI Scanner envían binarios nativos o contenedores para Windows, macOS y Linux. Docker Bench for Security es un script bash y se ejecuta en macOS y Linux; en Windows se ejecuta dentro de WSL.
¿Son estas herramientas gratuitas para uso personal? Los siete tienen un nivel gratuito para uso personal y homelab. Trivy, Grype, Dockle, Hadolint, Checkov y Docker Bench for Security son completamente de código abierto. Sysdig CLI Scanner es gratuito para evaluación y pequeño uso, con un plan de pago para implementaciones comerciales.