Déchiffrement LUKS à distance

Utilité de dropbear SSH

Le Dropbear SSH permet de redémarrer à distance un serveur avec un disque dur entièrement chiffré (Full Disk Encryption - FDE). Grâce à Dropbear, vous pouvez accéder à un shell SSH lors de la phase de démarrage (initrd). Vous pourrez alors entrer votre passphrase de déchiffrement non seulement physiquement sur le serveur, mais aussi à distance via le réseau.

Prérequis

Installation

Les deux outils utilisés ci-dessous sont disponibles sous forme de paquets pour Ubuntu/Debian.

Accès SSH via Dropbear

Installation de dropbear-initramfs

sudo apt update
sudo apt install dropbear-initramfs

Configuration

Configuration de la machine de déchiffrement à distance

Vous pouvez ajouter la configuration suivante à votre fichier SSH ~/.ssh/config :

...
    # Authentification avec une clé SSH
    Host node-initrd
      Hostname 5.4.3.2 # IP de votre serveur
      Port 22
      User root
      RequestTTY yes
      RemoteCommand cryptroot-unlock
      HostKeyAlgorithms ssh-rsa
      IdentityFile ~/.ssh/private_key.pem
      PubkeyAuthentication yes
      UserKnownHostsFile /dev/null
...

Accès sécurisé via Tailscale (optionnel)

Vous pouvez utiliser le projet tailscale-initramfs pour enregistrer votre serveur de manière pérenne dans votre tailnet.

Installation de tailscale-initramfs

Un QR code sera affiché à la fin des instructions suivante, il faut le scanner via votre téléphone et se connecter a votre compte tailscale pour y joindre votre node.

# Ajouter le dépôt
sudo mkdir -p --mode=0755 /usr/local/share/keyrings
curl -fsSL https://raw.githubusercontent.com/lugoues/tailscale-initramfs/gh-pages/public.key | sudo tee /usr/local/share/keyrings/tailscale-initramfs-keyring.asc >/dev/null
echo 'deb [signed-by=/usr/local/share/keyrings/tailscale-initramfs-keyring.asc] https://lugoues.github.io/tailscale-initramfs/repo stable main' | sudo tee /etc/apt/sources.list.d/tailscale-initramfs.list >/dev/null

# Installer tailscale-initramfs
sudo apt update
sudo apt-get install tailscale-initramfs

# Lancer la configuration puis suivez le guide pour configurer vos ACL
sudo setup-initramfs-tailscale --ssh

Régénérez votre initrd avec la commande sudo update-initramfs -c -k all.

Configuration de la machine de déchiffrement à distance

Ajoutez la configuration suivante à votre fichier SSH ~/.ssh/config. Avec Tailscale, l’authentification passe par votre tailnet, donc un mot de passe ou une clé SSH ne sont pas nécessaires.

...
    # Authentification sans clé via Tailscale SSH
    Host node-initrd
      Hostname 100.111.10.11 # IP Tailscale de votre serveur
      Port 22
      User root
      RequestTTY yes
      RemoteCommand cryptroot-unlock
      HostKeyAlgorithms ssh-rsa
      UserKnownHostsFile /dev/null
...

Utilisation

Pour déchiffrer le disque dur, il vous suffira d’exécuter la commande ssh node-initrd, puis d’entrer votre passphrase LUKS.

Pour aller plus loin