Cómo instalar Ubuntu 22.04 con cifrado de disco completo

0 acciones
0
0
0
0

  Introducción

Guion imagen de instalación Hetzner Rescue System ofrece una forma sencilla de instalar varias distribuciones de Linux.

Este tutorial muestra cómo usar installimage para instalar un sistema Ubuntu 22.04 encriptado y agregar desbloqueo remoto a través de SSH (dropbear) en el initramfs almacenado en una partición separada. /bota espectáculos.

Requisitos previos
  • Cuenta de Hetzner
  • El servidor fue iniciado en el sistema de rescate.
  • Clave pública SSH RSA, ECDSA o ED25519
  • No hay redes privadas conectadas en Hetzner Cloud

Paso 1: Crear o copiar la clave pública SSH

Para desbloquear el sistema cifrado de forma remota, necesita una clave SSH. La usará más adelante para iniciar sesión en el sistema arrancado. El demonio SSH dropbear, incluido en Ubuntu 22.04, solo admite claves RSA y ECDSA. Si no dispone de una clave, deberá crear una. Recomendamos usar claves ED25519 o ECDSA.

Por ejemplo, para crear una clave SSH ED25519, ejecute:

ssh-keygen -t ed25519

Copie la clave pública al sistema de rescate, por ejemplo, utilizando scp:

scp ~/.ssh/id_ed25519.pub root@<your-host>:/tmp/authorized_keys

Paso 2: Crear o copiar el archivo de configuración de la imagen de instalación

Al invocar installimage sin opciones, se inicia en modo interactivo y abre un editor tras seleccionar una imagen de distribución. Al salir del editor, la instalación continúa y la configuración correspondiente se guarda como /installimage.conf en el sistema instalado. En este tutorial, pasaremos dicho archivo de configuración para la instalación directa.

Cree un archivo /tmp/setup.conf con el siguiente contenido o cópielo al servidor en el sistema de rescate.

Nota: Reemplace Secreto con una contraseña segura y ajuste el nombre de la unidad y la partición según sea necesario.

CRYPTPASSWORD secret
DRIVE1 /dev/sda
BOOTLOADER grub
HOSTNAME host.example.com
PART /boot/efi esp 256M
PART /boot ext4 1G
PART / ext4 all crypt
IMAGE /root/images/Ubuntu-2204-jammy-amd64-base.tar.gz
SSHKEYS_URL /tmp/authorized_keys

Esta configuración instala Ubuntu en una unidad (/dev/sda) con un /boot no cifrado separado que se requiere para el desbloqueo remoto.

Paso 3 – Crear o copiar el script posterior a la instalación

Para desbloquear la partición cifrada de forma remota, necesitamos instalar el servidor SSH dropbear y añadirlo al archivo initramfs almacenado en la partición /boot sin cifrar. Esto también incluye dhclient para la configuración de red, pero sin ningún otro cambio. Para habilitar la compatibilidad con Hetzner Cloud, necesitamos añadir un enlace que admita rutas RFC3442.

Para realizar estos pasos adicionales, necesitamos un script posterior a la instalación para installimage.

Cree un archivo /tmp/post-install.sh en el sistema de rescate con el siguiente contenido:

#!/bin/bash
add_rfc3442_hook() {
cat << EOF > /etc/initramfs-tools/hooks/add-rfc3442-dhclient-hook
#!/bin/sh
PREREQ=""
prereqs()
{
echo "\$PREREQ"
}
case \$1 in
prereqs)
prereqs
exit 0
;;
esac
if [ ! -x /sbin/dhclient ]; then
exit 0
fi
. /usr/share/initramfs-tools/scripts/functions
. /usr/share/initramfs-tools/hook-functions
mkdir -p \$DESTDIR/etc/dhcp/dhclient-exit-hooks.d/
cp -a /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes \$DESTDIR/etc/dhcp/dhclient-exit-hooks.d/
EOF
chmod +x /etc/initramfs-tools/hooks/add-rfc3442-dhclient-hook
}
remove_unwanted_netplan_config() {
cat << EOF > /etc/initramfs-tools/scripts/init-bottom/remove_unwanted_netplan_config
#!/bin/sh
if [ -d "/run/netplan" ]; then
interface=\$(ls /run/netplan/ | cut -d'.' -f1)
if [ \${interface:+x} ]; then
rm -f /run/netplan/"\${interface}".yaml
fi
fi
EOF
chmod +x /etc/initramfs-tools/scripts/init-bottom/remove_unwanted_netplan_config
}
# Install rfc3442 hook
add_rfc3442_hook
# Adding an initramfs-tools script to remove /run/netplan/{interface}.yaml,
# because it is creating unwanted routes
remove_unwanted_netplan_config
# Update system
apt-get update >/dev/null
apt-get -y install cryptsetup-initramfs dropbear-initramfs
# Copy SSH keys for dropbear and change the port
cp /root/.ssh/authorized_keys /etc/dropbear/initramfs/
sed -ie 's/#DROPBEAR_OPTIONS=/DROPBEAR_OPTIONS="-I 600 -j -k -p 2222 -s"/' /etc/dropbear/initramfs/dropbear.conf
dpkg-reconfigure dropbear-initramfs
update-initramfs -u

Importante: Haga que el script sea ejecutable después de la instalación:

chmod +x /tmp/post-install.sh

Paso 4 – Iniciar la instalación

Antes de comenzar la instalación, verifique nuevamente el contenido de los siguientes archivos:

  • /tmp/authorized_keys – Su clave SSH pública (RSA, ECDSA o ED25519)
  • /tmp/setup.conf – configuración de la imagen de instalación
  • /tmp/post-install.sh – es ejecutable y contiene el script posterior a la instalación.

Ahora está listo para iniciar la instalación con el siguiente comando:

installimage -a -c /tmp/setup.conf -x /tmp/post-install.sh

Espere a que se complete la instalación y verifique el archivo debug.txt para ver si hay errores.

Paso 5 – Arranque el sistema instalado

Una vez finalizada la instalación y resueltos los errores, puede reiniciar el servidor e iniciar el sistema recién instalado. Si tiene un KVM conectado o a través de una consola remota en una instancia en la nube, puede supervisar el proceso de arranque.

Después de un rato, el servidor debería responder al ping. Ahora, inicia sesión en dropbear por SSH y ejecuta cryptroot-unlock para desbloquear las particiones cifradas.

  • Con clave ED25519 o ECDSA
ssh -p 2222 root@<your-host>
  • Con clave RSA

En el caso de RSA, debemos especificar explícitamente que esta clave es aceptada.

ssh -o "PubkeyAcceptedKeyTypes +ssh-rsa" -p 2222 root@<your-host> -i ~/.ssh/id_rsa

Ejemplo:

$ ssh -o "PubkeyAcceptedKeyTypes +ssh-rsa" -p 2222 root@<your-host> -i ~/.ssh/id_rsa
BusyBox v1.30.1 (Ubuntu 1:1.30.1-7ubuntu3) built-in shell (ash)
Enter 'help' for a list of built-in commands.
# cryptroot-unlock 
Please unlock disk luks-80e097ad-c0ab-47ce-9302-02dd316dc45c:

Si la contraseña es correcta, el arranque continuará y se desconectará automáticamente de la sesión SSH temporal.

Después de unos segundos, podrá iniciar sesión en su nuevo sistema.

Atención

Esta guía está escrita específicamente para Ubuntu 22.04. Es posible que no funcione en otras distribuciones.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar