Me he puesto a revisar mis articulos, y aun no hago uno para Windows sobre como hacer ByPass de inicio de sesion, pronto lo hare.
Pero para este articulo, toca expicar rapidamente como hacer ByPass de inicio de sesion en distribuciones Linux usando el cargador de arranque GRUB (al final explico como ponerle seguridad a esto).
En realidad es mas facil que en Windows. Solo hay que seguir los pasos a conticuacion listados:
- Iniciar o reiniciar el equipo.
- Al llegar a la pantalla de eleccion del sistema operativo, presionar tecla
E
. - Buscar la linea que comienza con "linux". En esa linea buscar la cadena ro (que indica permiso de solo lectura) y cambiarlo por
rw
(que significa permiso de lectura y escritura). - Al final de esa linea debera quedar de la siguiente manera:
splash \
- Presionar ENTER para generar una nueva linea y escribir
init=bin/bash
- Presionar "Ctrl + X" para reinicar el equipo. Lo que hara es iniciar en la terminal con el usuario root.
- Ahora podemos hacer lo que sea en el sistema. Es el momento de cambiar el password del usuario que queramos (si no se conoce, hacer un listado de usuarios mediante
sudo cat /etc/passwd | cut -d: -f1
) mediante el comandopasswd <user> <new_pw>
- Reiniciar el sistema mediante comando
reboot -f
- Iniciar seison con el usuario al que se le cambio la contrasena y escribir la nueva contrasena escrita.
Eso es todo, parecen muchos pasos pero en realidad es muy sencillo con un poco de practica.
Lo que falta, y que veremos en el siguiente apartado, es evitar modificar GRUB sin credenciales. Con lo que evitaremos que cualquier persona no autorizada pueda hacer ByPass en nuestro Linux.
Evitar modificar GRUB sin credenciales
Bien, ahora explicare como solicitar un password para poder entrar a la terminal a partir de GRUB. En realidad lo solicitara incluso para poder iniciar el sistema seleccionado (en siguiente apartado se explica como poder entrar al sistema seleccionado sin credenciales [pedira logearse una vez dentro del sistema seleccionado]).
A saber!
El password utilizado aqui, sera diferente al que se tiene configurado para el usuario. Es decir, puede ponerse el mismo pero en esta validacion no se compara con el que se tiene guardado en el sistema para el usuario, sino que se valida con el password que se especifica en la configuracion de GRUB para ese usuario. Vale la pena aclarar esto para que no se confunda uno al querer meter el mismo PW del sistema (valdria la pena actualizar este archivo cada vez que se cambie el PW del usuario en el sistema o, mejor aun, modificar el script para que tome el PW del usuario en el sistema, no se si se pueda).
- En la misma terminal
- Generar un password cifrado en SHA512 mediante la herramienta
grub-mkpasswd-pbkdf2
la cual nos solicitara el password y su confirmacion y nos devolvera la cadena correspondiente al password cifrado (la cual deberemos copiar para utilizarla en el siguiente paso) - Editar el archivo
/etc/grub.d/10_linux
con algun editor de texto, por ejemplo NANO. Al final del archivo agregar (o modificar si la seccion ya existe) lo siguiente:cat << EOF
set superusers=root
password_pbkdf2 root
(aqui se pegara o escribira la cadena obtenida en el paso a)EOF
- Guardar el archivo.
- Actualizar GRUB mediante
sudo update-grub
sudo grub-mkconfig -o /boot/grub/grub.cfg
- Generar un password cifrado en SHA512 mediante la herramienta
Listo, con esto hemos puestro autentificacion para poder utilizar GRUB al arrancar el equipo.
Solo me queda indicar que, en el paso (b) he configurado el password para el usuario root, pero se puede cambiar para cualquier usuario del sistema. Incluso, segun las fuentes de donde aprendi esto, se pueden poner mas usuarios. Pero esto no me ha funcionado a mi aun, por lo que no lo pongo como lo encontre.
ACTUALIZACION
Ya encontre la manera de poder meter mas de un usuario en las credenciales de GRUB, es sencillo:
-
Solo habra una linea set superusers que contendra a todos los usuarios
set superusers="user_1,user_2,...,user_n"
-
Posteriormente, definir cada password en una linea diferente para cada usuario con
password_pbkdf2 user_1 grub.pbk...
password_pbkdf2 user_2 grub.pbk...
password_pbkdf2 user_n grub.pbk...
Entrar al sistema seleccionado sin credenciales
Hasta este momento tenemos que ingresar las credenciales en todo momento, sea cual sea lo que vayamos a hacer: seleccionar un sistema, entrar a modificar el GRUB... pedira credenciales.
A mi parecer es molesto tener que firmarnos una vez para seleccionar el sistema a usar (en el GRUB) y otra vez para poder utilizar el sistema (credenciales normales).
Creo yo que solo deberia pedir el GRUB las credenciales al momento de querer modificarlo y dejar seleccionar el sistema que se quiera.
Para remediar esto, haremos:
- Modificar archivo 10_linux (con nano, por ejemplo)
sudo nano /etc/grub.d/10_linux
- Localizar las siguientes lineas:
echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
else
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
- Modificarlas de la siguiente manera:
echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} --unrestricted \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
else
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} --unrestricted \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
- Actualizar GRUB mediante
sudo update-grub
sudo grub-mkconfig -o /boot/grub/grub.cfg
Fuentes: