Hace poco mencionaba que uno de los tips para usuarios Linux era configurar el GRUB de manera correcta. Esto, lógicamente podemos extrapolarlo tambien a servidores y añadirlo como tip para los administradores de sistemas Linux.
Hoy vamos a hablar un poco más sobre como configurar correctamente el gestor de arranque o GRUB.
Comenzaremos diciendo (según la Wikipedia) que el GRUB es un gestor de arranque múltiple, desarrollado por el proyecto GNU que se usa comúnmente para iniciar uno, dos o más sistemas operativos instalados en un mismo equipo.
Cuando haces una instalación de Linux por defecto, "cualquier persona" puede acceder al gestor de arranque y forzar a que el sistema arranque en modo "recuperación del sistema". De manera que si lo consiguiera podría convertirse en root y tener así el control total de nuestro servidor. Esto, que siempre es muy criticado en Windows, me recuerda al "fallo" de como saltarse la password de administrador y que al final resulta que en Linux (que es súper seguro y que no tiene fallos) ocurre algo similar.
Como no quiero entrar en polémicas Windows - Linux y aquí estamos para aprender, vamos a ello.
Además del mencionado anteriormente, también existe la posibilidad de que alguien edite el GRUB para que, modificándolo ese alguien pueda ejecutar algún comando como root, si el GRUB no se encuentra protegido por contraseña (en la imagen del kernel de Linux hay un parámetro de arranque init que nos deja ejecutar un comando al iniciar).
Vamos a ver que opciones de arranque tenemos.
grep menuentry /boot/grub/grub.cfg
Estas son las lineas que vemos al arrancar un equipo. |
Como vemos, cada línea que empieza con menuentry es una opción de arranque.
=====================================================================
Vamos a ver que podría hacer una persona con malas intenciones.
En el arranque de Linux (en este caso Debian) pulsamos la tecla 'e' como nos indica en la imagen, lo que nos devolverá la siguiente pantalla.
Ahora en la antepenúltima línea (la tercera empezando desde abajo) escribimos:
init=/bin/bash
Esto hará que en lugar de bootear, el GRUB nos de una linea de comandos (bash).
Ahora presionamos F10 o Ctrl-x para reiniciar.
La raíz por defecto lo monta como "solo lectura", así que debemos cambiarlo a lectura /escritura para poder modificarlo.
mount -o remount,rw /
Ahora ya podríamos cambiar la contraseña de root con un simple passwd root, (a nos ser que el sistema utilice LVM). Así terminaría un ataque a nuestro equipo o servidor.
=====================================================================
Toca ver la parte en la que NO dejamos que esto suceda. Es muy sencillo, podemos implementar una contraseña en la BIOS (aunque no nos garantiza nada, ya que hay posibilidades de saltárselo) o sencillamente activar la password en el gestor de arranque.
Para ello vamos a cifrar la contraseña con SHA512 para después añadirla en el fichero de configuración del GRUB.
grub-mkpasswd-pbkdf2
Una vez que tenemos la contraseña generada con SHA512 vamos a abrir el fichero de configuración del GRUB con:
sudo vi /boot/grub/grub.cfg
Y al principio del fichero escribimos lo que se ve en la siguiente imagen.
En rojo establecemos los parametros y en verde pegamos la clave en SHA512. |
Debemos guardar los cambios realizados en el fichero y el GRUB ya quedaría protegido. Si quisiéramos nosotros (como root) poder acceder en el arranque debemos indicarlo añadiendo --users root en las opciones del arranque, que están en el mismo fichero, en la parte de menuentry.
Con el valor --user le indicamos los usuarios que podrán usar esa opción y con root establecemos el usuario, así cuando intentemos (o intenten) usar la linea de comandos o una opción de arranque, que así esté establecida, veremos lo siguiente.
Y obviamente si no somos root o no sabemos la contraseña establecida anteriormente, no podremos arrancar el sistema.
Pros: Mayor seguridad en nuestros sistemas.
Contras: Como estés enfermo y no tengas a alguien conocido y que sepa la pass no arrancas el equipo xD.
Roberto García (@1GbDeInfo)