23 oct 2012

Proteger el GRUB: GRUB I (Parte I de II)

¿Qué es GRUB? Para quienes no lo sepan, el GRUB es un gestor de arranque múltiple desarrollado por GNU. Este gestor de arranque permite disponer de uno o varios sistemas operativos y arrancarlos de manera sencilla. Se utiliza principalmente en sistemas operativos GNU/Linux, aunque existen sistemas operativos como Solaris que lo utilizan desde la versión 10 del sistema operativo.

En artículos como el de "sethc para GNU/Linux" en el que se puede aprender como levantar una sesión de root en una shell de linux si tenemos acceso físico al equipo, se deja en claro lo importante que es proteger el gestor de arranque. En la versión 1 de GRUB, existe un solo modo de protección y es colocar una contraseña universal tanto para el arranque de los sistemas operativos como para la edición del propio GRUB. Hay que recordar que el GRUB permite editar la línea o las líneas de arranque de sus entradas. ¿Cómo se hace esto? Generalmente, cuando arranca el GRUB y muestra el menú se puede editar las líneas que se ejecutar, es decir colocar el GRUB en modo edición, normalmente mediante el uso de la letra 'e' o 'a'. Aquí está el problema, cualquiera con acceso al equipo puede modificar las líneas de ejecución y arrancar una shell con privilegios de root.

La solución que proponemos es proteger mediante contraseña la ejecución de las entradas del GRUB, por lo que si pueden editar las líneas no podrán ejecutarlas por lo que no valdrá para mucho.

Configurando contraseña en el GRUB

El GRUB en su primera versión se aloja en la ruta /boot/grub. El fichero grub.conf aloja la configuración de las entradas, y es aquí donde se podrá alojar una contraseña. La contraseña, lógicamente, no se debe alojar en texto plano, por lo que habrá que utilizar alguna aplicación que nos genere un hash adecuado. Para ello lanzamos la aplicación grub en una shell, éste abre una nueva línea de comandos reducidos para el uso y edición del GRUB. Tener en cuenta que hay que ejecutarlo como root (o usuario con privilegio, por ejemplo sudoer).

Para generar el hash ejecutaremos el comando md5crypt. La aplicación nos pedirá un password, y hay que tener cuidado ya que solo lo pedirá una vez. Tras generar el hash, deberemos copiarlo para después colocarlo donde se debe.

Ahora nos toca editar el fichero /boot/grub/grub.conf para colocar el hash en las entradas que queramos proteger. De este modo, aunque editen las líneas en el GRUB, se pedirá una clave para proteger este arranque físico.

Verificación de resultados

A continuación se muestra la prueba de que el GRUB pedirá una clave para ejecutar una entrada de un sistema operativo.

Si la clave se introduce incorrectamente el resultado es el siguiente:

Si la clave se introduce correctamente el resultado es el siguiente:

En la próxima entrega veremos como proteger una versión 2 del gestor de arranque GRUB, el cual dispone de modificaciones muy interesantes que iremos destapando.

2 comentarios:

  1. si muy buena idea para proteger de un cambio no autorizado .. pero igualmente con un live cd de linux se puede montar el sistema operativo y realizar el cambio q necesitemos.. q medida hay para esto?

    ResponderEliminar
  2. Proteger la BIOS :DDeshabilitando esos medios externos, o meterles una pass en la BIOS para su uso... Aunque siempre existirá una manera de manipular la BIOS... si se tiene acceso físico a la máquina.Otras medidas que se han visto, es meter los equipos en una especie de urna, para que solo se pueda disponer del teclado y como mucho del botón de encendido (esto no es ciencia ficción xD)SaludoS!

    ResponderEliminar