25 abril, 2024

IsProto

Soluciones para Redes e Internet

Grub y Lilo: Seguridad en el Gestor de Arranque Linux

grub

El gestor de arranque es un software sencillo cuya función es ejecutar los archivos de carga del sistema operativo. La mayoría de los sistemas Linux utilizan uno de los dos cargadores de arranque: Lilo o Grub.

¿Qué es Grub y Lilo?

Tanto Lilo como Grub se encargan de controlar las imágenes de arranque y determinar qué kernel inicializar cada vez que se hace boot del sistema operativo.

La carga de este software se realiza después de que la BIOS (Sistema Básico de Entrada / Salida) haya inicializado su sistema y generalmente esperan un período de tiempo establecido (alrededor de 30 segundos) para seleccionar un kernel para arrancar.

Primeras medidas de seguridad

Debido a la simpleza de configuración que tiene Lilo y Grub, mostraremos a continuación unas medidas básicas de seguridad, para mantener protegido el arranque y por lo tanto el sistema.

Arranque automático a Sistema Seguro y Funcional

Tanto Grub como Lilo inician el kernel por defecto en forma automática si el usuario no ha intervenido, por lo tanto como medida inicial de seguridad y funcionalidad se debe configurar de forma predeterminada un kernel totalmente funcional para inicializar el sistema.

También ayuda el evitar colocar núcleos (kernel) viejos o inservibles dentro del listado del gestor de arranque. Ya que las versiones de un kernel anterior podría presentar una vulnerabilidad de seguridad que podría permitir a un atacante poner en peligro su sistema.

Actualización de kernel en Grub y Lilo

Realice una limpieza cuando realice actualizaciones del kernel. Recomiendo dejar las versiones actual y anterior del kernel en el sistema. Tampoco se recomienda tener las versiones beta o más recientes, ya que aún no pasa todos los controles de calidad necesarios para la versión.

Ambos gestores de arranque, LILO y Grub, son intrínsecamente inseguros si su atacante tiene acceso físico a su sistema. Por ejemplo, de forma predeterminada, tanto LILO como Grub le permitirán arrancar en modo de usuario único.

Protección de Grub para modo de usuario único

En el modo de usuario único, tiene privilegios de root sin tener que ingresar la contraseña de root. Además, puede ingresar una variedad de otros parámetros en ambas líneas de comando del cargador de arranque que pueden brindarle a un atacante oportunidades para comprometer su sistema.

No obstante LILO y Grub tienen la opción de estar protegidos con contraseñas para evitar mal uso de parte de bots u otro tipo de intruso.

¿Cómo agregar una contraseña en Lilo?

grub

La configuración de contraseñas en Lilo requiere la palabra clave password dentro de la configuración de lilo.conf, tal y como se muestra en el siguiente ejemplo:

prompt
timeout=50
default=linux 
boot=/dev/hda 
map=/boot/map 
install=/boot/boot.b 
message=/boot/message
linear
password=micontraseña
restricted
image=/boot/vmlinuz-2.4.18-14         
           label=linux         
           initrd=/boot/initrd-2.4.18-14.img
           read-only         
           append="root=LABEL=/" 

En el ejemplo de configuración anterior, la contraseña introducida en Lilo va en texto en plano, sin embargo ésto podría ser riesgoso para los usuarios que tien en acceso al archivo lilo.conf. Es decir cualquier usuario que tiene privilegios de root o superusuario, puede ver el archivo.

Sin embargo, también es posible introducir la contraseña para iniciar una imagen de arranque en particular, en éste caso la directiva password va dentro de image y no en forma generalizada.

Nota: Los permisos correctos para /etc/lilo.conf deben estar en root y para mayor seguridad con permisos 6 para propietario y 0 para grupo y público utilizando las siguientes dos líneas de comandos:

chown root:root /etc/lilo.conf

chmod 600 /etc/lilo.conf

¿Cómo agregar una contraseña en Grub?

grub

También es posible agregar una contraseña en el gestor de arranque Grub en forma similar a como se hace en Lilo. Los problemas de seguridad ocasionados por el acceso al archivo desde cualquier usuario con permisos de root se resuelve al utilizar una función hash MD5.

La función hash MD5 utiliza ese algoritmo para cifrar la contraseña de una sola vía, y con ésto el usuario protege su acceso, al mismo tiempo de agregar privacidad a su contraseña, ya que aún cuando es visible el hash de la contraseña, el usuario no puede saber cuál contraseña genera ese hash, por esa razón el algoritmo MD5 también se conoce como función picadillo.

Generación de hash MD5 utilizando md5crypt en Grub

El comando de unix md5crypt genera un hash de contraseña obtenido de la cadena original utilizando el algoritmo MD5. El proceso para la generación del hash es muy sencillo, solo ejecutamos en la línea de comando de grub md5crypt, escribimos la contraseña y obtenemos la contraseña cifrada bajo ese algoritmo. Solo queda copiar esa contraseña cifrada y agregarla al archivo de configuración.

El archivo de configuración Grub es /etc/grub.conf. Éste archivo puede ser configurado fácilmente utilizando la directiva password para agregar la contraseña generada tal y como se muestra en el siguiente ejemplo:

default=1 
timeout=10 
splashimage=(hd0,0)/grub/splash.xpm.gz 
password --md5 $1$2PEMrT0$I7j3tw16rG52MwlpwTQm81 
title Mi sistema operativo Linux 2.6.7
      root (hd0,0) 
      kernel /vmlinuz-2.6.7 ro root=LABEL=/ 
      initrd /initrd-2.6.7.img

Como podemos ver la conraseña se agrega en forma similar a la utilizada en Lilo, solo que en Grub nos da la opción de cifrado MD5 utilizando la opción del comando –md5 en password. Con ésto la contraseña no estará disponible para ningún superusuario.

También es posible proteger una entrada en particular con Grub, para hacerlo, simplemente en vez de agregar la directiva password como general, debemos incluirla dentro de la entrada en donde tenemos incluida nuestra imagen de disco.

Finalmente, para evitar accesos no autorizados a la configuración de grub.conf, de la misma forma que lo mostramos con Lilo, agregamos como propietario a root, grupo root y permisos 600 al fichero utilizando los siguientes dos comandos en modo superusuario:

chown root:root /etc/grub.conf

chmod 600 /etc/grub.conf

Consejos adicionales al bootear con Grub o Lilo

Independientemente si estás utilizando Grub o Lilo, debes considerar algunas medidas de seguridad adicionales, para mejorar la funcionalidad de tu gestor de arranque y evitar conflictos con tus versiones.

  • Si agregas una contraseña en el gestor de arranque y tu imagen de disco ya cuenta configurado con una contraseña de ingreso, se te solicitará doble contraseña: una para el gestor y otra para el login. Esto es independiente de Grub o Lilo.
  • Al agregar la contraseña, y no recordarla, podría inhabilitar tu ingreso al sistema, para ello deberás mantenerla en un lugar seguro para no olvidarla, de preferencia en forma física.
  • El archivo para gestión de arranque es parte de /etc, por lo tanto lo podría modificar solo un superusuario o usuario con privilegios de root.

Otros temas de seguridad recomendados

También te recomendamos el siguiente artículo sobre cómo navegar por internet en forma segura.