7. Servicio Docker
Configuraciones para servicio Docker
Control de acceso mediante usuarios agregados al grupo Docker
sudo usermod -aG docker usuario
Limitar privilegios de contenedores
docker run --cap-drop=ALL --cap-add=NET_ADMIN --cap-add=SYS_ADMIN imagen
No permitir ejecución de contenedores como root
docker run --user nobody imagen
Activar AppArmor o SELinux
Verificar perfil de AppArmor en uso
docker inspect --format='{{.HostConfig.SecurityOpt}}' container_name
Ejecutar contenedor con perfil de AppArmor
docker run --security-opt "apparmor:profile_name" imagen
Configurar cifrado TLS para comunicaciones
Desde fichero /etc/docker/daemon.json
{
"tls": true,
"tlscacert": "/path/to/ca.pem",
"tlscert": "/path/to/server-cert.pem",
"tlskey": "/path/to/server-key.pem",
"hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"]
}
Restringir acceso a la API de Docker
{
"hosts": ["unix:///var/run/docker.sock"]
}
Deshabilitar acceso a Docker Socket
docker run -v /var/run/docker.sock:/var/run/docker.sock imagen
Usar imágenes oficiales y escaneos de seguridad
docker scan imagen
Usar redes aisladas para ejecución de contenedores
docker network create --driver bridge red_segura
docker run --network red_segura imagen
Auditoría y logs de eventos de Docker
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
Reducir superficie de ataque
docker pull alpine
Implementar escaneo de vulnerabilidades sobre imágenes
trivy image imagen
Cifrar almacenamiento de volúmenes
cryptsetup luksFormat /dev/sdX
cryptsetup luksOpen /dev/sdX volume_name
Monitorizar contenedores
docker run -d -p 9090:9090 prom/prometheus
Escanear vulnerabilidades en imágenes
docker scan --file Dockerfile imagen
Limitar recursos para evitar sobrecarga de CPU y RAM
docker run --memory="512m" --cpus="1.5" imagen
Auditoría de eventos de Docker
auditctl -w /usr/bin/docker -k docker-audit