Introducción
Los contenedores comparten el kernel del host: configuraciones incorrectas pueden permitir ataques como escalada de privilegios o fugas de datos. Esta guía organiza la seguridad en cuatro áreas clave: integridad de imágenes, endurecimiento del entorno, aislamiento de red y monitoreo.
Entendiendo los riesgos de seguridad en Docker
Vulnerabilidades comunes en entornos con contenedores:
Vectores de ataque principales
- Escalada de privilegios: Acceso root al host mediante contenedores mal configurados
- Imágenes desactualizadas: Dependencias inseguras en imágenes base
- Puertos expuestos: Servicios accesibles sin autorización
- Filtración de secretos: Credenciales codificadas en imágenes
Herramientas de análisis
- Trivy: Escáner de vulnerabilidades para imágenes
- Docker Bench: Verificación contra estándares CIS
- Falco: Detección de anomalías en tiempo real
# Escaneo de imagen con Trivy
trivy image mi-app:latest
Consejo clave: Integra escaneos automatizados en tus pipelines CI/CD.
Asegurando imágenes de contenedores
Las imágenes seguras son la base de cualquier estrategia de seguridad.
Mejores prácticas
-
Imágenes base mínimas
- Usa imágenes ligeras como
Alpine
oDistroless
:
FROM alpine:3.18
- Usa imágenes ligeras como
-
Construcción en múltiples etapas
- Separa entornos de compilación y ejecución:
FROM node:20 AS builder COPY . . RUN npm install && npm run build FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html
-
Escanear y firmar imágenes
- Integra escaneos en CI/CD
- Firma digital con Cosign:
# Generar par de claves cosign generate-key-pair # Firmar imagen cosign sign --key cosign.key mi-app:v1.2.0 # Verificar firma cosign verify --key cosign.pub mi-app:v1.2.0
Endureciendo la configuración en tiempo de ejecución
Las imágenes seguras no son suficientes: protege el entorno de ejecución.
Medidas clave
-
Ejecutar sin privilegios root
USER 1001 # En Dockerfile
docker run --user 1001 mi-app # Durante la ejecución
-
Limitar recursos
docker run --cpus 2 --memory 512m --pids-limit 100 mi-app
-
Sistema de archivos solo lectura
docker run --read-only --tmpfs /tmp mi-app
-
Eliminar capacidades innecesarias
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE nginx
Advertencia: Elimina capacidades peligrosas como SYS_ADMIN
y NET_RAW
.
Seguridad de red y aislamiento
Las redes Docker suelen tener configuraciones demasiado permisivas.
Medidas de protección
-
Redes bridge personalizadas
docker network create --driver bridge frontend-seguro docker run --network frontend-seguro react-app
-
Minimizar exposición de puertos
EXPOSE 443/tcp # Solo exponer puertos necesarios
-
Cifrado TLS
- mTLS con mallas de servicio como Istio
-
Bloquear movimiento lateral
dockerd --icc=false # Desactivar comunicación entre contenedores
Protección del host
Un host comprometido pone en riesgo todos los contenedores.
Acciones esenciales
-
Activar SELinux/AppArmor
apparmor_parser -r /etc/apparmor.d/docker-restringido
-
Asegurar el daemon Docker
chmod 660 /var/run/docker.sock && chown root:docker /var/run/docker.sock
-
Docker sin root (experimental)
dockerd-rootless-setuptool.sh install
Gestión de secretos
¡Nunca almacenes credenciales en imágenes o variables de entorno!
Soluciones recomendadas
-
Secretos Docker (modo Swarm)
echo "db_pass" | docker secret create db_pass -
-
Integración con HashiCorp Vault
docker run --env VAULT_TOKEN=s.xyz mi-app
Monitoreo y respuesta a incidentes
Herramientas esenciales
-
Falco para detección de anomalías
falco -r /etc/falco/reglas_falco.yaml
-
Registro centralizado
dockerd --log-driver=journald # Integración con systemd-journal
-
Auditorías regulares
./docker-bench-security.sh # Automatizar verificaciones CIS
Estrategias avanzadas
1. Sandboxing con gVisor
docker run --runtime=runsc nginx # Capa adicional de seguridad
2. Redes Zero-Trust
- Mallas de servicio como Linkerd para mTLS
3. Infraestructura inmutable
- Reconstruir contenedores en lugar de aplicar parches en vivo
Conclusión
La seguridad en Docker es un proceso continuo. Imágenes mínimas, endurecimiento del entorno y monitoreo automatizado reducen superficies de ataque. Combina estas prácticas con herramientas como Falco para seguridad empresarial.