Aunque el protocolo SSH es muy útil para administrar un sistema de forma remota, hay ciertas funciones que están limitadas, por ejemplo, la instalación de un sistema operativo ya que, sin él, obviamente tampoco tenemos un servidor SSH al que conectarnos. Sin embargo, gracias a un script llamado «Takeover» esto ahora sí que va a ser posible.
Takeover.sh es un sencillo script desarrollado para permitirnos borrar por completo un sistema Linux y reinstalarlo cómodamente de forma remota, todo ello a través del protocolo SSH. Para ello, este script nos permite iniciar sesión en un entorno de recuperación cargado en la memoria de manera que, desde él, podemos desmontar todo el sistema de ficheros y hacer con él lo que queramos, por ejemplo, borrarlo por completo y comenzar la instalación de un nuevo sistema Linux, todo ello sin necesidad de reiniciar el ordenador y sin tener que tocar, en ningún momento, un terminal físico.
El creador de este proyecto recuerda a los usuarios que es un proyecto experimental y que puede funcionar mal y dejar el sistema totalmente inservible. Poco a poco, el script se irá mejorando y se corregirán posibles fallos que puedan existir, sin embargo, debemos tener en cuenta de que estamos hablando de algo muy crítico y que, de salir mal, puede dejar el equipo totalmente inutilizable hasta que lo reparemos localmente.
Este script es de código abierto, y podemos descargarlo desde GitHub.
A continuación, vamos a explicar cómo funciona este script, aunque, tal como recomienda el desarrollador, os recomendamos probarlo localmente antes en una máquina virtual y, si no sabes lo que estás haciendo, mejor no lo utilices en tu propio sistema de forma remota ya que, como hemos dicho, el mínimo fallo dejará el ordenador sin sistema operativo o con un kernel panic.
Cómo funciona Takeover.sh
Para utilizar este script, lo primero que debemos hacer es crear un directorio /takeover en el sistema y montar dicho directorio en la memoria RAM con tmpfs ya que, si vamos a borrar el disco duro de forma remota, debemos asegurarnos de que este sistema de recuperación sigue funcionando.
A continuación, extraeremos en dicho directorio un sistema de recuperación a través del cual trabajaremos, por ejemplo, SystemRescueCD. También debemos copiar Busybox al directorio /takeover/busybox.
Una vez hecho esto, debemos comprobar si Busybox funciona correctamente (ejecutando, por ejemplo, /takeover/busybox sh) y que tenemos todos los permisos de ejecución, lectura y escritura para evitar encontrarnos con problemas.
El siguiente paso será descargarnos todos los archivos del repositorio de Takeover, enlazado anteriormente, y lo copiaremos al directorio /takeover. Aunque el script funciona como tal, debemos compilar dentro del directorio el fichero «fakeinit.c» con gcc, ya que genera un archivo necesario para el correcto funcionamiento del script. Para compilarlo, podemos ejecutar simplemente «chroot /takeover gcc /fakeinit.c -o /fake».
Ya tenemos todo listo para arrancar el script. El siguiente paso será detener tantos procesos como podamos, para reducir el mínimo la tasa de error, y ejecutar el script con el comando:
- sh /takeover/takeover.sh
Este scripr habilitará un servidor SSHd en el puerto 80. Una vez conectado a él, ya podremos utilizar el nuevo entorno para detener por completo todos los demonios antiguos (kill -9) y desmontar todos los directorios montados.
Ahora ya estamos ejecutando este entorno completamente desde la memoria RAM. Ya podemos empezar a hacer lo que queramos, por ejemplo, borrar todo el disco para, después, realizar una instalación limpia del sistema operativo.
Como podemos ver, el proceso no es nada sencillo y, además, es muy fácil meter la pata y dejar nuestro sistema inutilizable. Sin embargo, si tenemos cuidado y seguimos detalladamente los pasos listados en su repositorio, cumplirá perfectamente su función: permitirnos conectar a un entorno Live a través de SSH para poder borrar y reinstalar un sistema operativo Linux de forma remota.
¿Qué te parece este script?