- ENTRADA 037 -
La seguridad de Grub
Así que la Srta. Heras quiere entrar... es fácil entrar, lo difícil será salir.
--- Fecha: jue 08 feb 2024 19:06:45 CET ---
Recupero un equipo viejísimo con GNU/Linux, pero no sé la contraseña de root, así que no puedo hacer demasiado... ¿o tal vez sí?
Desempolvo mi vieja libreta de apuntes y encuentro un truco que utilicé hace tiempo en un equipo y que me pareció muy útil: saltarse la contraseña de root
Cambiar contraseña
Cuando aparece Grub, pulsa la tecla "e" estando encima de la entrada para arrancar GNU/Linux. Ve a la linea que pone algo como:
linux /boot/vmlinuz-3.16.0-4-amd64 root=UUID=d2b3420f'-7e1f-486e-bdb0-4ff9sfs4fs7 ro quiet
Donde pone "ro" cambialo por "rw" y al final de la linea añade "init=/bin/bash" (todo sin las comillas). Esto indica al kernel que ejecute /bin/bash como init, en lugar de ejecutar init como sistema.
NOTA: En algunas distribuciones, verás que pone "ro single", cambialo igualmente.
Ahora pulsas Ctrl+x o F10 para seguir el arranque con este cambio temporal, y te devolverá una consola root. Teclea el comando passwd y mete la nueva contraseña. Ahora puedes reiniciar y ya tienes una contraseña que recuerdas.
A veces no hace caso a la opción "rw" así que hay que remontar el filesystem para que tenga permisos de escritura:
mount -o remount rw /
Eliminar la contraseña
Se puede eliminar la contraseña de root para entrar directamente en vez de cambiarla, pero no es recomendable por temas obvios de seguridad.
Se hacen los mismos pasos que antes, pero ahora hay que editar el archivo /etc/shadow. En la primera línea está la información de root, así que eliminando el asterisco (*) después de los primeros dos puntos (:) de forma que quede un espacio vacío dejamos a root sin contraseña.
Cambiar esto:
- root:$3$hDPwvOnU28NZ0Ubw$dMX1lk4/vaI4ZLApj7n/XrBVTTTIpr6y8ahwEaAIOTh1:18305:0:99999:7:::
Por esto:
- root::18305:0:99999:7:::
Guardas los cambios y reinicias.
Si te logueas como root no te pide contraseña, así que ha llegado el momento de poner una contraseña nueva con el comando passwd, no dejes a root sin ella ;-)
Securizando Grub
Este método es muy peligroso. Puedo pinchar un USB y copiarme /etc/passwd y /etc/shadow y mediante unshadow puedo conseguir las contraseñas de los usuarios de ese sistema.
unshadow <fichero-passwd> <fichero-shadow> > passwords
Así que si crees que alguien pueda tener acceso a tu equipo, lo mejor es que pongas una contraseña a Grub, que es muy fácil y seguro.
Se suele usar una contraseña tipo PBKDF2 (Password-Based Key Derivation Function 2) que soporta bastante bien los ataques por fuerza bruta. Para ello generamos un hash que hay que copiar:
grub-mkpasswd-pbkdf2 Enter password: Reenter password: Your PBKDF2 hash is grub.pbkdf2.sha512.10000.S8ABDDD4156313DA3D0D9BFFC2846C21D5A2DDA2602CF6378F8A064C94198D0678E707E12.5090B6B34X34FBAD22D3E6E1944D9B101996C5F98ACF4ABD8661C172AHDB7D14A843261FFF2C07B1269A
Ahora editas /etc/grub.d/40_custom para añadir lo siguiente:
set superusers="nombreusuario"
password_pbkdf2 nombreusuario HASH_anterior
NOTA: Parece que en algunas distribuciones el archivo a editar es /etc/grub.d/00_header
Solo queda actualizar Grub para aplicar los cambios.
grub-mkconfig -o /boot/grub/grub.cfg
NOTA: En otras distribuciones como Debian, la orden es update-grub
La línea de órdenes y los parámetros de arranque de Grub ahora estarán protegidos. Se nos mostrará un login para su acceso donde introduciremos el usuario y contraseña establecidos anteriormente para poder proseguir con el arranque.
NOTA: Hay que tener en cuenta que no es la clave de sistema (el sistema no ha arrancado), es una clave específica para Grub.
Tags #grub
/blog/