Como cifrar todo el sistema operativo de un servidor

Muchas veces uno necesita proteger la información de un servidor o un equipo, esto es lo ideal pero presenta varios retos.

  • Es necesario introducir la frase para descifrar la partición o archivo cifrado al momento de querer utilizar los datos.

Esto es bastante simple si uno esta físicamente frente al equipo, o si tiene una conexión ssh.

Esta configuración tiene una desventaja, no todo esta cifrado, solo los datos que estén en esta partición o archivo, los datos del sistema operativo continúan siendo planos y pueden ser accedidos con solo montar el disco duro.

Los datos en swap podrían cifrarse, esto por lo general se hace con una clave aleatoria, esto no permite que el equipo pueda ser hibernado, aunque esto no es muy útil para un servidor, es importante mencionarlo.

Es importante siempre tener en cuenta donde se escriben los datos, en un error, se podría dejar algo sensible fuera del espacio cifrado.

Lo mejor es cifrar todo el equipo, pero eso significa que hay que introducir la frase de cifrado al iniciar el equipo, pero con un servidor remoto, esto no es posible por defecto, ya que el servidor ssh levanta con el sistema operativo.

A continuación vamos a mostrar una forma de poder cifrar “todo” el sistema operativo y tener una conexión remota para desbloquearlo.

La idea es cifrar todo el sistema operativo, instalar un servidor ssh en el initramfs que nos permita hacer una conexión al servidor sin tener el sistema operativo final cargado(ya que este esta cifrado) y con esta sesión ssh lograr introducir la clave de cifrado.

Instalar el sistema operativo

Al instalar el sistema operativo, seleccionar cifrar todo el sistema, no vamos a documentar todo el proceso, pero al llegar al método de particionado, por facilidad seleccionar la siguiente opción.

image

Esto va depender enteramente de las necesidades, para nuestro cosa, esto era lo mas simple y ademas era suficiente, se podrían hacer particiones y cifrar casa una por aparte.

Instalar requerimientos y configurar

Instalar los paquetes requeridos, lo vamos a demostrar para debian.

sudo apt-get install -yy dropbear-initramfs cryptsetup-initramfs lvm2

Agregar la llave publica a /etc/dropbear-initramfs/authorized_keys.

Agregar soporte de red al initramfs.

es importante sustituir solo las variables, los espacios donde están ubicadas no deben de cambiar, hay que respetar los :.

echo 'IP="${ip_address}::${gateway_ip}:${netmask}:${optional_fqdn}:${interface_name}:none"' > /etc/initramfs-tools/conf.d/ip

Regerar el initramfs

update-initramfs -k all -u

Al reiniciar, el equipo va a quedar con un servicio ssh escuchando, conectarse y ejecutar el cryptroot-unlock

/bin/cryptroot-unlock

Referencias



3 Me gusta

Al parecer en debian 10.6 (Dropbear v2018.76) no tiene soporte para llaves ed25519. Así que mejor hacerlos con RSA.