Muy bienas lector. En esta guía te explicaré como puedes establecer una protección por contraseña en GRUB, el cargador de arranque utilizado por la mayor parte de distribuciones GNU/Linux.
Si sigues estas líneas verás en que casos te puede ser de utilidad implementar esta medida, y los pasos que debes seguir a la hora de establecer usuario y contraseña con derecho a ejecutar las diferentes entradas de arranque del menú de GRUB. ¡Vamos allá!
Tabla de contenidos:
- ¿Que es GRUB?
- ¿Como funciona la protección con contraseña para GRUB?
- Pasos para establecer usuario y contraseña para GRUB
¿Que es GRUB?
GRUB son las siglas de GNU GRand Unified Bootloader, y es el cargador de arranque utilizado en la gran mayoría de distribuciones GNU/Linux a día de hoy. Su función principal es la de ejecutarse en primera instancia durante el arranque del equipo, y hacer de interfaz de usuario para poder gestionar y ejecutar las diferentes opciones de arranque que encuentre disponibles.
En la mayoría de los casos es un elemento transparente al usuario, haciendo acto de presencia, especialmente, cuando se dan modalidades multi-arranque, en las que debes indicar especificamente con que sistema operativo deseas arrancar. En estos casos, GRUB te muestra un menú con varias entradas, indicando las diferentes opciones de arranque.
Si no se da este caso, el menú de GRUB no suele aparece, ya que, aunque disponga de otras entradas (para, por ejemplo, arrancar con versiones anteriores del kernel, o acceder a opciones avanzadas), siempre ejecuta la que tiene marcada por defecto, que por lo general es la que permite arrancar el sistema operativo con la última versión del kernel.
Adicionalmente a esto, GRUB también dispone de una consola de administración, en la que puedes proporcionar comandos para realizar tareas más avanzadas, como intentar recuperar un sistema operativo que no arranque correctamente, o modificar el orden predeterminado de arranque de las diferentes opciones del menú.
Como Funciona la Protección por Contraseña para GRUB
Por defecto, la interfaz del cargador de arranque es accesible para cualquier persona con acceso físico al equipo, y en muchos casos, ya es conveniente que sea así.
El hecho de implementar una protección con contraseña en GRUB es una interesante medida de protección de cara a prevenir cierto tipo de intentos de acceso a tu equipo, sobretodo si va acompañada de otras medidas, como el cifrado de disco, o la protección a nivel de BIOS y/o UEFI.
Aún así, conviene tener claros los limites de su rango de actuación. De entrada, se trata de un mecanismo de protección orientado sobretodo a restringir el acceso a la consola de GRUB, o la ejecución de una o varias de sus entradas, por parte de alguien que tenga acceso físico al equipo.
No pretende, ni es su función, prevenirte de ataques remotos, ni tampoco puede entrar en juego una vez el equipo esté encendido (aunque con la sesión bloqueada).
En resumen, y con todo lo dicho, considero que es una medida interesante, sobretoro porqué resulta generalmente fácil de implementar, y no supone un impacto muy grande en cuanto a usabilidad (aunque eso también depende de como se configure).
Pasos para Establecer Usuario y Contraseña para GRUB
Hay varias métodos a la hora de configurar la protección con contraseña para GRUB, pero en este post te explicaré la manera que considero más rápida y limpia de implementar, sin liarnos en opciones adicionales que se puedan derivar.
De entrada, el primer paso sería establecer la contraseña que desees, y obtener el hash de la misma. Esto es importante para no tener que almacenar la contraseña en texto plano (una práctica nada recomendable en ningún caso). Para hacer esto, tan solo debes abrir la terminal y ejecutar el siguiente comando.
sudo grub-mkpasswd-pbkdf2
Al hacer esto, se te pedirá que insertes la misma contraseña que deseas por duplicado, y, como resultado, te aparecerá un mensaje como el que te indico debajo (este hash es inventado, debes fijarte en el que te aparezca a ti):
El hash de PBKDF2 de su contraseña es grub.pbkdf2.sha512.1000.B3A64D7057DA35H95CA52DA57B31CA136DAA5721DDA716A5297A8A7D26A81A6A20C0493A5BB3AA040F3842434290305CAACD243514537679F090807CADBED258.A03A1780709A4EB38328E2049F180607F6E36E6F5E0AC3F2553414C6B155D26E773AFAC0C41D4CAB30AC09743224259F451178D7CFE90DAF408FA5366A19310C
La cadena de texto que te aparece justo después de El hash de PBKDF2 de su contraseña es debes copiarla en el portapapeles, incluyendo grub.pbkdf2.sha512.
Ahora, para habilitar la autenticación en GRUB, debes editar la variable de entorno superusers con el nombre de usuario que quieres que se acredite para poder usar GRUB y tener acceso a ejecutar o editar las diferentes entradas del menú de arranque.
Tienes varias formas para hacer esto, pero lo que te recomiendo es editando el fichero de configuración /etc/grub.d/40_custom. Puedes abrir ese fichero con el editor de texto por consola que prefieras (en mi caso voy a utilizar Vim):
sudo vim /etc/grub.d/40_custom
Cuando se te abra el fichero, si lo has abierto con Vim, debes teclear la letra i
para acceder al modo de inserción, y añadir, al finl del mismo, las dos líneas que te copio debajo, sustituyendo nombre-usuario
por el nombre de usuario que desees, y hash-password, por la cadena de texto que tienes copiada en el portapapeles del comando anterior.
set superusers="nombre-usuario" password_pbkdf2 nombre-usuario hash-password
Hecho esto, para que los cambios tengan efecto, tan solo queda actualizar GRUB con el comando que te dejo debajo, y que básicamente obliga a GRUB a re-configurar las diferentes entradas con las que permite arrancar.
sudo update-grub
Hecho esto, y tras reiniciar el equipo, cuando intentes arrancar la próxima vez, antes de que empieze a cargar el sistema operativo, te saldrá una ventana como la que te muestro a continuación:

Esto es porqué, con lo que hemos hecho, solo el usuario especificado tendrá acceso a ejecutar las diferentes entradas del menú de GRUB, incluyendo la que tiene establecida por defecto, que normalmente es la de arrancar el sistema operativo con la última versión del kernel.
Esto es lo más básico, pero a partir de aqui esto se podría ir depurando más, estableciendo, por ejemplo diferentes usuarios para que tengan derecho a ejecutar solo ciertas entradas del menú de arranque, y añadiendo una excepción para que la opción de arranque por defecto no requiera autenticarse.