Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

viernes, 1 de febrero de 2013

La necesidad de proteger el gestor de arranque de Linux (GRUB)

A menudo está la creencia generalizada de que Linux es increiblemente seguro, que una vez lo has instalado no tienes que preocuparte de nada porque el sistema es muy solido. Aunque la verdad es que no es aquello no es del todo cierto. Seguro lo es cierto, pero Linux por defecto es un sistema que te viene con lo básico y justo para funciona, dejando un par de cosas en el aire, las cuales, si no las tratamos nos pueden costar caras. Una de ellas es la poca seguridad que te ofrece el GRUB por defecto, debido a que alguien con conocimientos, puede entrar en tu equipo sin realizar demasiadas florituras. En este post explicaré tanto la vulnerabilidad cómo la solución:


Cómo entrar en el sistema con permisos de root sin contraseña.

Antes de nada aclarar que el contenido de ésto es meramente informativo y para casos de emergencia, cómo por ejemplo, el desconocimiento de la contraseña cómo administrador del sistema. El mal uso de dicha información queda totalmente bajo la responsabilidad del usuario. Al final del manual se explicará cómo restringir estas intrusiones.

Éste proceso se realiza durante el arranque del sistema, justo en el momento en el que aparece la pantalla del GRUB. En aquel momento movemos usamos las flechas del teclado para situarnos sobre el sistema o distribución sobre la que queremos entrar.


Figura 1.1 Menú principal GRUB



Una vez decidido el destino, nos fijamos en el texto que aparece debajo de la pantalla de selección del GRUB. En dicho texto nos muestra las teclas que podemos pulsar en esta pantalla. En éste caso, nosotros tenemos 3 teclas que podemos pulsar, las cuales pueden cambiar dependiendo de la versión del GRUB que tengamos. En éste caso podemos pulsar ENTER para entrar al sistema, e para editar los comandos que se usan antes de arrancar el sistema y c para entrar la línea de comandos. La tecla que nos interesa a nosotros es e con lo que la pulsamos, mostrándonos la siguiente pantalla:


Figura 1.2 Edición de comandos antes del arranque


Nota: En ésta pantalla podemos editar directamente los comandos que se ejecutan antes de iniciarse el sistema, aunque en versiones anteriores aparecerían estas líneas divididas entre si cómo opciones de selección (como si fuese un menú de selección de GRUB normal) y deberíamos de volver a pulsar la tecla e para poder editar la línea deseada, y pulsando ENTER tras finalizar la edición ésta.

En estas líneas (Figura 1.2) se ven los módulos que se cargan, las acciones que se toman antes de cargar el sistema, etc… La línea que en verdad nos interesa es ésta (Figura 1.3):

Figura 1.3 Linea a editar para poder lograr lo que nos proponemos


Aquí, debemos editar la palabra ro por rw. Ro, significa Read Only pero a nosotros nos interesa tener la capacidad de cambiar los datos del sistema, con lo que escribimos rw, es decir Read and Write. Una vez editada ésta, vamos al final de la línea, después de quiet y escribimos lo siguiente: init=/bin/bash. Al estar basado en el teclado en ingles la tecla = no es la misma que en el teclado español. Para poder escribir = hay que pulsar la tecla ¡. Una vez editada la línea debería quedar así (figura 1.4).

Figura 1.4 Resultado de la línea tras la edición:

Una vez hechos los cambios, nos fijamos en la parte inferior de la pantalla de edición de comandos (Figura 1.2). Allí nos aclaran las acciones que podemos tomar. En éste caso pulsamos ctrl. + x para poder entrar en el sistema con éstos cambios. Cabe decir que estos cambios NO son permanentes. Es decir que la próxima vez que reiniciemos el sistema, éstos cambios no se verán reflejados, pues sólo afectan a ésta vez. Tras pulsar dicha combinación de teclas nos aparecerá la siguiente pantalla.

Figura 1.5 Pantalla de root

Ya está. Ya somos usuario root con permisos de lectura y escritura. No tenemos la misma disponibilidad de comandos que cuando entramos de forma normal pero podemos editar cualquier fichero a placer, cambiar la contraseña de root con passwd o incluso borrar las contraseñas de todos los usuarios del sistema.


Pasos a seguir para proteger el GRUB para que no puedan entrar cómo root
  • Entramos en una terminal putty conectada al equipo sobre el que deseamos actuar.
  • Ejecutamos el comando grub-mkpasswd-pbkdf2 dando como resultado una clave con cifrado pbkdf2 cómo por ejemplo esta (tarda un rato en hacerse). Te pedirá la contraseña que deseas cifrar que será la que luego pediremos en el grub para intentar editar la línea de comandos:

PBKDF2 is grub.pbkdf2.sha512.10000.94723165B38DD157D820B79CE29746A6093AC76FBE22F5EADCED11EA7EF3CDD22E78ABD6545C79538FCD432A7873D3C521D3E9235B1780EE1FB5FD36607CF34D.99220BFE02CAECEAF628E27CE3C58F2ECCCE9376924A2111616892563E2126BB21E33477CC4FC4E671922A15093D718E8D62400E5DCF3868E0CB244AD15E4AC5

  • Copiamos la clave generada (esa es la razón por la que hay que usar putty)
  • Ahora entramos en la carpeta /boot/grub/grub.cfg y debemos buscar una sentencia parecida a esta:


  • Antes o después de dicha línea escribimos:

set superusers= usuario
password_pdkdf2 usuario mgrub.pbkdf2.sha512.10000.94723165B38DD157D820B79CE29746A6093AC76FBE22F5EADCED11EA7EF3CDD22E78ABD6545C79538FCD432A7873D3C521D3E9235B1780EE1FB5FD36607CF34D.99220BFE02CAECEAF628E27CE3C58F2ECCCE9376924A2111616892563E2126BB21E33477CC4FC4E671922A15093D718E8D62400E5DCF3868E0CB244AD15E4AC5 (la clave generada antes)

Con esto tenemos una contraseña cifrada, contraseña que deberá introducirse si deseamos editar la línea de comandos del GRUB. Esta contraseña no modificará en nada el arranque y se podrá actuar con normalidad para el resto de funcionalidades. 

No hay comentarios :

Publicar un comentario