Recuperar contraseña de root en CentOS 7 / RHEL 7

Uno de los objetivos en los exámenes de certificación de Red Hat es obtener la password de root en un sistema del cual desconocemos la misma. En versiones anteriores de CentOS y RHEL para recuperar la contraseña bastaba con iniciar el sistema en Single-User Mode y cambiarla mediante el comando passwd, sin embargo, en RHEL 7 (y derivadas) para acceder al modo Single-User es necesario saber la contraseña de root.

En esta entrada vamos a ver como recuperar la password de root en CentOS 7 sin entrar en Single-User Mode

Requisitos

  1. Disponer de acceso al BootLoader (GRUB en nuestro caso)

Procedimiento

Lo primero que haremos es arrancar el sistema y una vez haya cargado GRUB, nos posicionaremos sobre la Stanza encarga de arrancar nuestro sistema. Una vez posicionados presionaremos la tecla "e" para editar la Stanza y modificar los parámetros de carga del Kernel necesarios.

Si habéis seguido los pasos os encontraréis en una pantalla parecida a la siguiente:

edición stanza grub

Tendremos que añadir al final de la línea de carga de Kernel el parámetro "init=/bin/bash". Además tendremos que borrar los parámetros rhgb y quiet para  habilitar los mensajes del sistema.

Con esta modificación informamos al Kernel que en vez de lanzar el proceso init, lance el proceso /bin/bash el cual nos devolverá una Shell de root.

Tras realizar las modificaciones en la carga del Kernel:

carga de kernel modificada

Ahora ya podemos pulsar la combinación de teclas "Ctrl-x" para arrancar el sistema con las modificaciones realizadas. Si todo ha ido bien el sistema arrancará y nos devolverá una Shell de root:

Shell de Root

Ahora ya tenemos el sistema arrancado y hemos obtenido privilegios de root, el siguiente paso es cambiar la contraseña. Por seguridad el FileSystem Raíz está montado como sólo lectura, por lo tanto lo debemos volver a montar como lectura/escritura:

root fs ro

Procedemos a montar la raíz con el modo lectura/escritura:
bash-4.2# mount -o remount,rw /

Ahora el FileSystem estará montado con rw:
root fs rw

Una vez llegados a este punto ya podremos realizar el cambio de la contraseña de root:
bash-4.2# passwd root

En mi caso tengo SELinux configurado en modo Enforcing, en este caso es necesario realizar un re-etiquetado SELinux en el siguiente arranque, de lo contrario, la contraseña de root no será cambiada.

Para obligar a que se haga el re-etiquetada creamos el fichero .autorelabel en la raíz del sistema.
bash-4.2# touch /.autorelabel

Ahora ya podemos seguir con el arranque del sistema:
bash-4.2# exec /sbin/init

exec reemplaza la Shell principal y ejecuta en la nueva el proceso que le pasamos por parámetros, en este caso un nuevo proceso init que se encargará de arrancar el sistema.

Una vez termine el re-etiquetado se reiniciará automáticamente el sistema y podremos acceder con la nueva contraseña que hayamos establecido para el usuario root.

Comentarios

Entradas populares de este blog

Crear repositorio basado en el contenido del DVD de instalación y exportarlo mediante http