sábado, 24 de noviembre de 2007

Proteger el Grub para evitar que nos cambien la contraseña

Este post es una respuesta al post anterior sobre cómo recuperar una contraseña en Ubuntu para evitar que terceras personas puedas usar este método.

Fuente: ElModem

Ayer Cesarius publicaba un post en el que nos mostraba cómo recuperar una contraseña olvidada en Ubuntu (en realidad en Linux en general) editando el Grub mediante en el booteo.

¿Cómo podemos protegernos?

Protegeremos con una contraseña el Grub. Primero generaremos la contraseña encriptada cifrada. Abrimos consola e ingresamos al Grub:

$grub
[ Minimal BASH-like line editing is supported. For
the first word, TAB lists possible command
completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> md5crypt
Password: ********
Encrypted: $1$1ksAF$zoqKrlytw7Qzd2pxlUCs70
grub>quit

Lo importante de acá es el código generado (en el ejemplo $1$1ksAF$zoqKrlytw7Qzd2pxlUCs70) que no viene a ser otra cosa que nuestra contraseña cifrada mediante el algoritmo MD5.

1. Protección de edición de Grub durante el menú de booteo.

De esta forma, tendremos que ingresar una contraseña si es que queremos editar las opciones de Grub durante el booteo. Abrimos para edición el archivo de configuración de Grub (yo uso Kate, pero pueden usar Gedit o su editor de texto preferido)

sudo kate /boot/grub/menu.lst

Ubicamos la siguiente sección:

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

Y quitamos el comentario a la línea # password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/ y reemplazamos el código por nuestra clave cifrada que acabamos de generar (en este ejemplo $1$1ksAF$zoqKrlytw7Qzd2pxlUCs70)

Queda de esta manera:

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
password --md5 $1$1ksAF$zoqKrlytw7Qzd2pxlUCs70
# password topsecret

Luego de guardar los cambios y reiniciar el sistema, se nos presentará el menú normal de Grub, con la diferencia de que para poder entrar al modo de edición tendremos que ingresar nuestra contraseña (ojo es la contraseña que pusimos en el paso inicial, no es la contraseña cifrada). Para poder escribir nuestra contraseña presionamos antes la letra p. Si es que no ingresamos una contraseña, podremos cargar en forma normal nuestros sistemas operativos (pero no podremos entrar al modo edición).

2. Protección de booteo de determinado sistema operativo

Esto se puede usar como seguridad adicional ya que evitará bootear determinado kernel o sistema operativo si es que no se ha ingresado la contraseña (puede usarse, por ejemplo, para proteger el booteo del Modo de Recuperación). Luego de seguir los pasos del punto 1, ubicamos en menu.lst la sección de kernels / sistemas operativos que tengamos instalados. Por ejemplo, para mi caso:

title  Ubuntu 7.10, kernel 2.6.22-14-generic
root (hd1,1)
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=770b351a-887e-43f5-9049-c667746e49b3 ro quiet splash
initrd /boot/initrd.img-2.6.22-14-generic
quiet

Debajo de la línea initrd agregamos la línea lock que indica a Grub que se necesita una contraseña para poder bootear dicho kernel. Queda así:

title  Ubuntu 7.10, kernel 2.6.22-14-generic
root (hd1,1)
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=770b351a-887e-43f5-9049-c667746e49b3 ro quiet splash
initrd /boot/initrd.img-2.6.22-14-generic
lock
quiet

Debemos agregar dicha línea para cada kernel que deseemos proteger. Guardamos los cambios y reiniciamos el sistema.

¿Mayor seguridad?

Lo anterior no protege en caso alguien use algún Live CD, por lo que es recomendable también configurar la BIOS para que cargue primero el disco duro y protegerla con contraseña.

No hay comentarios: