Partición en equipo remoto cifrada iniciando via ssh

Vamos a ver cómo, si tienes un servidor remoto (sin pantalla y sin teclado), el cual tiene el almacenamiento cifrado, teclear la clave de cifrado en el arranque del sistema vía ssh.

Hay que instalar en el initr amfs un servidor ssh al que poder acceder para ejecutar el comando de descifrado de la unidad correspondiente.

Paquete necesario

Instalaremos el paquete dropbear-initramfs que es el que nos configurará el initramfs.

1. Instalación

En Debian, instalaremos tecleando:

sudo apt install dropbear-initramfs

2. Añadir clave pública

Añadiremos la clave pública para acceder al equipo en remoto solo desde donde tengamos instalada la clave privada que corresponde a la clave pública que añadamos.

Podemos añadir varias claves públicas si está previsto que vayamos a acceder desde varios equipos.

La clave pública la añadiremos en el fichero ubicado en:

/etc/dropbear/initramfs/authorized_keys

3. Poner al iniciar dirección IP estática

Se supone que el equipo sobre el que estamos trabajando tiene la dirección de red estática, se supone que es un servidor y los servidores sin IP estática darán problemas.

Consultaremos la interfaz de red con el comando ip add y anotaremos el nombre de la interfaz de red que puede ser eth0, entonces añadiremos en el fichero:

/etc/initramfs-tools/initramfs.conf

Le añadiremos el siguiente contenido (utilizaremos otra dirección de red en el caso de que la dirección de red local sea distinta al ejemplo):

DEVICE=eth0
IP=192.168.1.50::192.168.1.1:255.255.255.0::eth0:off

4. Configurar dropbear

Ejecutaremos el siguiente comando:

echo 'DROPBEAR_OPTIONS="-p 2222 -s -j -k"' >> /etc/dropbear/initramfs/dropbear.conf

Esto activará en el inicio el servidor ssh en el puerto 2222, al que accederemos con el comando ssh -p 2222 root@direccion_ip .

5. Generar initramfs

Generaremos el initramfs con el comando

sudo update-initramfs -u

6. Configurar cliente

Es conveniente configurar en el cliente el archivo

$HOME/.ssh/config

Incluiremos las siguientes líneas:

Host cifrado-servidor
    HostName servidor
    Port 2222
    User root
    RemoteCommand /usr/bin/cryptroot-unlock
    RequestTTY yes