CÓMO PROTEGER EL BOOT LOADER DE UBUNTU


 

Contenido

Cómo proteger el boot Loader de Ubuntu    3

Introducción    3

Habilitamos el menu de arranque.    3

Generando una Password Hash    4

Colocando la contraseña para proteguer el grub    5

Protección de las entradas del Boot    7

Activación de los Cambios    10

Proteger las entradas de otros Sistemas Operativos instalados    13

Proteger la partición de recuperación de Windows    14

Errores y su solución    14

 

 

Cómo proteger el boot Loader de Ubuntu

Introducción

Por defecto el grub puede ser editado. La forma de protegerlo, sería por medio de una contraseña. Así de este modo para editarlo, se requeriría el uso de una contraseña.

Las opciones de configuración del grub 2, se dividen en varios archivos en lugar del único archivo menu.lst del grub 1 Es por esto que establecer una contraseña se ha complicado un poco.

La práctica la haremos con el grub 2.0. Versiones anteriores difieren un poco. Más adelante lo explico.

Aunque se recalca más adelante, siempre, siempre es recomendable hacer copia de los ficheros que vamos a editar.

Habilitamos el menú de arranque.

Vamos a habilitar el menú de arranque. Si el grub está configurado para arrancar directamente con un menú de entrada y este está protegido con contraseña, no se iniciará hasta que se haya introducido el usuario y contraseña correctamente.

Es recomendable habilitar el Grub. Esto es sumamente fácil solo tenemos que teclear nano /etc/default/grub marcar como cometario las siguientes líneas.

#GRUB_HIDDEN_TIMEOUT=0

#GRUB_HIDDEN_TIMEOUT_QUIET=True

 

 

 

Después de grabar y cerrarlo, actualizamos el grub.

Generando una Password Hash

Para ello lanzamos el terminal


Ahora vamos a generar una contraseña ofuscada (encriptada) para los archivos de configuración de Grub. Sólo tenemos que escribir grub-mkpasswd-PBKDF2 y pulsamos Enter. Esto te pide una contraseña y le dará una cadena larga. Seleccione la cadena con el ratón, hacemos clic derecho y seleccionamos Copiar para copiarlo en el portapapeles ya que lo usaremos después.


Esto es opcional. Podemos entrar la contraseña en texto plano dentro de los archivos de configuración pero si la encriptamos, tenemos una medida de seguridad adicional.

Colocando la contraseña para proteger el grub

Para ello, tecleamos sudo nano /etc/grub.d/40_custom para abrir el archivo 40_custom con el editor de texto Nano. Aquí, será donde estableceremos las preferencias.

Otros prefieren o puede introducir esta información en el archivo 0_heacer /etc/grub.d/00_header pero no lo recomiendo pues una actualización del grub puede hacer que perdamos toda la información previamente introducida.

Para el caso de hacer o en 00_header los cambios serían:

Generic Entry: – Superuser + 1

Example of actual entry:

cat << EOF

cat << EOF

set superusers=”user1″

set superusers=”John”

password user1 password1

password John 1234

password user2 password2

password Jane 5678

password user3 password3

password Sergio 9012

EOF

EOF

 

En el caso que siguiéramos no incluiremos ni cat ni >>EOF dado que este contenido será añadido automáticamente.


Nos desplazamos al final de las líneas e introducimos nuestra contraseña en con el siguiente formato

set superusers=”name”
password_pbkdf2 name [contraseña encriptada]


Hemos añadido a asir como superuser con la contraseña que generamos antes. También, se ha añadido al usuario alvaro con otra contraseña en este caso en texto plano.

Podemos ver que asir superusuario mientras que alvaro no lo es. Qué diferencia hay? Pues la principal es que asir, podrá editar las entradas del boot y acceder al grub en la línea de comando mientras que alvaro al ser un usuario normal, no podrá. Podemos asignar más usuarios.

Salvamos el archivo Ctrl-O y Enter. Tecleamos Ctrl-X to exit. Estos cambios no tendrán efecto hasta que ejecutemos el comando sudo update-grub 


 

Protección de las entradas del Boot

Antes hemos forzado a que el grub solamente pueda ser editado por super users. Si aparte lo que queremos es solicitar contraseña para acceder al sistema tendremos que cambiar unas líneas más.

Lo primero sería determinar que archivos contiene el registro de entrada para modificarlo.

Tecleamos sudo nano /etc/grub.d/  y presionamos el tabulador y vemos una lista de entradas disponibles.


Como lo que queremos es proteger nuestro sistema, la entrada que lo genera es 10_linux con lo cual editaremos ese archivo sudo nano /etc/grub.d/10_linux. Hemos de tener mucho cuidado porque si perdemos la contraseña o la introducimos mal tendremos que utilizar un live cd y modificar nuestro Grub previamente.


Es un archivo bastante grande, por lo que más conveniente es hacer una búsqueda con Ctrl-W . Buscaremos una entrada que comience con printf “menuentry o echo “menuentry.

Esto dependerá de la versión del Grub que tengamos. Para la versión del ubuntu 12.04 buscaremos aquella línea que comiece con printf tal como vemos en la imagen siguiente “grub 1.9 o anterior”. Para Ubuntu 13.04 el grub es 2.0


Si tenemos el grub anterior al 2 cambiaremos :

printf “menuentry ‘${title}’

a:

printf “menuentry –users name ‘${title}”


Aquí en el ejemplo le damos acceso a jim. Asir también tiene acceso, ya que él es un superusuario. Si especificamos “asir ” en lugar de “jim” o “alvaro”, alvaro y jim no tendrían acceso en absoluto.

Presionamos Ctrl -O y Enter, luego Ctrl- X para guardarlo y cerrar el archivo después de modificarlo.

Para Grub en versiones de Ubuntu 13.04 ( Grub2.0) tendremos que editar otras líneas diferentes:

Es recomendable hacer una copia del archivo antes de editarlo por si necesitamos restaurarlo. También recomendable es hacer una copia de /boot/grub/grub.cfg

Otra herramienta recomendable es tener un live Cd

Las líneas a editar son

Code:

echo “menuentry ‘$(echo “$title” | grub_quote)’ ${CLASS} \$menuentry_id_option ‘gnulinux-$version-$type-$boot_device_id’ {” | sed “s/^/$submenu_indentation/”

else

echo “menuentry ‘$(echo “$os” | grub_quote)’ ${CLASS} \$menuentry_id_option ‘gnulinux-simple-$boot_device_id’ {” | sed “s/^/$submenu_indentation/”

Las cambiaremos a

Code:

echo “menuentry ‘$(echo “$title” | grub_quote)’ ${CLASS} –users name \$menuentry_id_option ‘gnulinux-$version-$type-$boot_device_id’ {” | sed “s/^/$submenu_indentation/”

else

echo “menuentry ‘$(echo “$os” | grub_quote)’ ${CLASS} –users name \$menuentry_id_option ‘gnulinux-simple-$boot_device_id’ {” | sed “s/^/$submenu_indentation/”

Quedaría tal que así


Si lo viéramos muy engorros, siempre podemos actualizar el grub
J

Activación de los Cambios

Los cambios no entrarán en vigor hasta que se ejecute el comando sudo update-grub. Este comando genera un nuevo archivo de configuración de Grub.

 

Si lo hemos realizado correctamente al arrancar, nos pedirá la contraseña.

Reiniciamos y tenemos:


 

Si tecleamos la contraseña o usuario incorrectamente, volveremos otra vez a la pantalla de inicio. Si nos logeamos correctamente, se iniciará el sistema.

Si Grub está configurado para mostrar un menú de inicio, no podremos editarlo en modo de línea de comandos de entrada o usar el sistema sino introducimos la contraseña de superusuario.

Una vez nos logeamos correctamente pasaremos a la pantalla de inicio.

 

 

Proteger las entradas de otros Sistemas Operativos instalados

Antes de hacer cualquier cambio, se recomienda guardar una copia del archivo “/etc/grub.d/30_os-prober” en otro lugar. No dejar la copia en el directorio /etc/grub.d/, para asegurarse de que no se ejecuta durante las actualizaciones.
Para realizar copia de seguridad y guardarla en el escritorio de root, por ejemplo:

sudo cp /etc/grub.d/30_os-prober /root/Desktop/30_os-prober

El menú de Grub2 incluye una selección de sistemas operativos distintos del sistema operativo por defecto (Ubuntu, en este caso), a través de la secuencia de comandos del archivo 30_os-prober. Las siguientes instrucciones añaden automáticamente la protección de contraseña en todos los menuentry de la sección 30_os-prober del menú de Grub2. Esto incluye Ubuntu y otras instalaciones de GNU/Linux, Windows, OSX, etc

El script del archivo 30_os-prober busca tipos específicos de sistemas operativos. El usuario puede realizar los cambios para todos los sistemas operativos a través de un comando único, o de manera individual:

– Para añadir protección a todas las entradas generadas por /etc/grub.d/30_os-prober ejecutaremos el siguiente comando, que agregará los usuarios (–users) a cada menuentry encontrados automáticamente sin necesidad de editar el archivo:

sudo sed ‘s/–class os /–class os –users /’ -i /etc/grub.d/30_os-prober


– Para activar la protección sólo en un tipo específico de entrada del sistema operativo, añadimos los usuarios (–users) inmediatamente después de “–class os” en el título del menuentry que deseemos. Ejemplos varios con el superusuario “alvaro”:

Para
OSX:

menuentry “${LONGNAME} (${2}-bit) (on ${DEVICE})” –class osx –class darwin –class os –users alvaro {

Para Windows:

menuentry “${LONGNAME} (on ${DEVICE})” –class windows –class os –users alvaro {

Para
Linux / Ubuntu:

menuentry “${LLABEL} (on ${DEVICE})” –class gnu-linux –class gnu –class os –users alvaro {

Para
Hurd:

menuentry “${LONGNAME} (on ${DEVICE})” –class hurd –class gnu –class os –users alvaro {

Guardar el archivo y actualizar el grub con:

sudo update-grub



Proteger la partición de recuperación de Windows


Es posible proporcionar protección de contraseña sólo a una partición específica. Un ejemplo obvio sería la partición de recuperación de Windows. Aunque el concepto podría aplicarse a otras secciones OS del archivo 30_os-prober o incluso del script del archivo 10_linux, sólo vamos a verlo para la partición de recuperación de Windows, pero cualquier partición de Windows pueden ser protegida de la misma manera mediante la designación de la partición.

Nota: Esta técnica sólo funciona si el menú de GRUB 2 identifica múltiples particiones de Windows y una de ellas es la partición de recuperación. Si sólo hay una partición de Windows se identifica en el GRUB como Windows, donde, sólo Windows en su totalidad podría ser protegido.

Si el usuario quiere sólo la protección de contraseña en una partición de recuperación de Windows, seguir las indicaciones anteriores y, a continuación:

Determinar la partición de recuperación de Windows (sda1, sda2, etc.) Cambiar en el comando sdXY por los vuestros y los usuarios.

Editar el archivo /etc/grub.d/30_os-prober:

sudo gedit /etc/grub.d/30_os-prober

Cambiar el siguiente código:

cat << EOF menuentry “${LONGNAME} (on ${DEVICE})” –class windows –class os { EOF

Por este otro:

if [ ${DEVICE} = “/dev/sdXY” ]; then
cat << EOF menuentry “${LONGNAME} (on ${DEVICE})” –users alvaro {
EOF
else
cat << EOF menuentry “${LONGNAME} (on ${DEVICE})” { EOF fi

Guardar el archivo y actualizar con:

sudo update-grub

Errores y su solución

Los errores en la creación de una contraseña protegida del menú de Grub2 puede dar lugar a un sistema que no arranca. Para restaurar un sistema con contraseñas rotos, acceder y editar los archivos de configuración de GRUB 2 usando el LiveCD u otro sistema operativo.

Si hemos hecho las copias de seguridad de los archivos como he comentado, arrancaremos el Live-CD en modo prueba y seguirremos los siguientes pasos:
Abrir Nautilus y montar la partición donde tengamos Ubuntu instalado (a la izquierda)
Abrir Nautilus como root:

gksudo nautilus

Seleccionar a la izquierda la partición de Ubuntu que hemos montado
Abrir carpeta /media/
Abrir la carpeta de la partición montada
Abrir la carpeta /root/
Abrir la carpeta /Desktop/
Copiar el archivo “grub.cfg” y
Pegarlo en su respectiva ruta (siempre dentro de la partición montada, no la ruta del live-cd): /boot/grub/
Con esto es suficiente para poder volver a arrancar.

Una vez arrancado Ubuntu debemos sustituir los archivos modificados en /etc/grub.d/ por las copias que hemos guardado en /root/Desktop/

Actualizamos el grub con:

sudo update-grub

Y todo estará como al principio.

 

 

 

 

Acerca de Rafael Quintana

Con ganas de compartir y de aprender
Galería | Esta entrada fue publicada en Linux, Seguridad y etiquetada , , . Guarda el enlace permanente.

Una respuesta a CÓMO PROTEGER EL BOOT LOADER DE UBUNTU

  1. buy short prom dresses dijo:

    Very neat article.Really looking forward to read more. Keep writing.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s