Cómo cambiar la contraseña de root en un contenedor Docker
Es posible que ya hayas leído que algunas imágenes de Docker se lanzaron con contraseñas nulas. Esto podría haber llevado fácilmente a problemas de seguridad graves en cualquier contenedor que pudieras haber desplegado con esa imagen descargada.
Aunque esto no es típico, es posible que desees que tus contenedores se desplieguen con un mayor nivel de seguridad. Si bien esto puede no ser la mejor solución para cada contenedor con el que trabajas, es posible cambiar la contraseña de root en una imagen. Puede ser complicado, porque algunas imágenes dependen de una contraseña establecida para el usuario root. Sin embargo, si planeas realizar mucho desarrollo interno, ciertamente no quieres basar esos contenedores en imágenes con una seguridad débil.
Con ese fin, quiero mostrarte cómo puedes cambiar la contraseña de root en un contenedor en ejecución y luego confirmar ese cambio en la imagen.
Lo demostraré con la imagen oficial de CentOS. Deberías poder hacer esto con cualquiera de las imágenes oficiales de distribuciones de Linux de DockerHub (o cualquier imagen que hayas creado por tu cuenta). Asumiré que ya tienes Docker instalado y en funcionamiento.
Desplegando el contenedor
Lo primero que debes hacer es desplegar el contenedor de CentOS, basado en la imagen oficial. Esto se hace con el siguiente comando:
docker run -it centos
Cuando ese comando se complete (es posible que primero deba descargar la imagen de CentOS), te encontrarás en el símbolo del sistema de bash como usuario root. Ejecuta el siguiente comando:
cat /etc/shadow | grep root
Deberías ver que el usuario root no tiene una contraseña encriptada (Figura A).
Vamos a cambiar eso. Ejecuta el siguiente comando:
passwd
Cuando se te solicite, escribe y verifica una nueva contraseña para el usuario root. Cuando esto se complete, puedes ejecutar el comando cat /etc/shadow | grep root
para ver que ahora el usuario root tiene una contraseña encriptada.
Confirmar el cambio
De vuelta en tu símbolo del sistema regular (fuera del contenedor), debes confirmar el cambio en la imagen (de lo contrario, simplemente desplegarás más contenedores sin contraseña). Para confirmar nuestro cambio, ejecuta el siguiente comando:
docker commit CONTAINER_ID NOMBRE_IMAGEN_NUEVA
Donde CONTAINER_ID es el ID del contenedor para el cual cambiaste la contraseña de root, y NOMBRE_IMAGEN_NUEVA es un nombre único para la nueva imagen. Si no estás seguro de cuál es el ID, ejecuta el comando docker ps -a
. No es necesario utilizar el ID completo del contenedor, solo los primeros cuatro caracteres serán suficientes.
Verificar la nueva imagen
Para ver si esto funcionó, despliega un nuevo contenedor con la nueva imagen de la siguiente manera:
docker run -it NOMBRE_IMAGEN_NUEVA
Donde NOMBRE_IMAGEN_NUEVA es el nuevo nombre de la imagen.
¡Cuidado! Vulnerabilidad en Google Calendar permite robo de credencialesTe encontrarás dentro del nuevo contenedor desplegado. Ejecuta el siguiente comando:
cat /etc/shadow | grep root
Deberías ver que la contraseña de root está encriptada (Figura B).
Sal del contenedor y ahora estás listo para comenzar a desplegar otros contenedores basados en tu imagen de CentOS modificada.
Precaución
Como mencioné, este método puede no funcionar para todas las ocasiones. Puede haber casos en los que alguien haya creado una imagen muy específica (para un propósito específico) y la contraseña de root debe permanecer sin cambios. Pero para aquellos contenedores que deseas desplegar, que están basados en imágenes base oficiales (como CentOS, Ubuntu, Debian, etc.), puedes cambiar esa contraseña de root por algo sólido y descansar tranquilo sabiendo que se ha cambiado la contraseña de root.
El uso de autenticación multifactorial aumentaEn Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Seguridad, allí encontraras muchos artículos similares a Cómo cambiar la contraseña de root en un contenedor Docker , tenemos lo ultimo en tecnología 2023.
Artículos Relacionados