Imprimer
Catégorie parente: Linux
Catégorie : Seguridad

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:

  1. Iniciar o reiniciar el equipo.
  2. Al llegar a la pantalla de eleccion del sistema operativo, presionar tecla E.
  3. 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).
  4. Al final de esa linea debera quedar de la siguiente manera: splash \
  5. Presionar ENTER para generar una nueva linea y escribir init=bin/bash
  6. Presionar "Ctrl + X" para reinicar el equipo. Lo que hara es iniciar en la terminal con el usuario root.
  7. 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 comando passwd <user> <new_pw>
  8. Reiniciar el sistema mediante comando reboot -f
  9. 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).

  1. En la misma terminal
    1. 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)
    2. 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
    3. Guardar el archivo.
    4. Actualizar GRUB mediante
      sudo update-grub
      sudo grub-mkconfig -o /boot/grub/grub.cfg

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:

  1. Solo habra una linea set superusers que contendra a todos los usuarios
    set superusers="user_1,user_2,...,user_n"

  2. 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:

  1. Modificar archivo 10_linux (con nano, por ejemplo)
    sudo nano /etc/grub.d/10_linux
  2. 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/"
  3. 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/"
  4. Actualizar GRUB mediante
    sudo update-grub
    sudo grub-mkconfig -o /boot/grub/grub.cfg

Fuentes:

Affichages : 432