lunes, 29 de agosto de 2011

Como proteger Grub2 con password de forma permanente

En un post anterior vimos cómo podemos proteger con password el gestor de arranque Grub2, añadiendo un poco más de seguridad a nuestro sistema. Pero resulta que este cambio se hizo directamente en el fichero ubicado en /boot, el cual es reemplazado cada vez que se actualiza el Kernel o el Grub mismo. Ahora lo importante es hacer los cambios en los ficheros adecuados ubicados en /etc/grub.d/, que son los scripts que generan los ficheros ubicados en /boot. Esto hace que a pesar de actualizaciones los cambios permanezcan sin ser afectados. De esta forma, sin importar cuantas versiones del Kernel tengamos instaladas, todas quedarán protegidas.

Manos a la obra...


Nota: Es importante hacer un backup del directorio /etc/grub.d/ completo para resguardarnos.

Sin más detalles, lo primero que necesitamos hacer es generar el password encriptado, aunque podemos hacerlo sin encriptarlo solo con texto plano.

$ sudo grub-mkpasswd-pbkdf2
Enter password: 
Reenter password: 
Your PBKDF2 is grub.pbkdf2.sha512.10000.743275C021122091A9EF4602AB6EF14C22F8B7AC6C22A0A90C0283C
0EBC8935E6AC255C49AD6FBC33FC063BBF7AB6A7A3523BBD78C20CCA94F6063CD201C5B03.8968F0
47042AE0C1264F7CB657601C0E95A1E56485C097954FBA18FAC80A1F30B06ADF651F9DC41F55C6EE
A74440C11131110B0E3C84CDD5C5A2C7BA09D77881

Sin perder de vista esta información, pasamos a editar el fichero /etc/grub.d/00_header, y al final de dicho fichero colocamos lo siguiente. Esto es, el nombre de usuario y el password generado en el paso anterior. Dicho password debe quedar todo en una sola línea.

$ sudo nano /etc/grub.d/00_header
...
...
cat << EOF
set superusers="fraterneo"
password_pbkdf2 fraterneo grub.pbkdf2.sha512.10000.743275C021122091A9EF4602AB6EF14C22F8B7AC...
EOF

Ahora vamos al fichero 10_linux ubicado en el mismo directorio y ubicamos la función linux-entry (), que se encuentra aproximadamente en la línea 64. En dicha función un poco mas abajo (línea 75) tenemos la orden printf dentro de la cual vamos a introductir la opción --user seguida del nombre de usuario que colocamos en set superusers.

$ sudo gedit /etc/grub.d/10_linux



Con esto lo que hemos hecho es que a cada menuentry que sea generado se le añadirá la opción --users, protegiendo así con dicho usuario y su password encriptado todas las entradas a los diferentes Kernels que hayan instalados en el sistema en el menú de arranque.

Finalmente actualizamos Grub2 para que asuma los cambios y reiniciamos para probarlo.

$ sudo update-grub2
$ sudo shutdown -r now


No hay comentarios:

Publicar un comentario