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