Para empezarUn contenedor ejecutándose como root es una bomba de tiempo lista para comprometer todo tu servidor.
El mito del aislamiento
Muchos desarrolladores asumen que un contenedor es una máquina virtual ligera y segura por defecto. La realidad es que los contenedores comparten el kernel del sistema operativo anfitrión, lo que significa que un fallo de configuración o un escape de contenedor expone directamente toda la infraestructura subyacente.
Qué es el Hardening en Docker
El hardening de contenedores es el proceso de asegurar una aplicación y su entorno reduciendo la superficie de ataque. Implica eliminar componentes innecesarios, aplicar el principio de mínimo privilegio y restringir las capacidades del kernel que el contenedor puede solicitar.
Reglas de oro en el Dockerfile
Para construir imágenes seguras desde la fase de desarrollo, debes seguir una serie de directrices estrictas en tus archivos de configuración.
Marca cada paso al entenderlo · 0/4
Verificando el usuario activo
Siempre debes comprobar qué UID está ejecutando los procesos dentro de tu contenedor en ejecución para asegurarte de que no es el superusuario.
$ docker exec -it web_app_1 whoami
root
$ docker inspect --format='{{.Config.User}}' web_app_1
El peligro de los flags inseguros
Jamás despliegues contenedores utilizando flags como --privileged o montando el socket de Docker dentro del contenedor (-v /var/run/docker.sock:/var/run/docker.sock). Hacer esto equivale a otorgar acceso root total al host, permitiendo que un atacante cree nuevos contenedores y controle la máquina física.
Limitando recursos y privilegios
Un despliegue seguro en producción debe restringir las capacidades de Linux y limitar los recursos de CPU y memoria para mitigar ataques de denegación de servicio.
$ docker run --read-only --drop-all --cap-add=NET_BIND_SERVICE -m 512m -d mi_imagen_segura
container ID: 8f4a2b1e9c7d
Atajos: ← → para cambiar de pieza · / para buscar
