El uso de Linux como sistema operativo de nuestro equipo o servidor es, ya de por sí, un símbolo de seguridad. El uso de contraseñas Linux es el método más simple y popular para añadir seguridad a cualquier equipo, siempre teniendo presente las medidas básicas de seguridad de las contraseñas como la longitud, caracteres especiales y demás. Cuando se instala un sistema operativo Linux, se crea tanto el usuario administrador, el cual tiene más permisos que un usuario base, como el usuario root con el que hay que tener extremo cuidado, ya que posee todos los permisos para realizar acciones en el sistema como crear, editar o eliminar usuarios, aplicaciones etc. Si no tenemos experiencia en el uso y manejo de usuarios root, os recomendamos que leáis algo al respecto ya que, tomando decisiones equivocadas con los permisos de este usuario, pueden llegarse a dejar inservibles ciertos dispositivos.
Por ello, el trabajo de este usuario debe ser especialmente responsable, si por alguna razón deseamos acceder a Linux con este usuario root y hemos olvidado la contraseña, lo que pasa con más frecuencia de lo que pensáis, debemos seguir los pasos que aquí os daremos junto con los consejos necesarios para recuperar dicha contraseña, teniendo la opción de cambiarla o eliminarla sin ningún problema, ya que, con el uso de root es más simple ejecutar las tareas de soporte y administración en el sistema evitando el uso de «sudo» para dichas operaciones.
Qué es el GRUB y para qué sirve en Linux
El GRUB (GRand Unified Bootloader) es el cargador de arranque desarrollado por el proyecto GNU que nos permitirá elegir qué sistema operativo debe arrancar en el ordenador o en el servidor. Normalmente se utiliza en sistemas operativos basados en GNU/Linux, pero también es capaz de arrancar un sistema operativo Windows sin ningún problema. Otras características interesantes de GRUB es que admite comandos de configuración y puede cargar una configuración predeterminada, además, tenemos una interfaz de menú y también una línea de comandos para ejecutar lo que nosotros queramos, admite todos los sistemas de archivos que se usan actualmente, como BtfFS, cualquier versión de EXT y FAT, NTFS, ZFS y muchos otros. También es capaz de acceder a datos ubicados en cualquier dispositivo instalado, e incluso admite direccionamiento de bloque lógico (LBA) y arranque en red.
El GRUB es lo primero que se carga en el arranque del sistema, la BIOS o UEFI se encargará de buscar un dispositivo de inicio como el disco duro o SSD, y cargará el MBR con el GRUB en su interior. En la primera fase arrancará el GRUB básico, y se encargará de cargar el GRUB completo ubicada en cualquier parte del disco. Una vez que haya cargado, se presentará al usuario el menú de inicio, y podremos cargar el Kernel o el sistema operativo que nosotros deseemos.
¿Qué ocurre si olvido la clave de root en mi servidor?
La contraseña de administrador o root en un servidor con sistema operativo Linux no debemos olvidarla nunca, sin embargo, en el caso de que la hayamos olvidado o algún compañero de trabajo la haya cambiado y no tengamos la nueva, siempre podremos modificar o eliminar esta contraseña directamente desde el GRUB de arranque en nuestro sistema operativo. La contraseña de root siempre se almacena en local en un archivo en concreto, con el objetivo de poder autenticarnos cuando arranca el sistema operativo para acceder a él.
La ventaja de utilizar el GRUB para «recuperar» la contraseña es que es la forma más limpia de poder hacerlo sin necesidad de tener que formatear nuestro servidor y empezar desde cero. Además, también es la forma más rápida de hacerlo y no tendremos ningún tipo de pérdida de información. La desventaja de usar este método, es que cualquier usuario con acceso físico al servidor podría también resetear o borrar la contraseña de root de nuestro sistema operativo. Para evitar este tipo de problemas, es muy recomendable y necesario por seguridad, que el GRUB también tenga una contraseña de acceso, con el objetivo de evitar posibles problemas de seguridad y que alguien con acceso físico al servidor sea capaz de modificarnos nuestra contraseña de acceso.
Otras funciones de GRUB
GRUB contiene muchas funciones, que hacen de él uno de los mejores gestores de arranque actuales para la arquitectura x86. Vamos a ver algunas de las más importantes.
- GRUB nos proporciona un entorno basado en comandos: esta funcionalidad nos otorga gran flexibilidad para realizar la carga de los sistemas con algunas opciones específicas, o con la recopilación de información sobre el sistema. Durante mucho tiempo, las arquitecturas que eran diferentes x86, también usaban entornos previos a los sistemas operativos para realizar el arranque mediante una línea de comandos.
- Soporta el modo Direccionamiento Lógico de Bloques (LBA): este modo, coloca la conversión del direccionamiento utilizado para realizar búsqueda de archivos en las unidades de disco duro. Previamente a LBA, estos gestores de arranque tenían alguna limitación, donde la BIOS no podía encontrar archivos. Pero con LBA, permite que GRUB arranque los sistemas operativos desde particiones, directamente. Pero para que esto pueda ocurrir, la propia BIOS debe soportar este sistema. Actualmente, la gran mayoría de las BIOS son capaces de reconocer y soportar este sistema.
- Puede leer particiones EXT2: esto permite a GRUB acceder a archivos de configuración cada vez que el sistema arranca. Esto elimina la necesidad del usuario de escribir una versión de la primera etapa del gestor de arranque al MBR. En todo caso, esto ocurre cuando se realizan cambios en la configuración. Un caso donde el usuario necesita reinstalar GRUB en el MBR, es cuando la partición de arranque, se traslade de disco.
Además, GRUB cuenta con mucha terminología, la cual es también una de sus funciones más importantes. Esta hace referencia a los dispositivos como pueden ser los discos duros e incluso a las particiones en los mismos. Todo esto es muy importante si queremos configurar GRUB de forma que se puedan arrancar varios sistemas operativos.
Seguridad de GRUB
Una de las características de seguridad más importantes de GRUB es la capacidad de configurar una contraseña de arranque. Esto evita que los usuarios no autorizados accedan al sistema sin la contraseña correcta. Si alguien intenta iniciar sesión sin la contraseña, el sistema no permitirá el acceso y mostrará un mensaje de error.
Otra función de seguridad importante es la capacidad de verificar la integridad del sistema antes de iniciar el arranque. Esto se logra a través de la función de verificación de la suma de comprobación, que verifica que los archivos críticos del sistema no hayan sido modificados desde la última vez que se verificaron. Si se detecta una modificación, se emite una alerta y el sistema se bloquea para evitar la ejecución de código malicioso. Además, GRUB también proporciona una función de autenticación de firmware segura (SFA), que ayuda a proteger el sistema de arranque contra ataques de firmware maliciosos. Esta función se encarga de verificar la integridad de todo el firmware utilizado en el proceso de arranque, lo que ayuda a garantizar que el firmware no haya sido comprometido por malware o virus.
Por otro lado, GRUB también ofrece una función de ocultación del menú de arranque, que oculta el menú de selección de sistema operativo para evitar que los usuarios no autorizados accedan a sistemas operativos o configuraciones que no deberían tener acceso. Esto ayuda a proteger el sistema contra ataques maliciosos y aumenta la privacidad del usuario. Finalmente, GRUB también proporciona la capacidad de cifrar el disco duro, lo que ayuda a proteger los datos almacenados en el disco contra el acceso no autorizado. Esto es especialmente útil en entornos empresariales o gubernamentales donde la información confidencial debe ser protegida en todo momento. Lo cual nos da una capa de seguridad añadida a nuestro sistema.
Así puedes modificar o borrar la clave de root desde el GRUB
Si queremos recuperar la contraseña de root, o, mejor dicho, resetear esta contraseña, deberemos encender o reiniciar el sistema para acceder a la consola inicial de GRUB, la cual nos va a permitir iniciar el proceso de recuperación de contraseña y que cuando se despliega nos ofrece las siguientes opciones:
Para este caso seleccionamos la opción inicial, o bien entramos dentro de los diferentes kernel instalados.
Pulsamos la tecla «e» para acceder al editor de GRUB el cual tiene la siguiente apariencia. Allí usamos las flechas de desplazamiento de nuestro teclado paras ubicar la línea que inicia con «Linux» y al final de ella está el término «ro single«. Tenemos que cambiar la cadena «ro single» por «rw init=/bin/bash«. Debes acordarte quitar también el «single», ahora mismo en la siguiente captura está puesto si habéis seleccionado el kernel del modo recuperación.
Ahora debemos usar las teclas Ctrl + X o F10 para iniciar el modo de usuario simple (single-user) y una vez accedemos a la línea de consola ejecutamos el siguiente comando:
Lo que hará es cargar en modo lectura y escritura ejecutando el terminal bash, para resetear la contraseña de root. Esto nos permite habilitar permisos de escritura en el gestor de inicio del sistema, y poder realizar modificaciones en el sistema operativo.
Ejecutamos el popular comando:
passwd
Y podremos cambiar la contraseña del superusuario de manera fácil y rápida. Es en este paso cuando debemos elegir si queremos cambiar o eliminar la contraseña de root, ya que, si escribimos algo y aceptamos el texto, lo que hayamos escrito quedará como contraseña. En caso de querer eliminarla, no ingresaremos ningún texto y aceptaremos igualmente como nueva contraseña para el usuario root, después recibiremos la confirmación del cambio que acabamos de ejecutar, si hemos escrito algo será la nueva contraseña y si no hemos escrito nada, se eliminará la contraseña y no nos la solicitará a la entrada al root.
Después de esto podemos iniciar Linux de nuevo y acceder con el usuario root usando la contraseña que hemos establecido anteriormente, o accediendo directamente en caso de haberla borrado.
Con estos sencillos pasos lograremos cambiar o eliminar la contraseña de root, solo tenemos que fijarnos en lo que elegimos en el par de pasos intermedios, puesto que es lo más complicado de este método, el resto de pasos son sencillos y en pocos minutos podremos tener cambiada o eliminada nuestra contraseña root, desde aquí te recomendamos cambiarla, porque eliminarla puede ser altamente peligroso y muy poco recomendable.
¿Cómo proteger el GRUB?
Todo lo que tiene que ver con la seguridad es muy importante hoy en día. Tanto en casa como en el trabajo. Pero especialmente en entornos laborales, es extremadamente importante. Si bien siempre se agradece más seguridad, hay algunas veces que se debe tomar un trato especial con estos temas. Son los siguientes:
- En entornos laborales y profesionales.
- En equipos compartidos con diferentes usuarios.
- En equipos portátiles que no estén en casa de forma permanente.
- Cuando nuestro equipo sea usado a menudo por otros usuarios, y quede desatendido en ocasiones.
También tenemos diferentes formas en las que podemos proteger el GRUB. Esto es mediante las contraseñas, y para ello podemos aplicar varios pasos.
- Bloquear los accesos a la línea de comandos del GRUB.
- Bloquear la posibilidad de la edición de entradas del GRUB.
- Bloquear la capacidad de ejecutar las entradas del GRUB.
Lo más recomendable es hacer una copia de seguridad, a modo de precaución. Esto siempre nos dará un punto de retorno en caso de cometer algún error que corrompe un poco el funcionamiento del equipo. Luego tendremos que definir a los usuarios y sus contraseñas, incluido los que van a poder realizar modificaciones en el Grub. Esto último, tiene que ir acompañado de un sistema de cifrado de contraseñas. Una vez realizado, procedemos con la actualización del Grub, que es donde podremos establecer los bloqueos para ejecución o edición de entradas de esta función.
En este último paso tendremos cierta libertad para manejar permisos y diferentes reglas. Para lo cual la complejidad puede llegar a ser bastante alta, donde se va a requerir cierto nivel de conocimientos. Sobre todo si creamos reglas complejas que tengan niveles muy altos de permisos. Normalmente esto se hace en el sector profesional, y dependiendo de la cantidad de usuarios que deban tener unos permisos u otros puede ser más sencillo o no.
¿Es esto un fallo de seguridad de Linux?
Por lo sencillo del método, parece que se puede acceder a cualquier sistema operativo Linux a través del cambio o eliminación de la contraseña de root. Sin embargo, debemos tener presente que es necesario estar físicamente en el ordenador o servidor, o al menos, tener una interfaz de administración con acceso físico al equipo, de esta forma, podremos acceder al root. No se puede hacer vía remota a través de protocolos como SSH o Telnet, solamente con acceso físico.
Si quieres evitar que alguien pueda realizar este método para cambiar o eliminar la clave de root, tendrás que incorporar una contraseña de autenticación en el GRUB, sin esta contraseña no podrás iniciar el GRUB y proceder con el paso. Otra forma es cifrar por completo la partición del sistema operativo con LUKS o similares, de esta forma, no se podrá acceder al cambio del sistema operativo si no conocemos esta contraseña de paso.