Resetear una contraseña en Linux usando una jaula chroot

Vamos a dejar temporalmente el tema de la ciberseguridad, sin dejarlo realmente de todo, y vamos a hablar sobre cómo restaurar una contraseña de Linux usando una jaula chroot, una técnica que ya vimos hace años que se podía utilizar también para otras tareas de reparación y recuperación como restaurar el GRUB. El comando chroot nos permite ejecutar un proceso bajo un directorio raíz simulado, aislado del resto del sistema. La verdad es que resetear una contraseña de esta forma es algo que no pruebo desde hace años.

Supongamos que tenemos que acceder a un equipo con Linux y hemos perdido u olvidado la contraseña. Lo primero será arrancar el equipo con una distribución de Linux en modo live, lanzamos un terminal y nos hacemos administradores ejecutando:

sudo -s

El siguiente paso sería crear una carpeta que usaremos como «punto de montaje» que en el ejemplo llamaremos recuperapass, para montar en ella la partición en la que tengamos las contraseñas (en el ejemplo pondremos sda1, en vuestro caso poned la que corresponda) y ejecutar chroot sobre ella:

mkdir /mnt/recuperapass
mount /dev/sda1 /mnt/recuperapass
chroot /mnt/recuperapass

En este punto ya está montada nuestra partición dentro de la jaula chroot en la que tenemos permisos de administrador, de esta forma podemos utilizar el comando passwd para establecer una nueva contraseña de administrador, o pasarle el nombre de un usuario si queremos cambiar la de un usuario concreto. Tras eso salimos del proceso iniciado por chroot y desmontamos la partición:

exit
umount /mnt/recuperapass

Llegados a este punto apagamos e iniciamos nuestro Linux normalmente. Ya deberíamos poder entrar con la nueva contraseña.

Linux: crear una contraseña aleatoria simple

Hemos visto un par de formas de generar claves aleatorias en Linux. Vamos a ver otra que no es especialmente compleja. No es lo más seguro para generar una serie de claves aleatorias ni da un resultado especialmente recordable, pero para un apuro te permite salir del paso en la consola cualquier distribución y sin instalar software:

date|md5sum

Tan simple como esto: tomamos la fecha en tiempo UNIX y le aplicamos la función de resumen md5.

Generar contraseñas seguras en Linux con APG

Ya vimos en el pasado cómo generar contraseñas en linux con mkpasswd, hoy veremos otro método. APG, abreviatura de Automatic Password Generator, viene instalado en Ubuntu y sus derivados. Es un programa pensado para generar contraseñas «memorizables«. Si lo ejecutas a secas te pedirá una «raíz«, una serie de datos con los que trabajar, y en base a eso creará una contraseña «memorizable«, y con «memorizable» quiero decir que junto a la contraseña te mostrará una transcripción fonética para que la recuerdes mejor.

APG Ejemplo
Ejemplo de APG

También puedes generar contraseñas totalmente aleatorias usando el comando apg a -1, que ofrece resultados de entre 8 y 10 caracteres.

Ejemplo APG 2
Ejemplo de APG con a -1

Creando contraseñas en Linux con mkpasswd

El programa mkpasswd, que es parte del paquete whois, nos permite generar contraseñas complejas y seguras a través de diversos algoritmos criptográficos.

Si no lo tienes instalado puedes agregar el paquete whois tal que así:

sudo apt-get update
sudo apt-get install whois

Una vez tengamos whois instalado ya podemos hacer uso de mkpasswd. Veamos que opciones tiene:

  • -m: Nos permite elegir el método con el que encriptaremos: entre des, md5,sha-256 y sha-512.
  • -5: Es una forma abreviada para seleccionar el método md5, sería equivalente a usar -m md5.
  • -S: Una cadena que usar como salt para el password.
  • -R: Definimos el número de rondas que se usarán, si son aplicables.
  • -P: Lee la contraseña del descriptor de fichero que le pasemos en lugar de hacerlo de /dev/tty
  • -s: Método acortado equivalente a -P 0

Por ejemplo:

#usamos el algoritmo sha-256
#pasamos como sal la cadena salamos1
mkpasswd -m sha-256 -S salamos1

#lo mismo pero con md5
mkpasswd -m md5 -S salamos1

Una captura viendo distintas opciones, distintos algoritmos y comprobando también cómo el salt no permite ciertos carácteres:
mkpasswd