Déverrouiller une partition Linux chiffrée via SSH
Lors de l'installation d'un nouveau système il est courant d'avoir une hésitation entre sécurité et simplicité. Nous allons voir ici comment déverrouiller une partition chiffrée avec luks via SSH.
Lors de l'installation d'un nouveau système il est courant d'avoir une hésitation entre sécurité et simplicité.
C'est vrai que ce n'est pas très pratique de devoir être devant un serveur lors d'un redémarrage ainsi que les cas où le mappage du clavier reste en anglais US.
Pour cette raison voici un tutoriel pour réaliser cette action en réseau via SSH.
Prérequis
- Ubuntu (testé sur ubuntu 20.04)
- Partition chiffrée
- Adresse IP fixe (ou équivalent)
- Pair de clés SSH
Mise à jour du système
Dans un premier temps il faut que le système soit à jour.
apt update
apt upgrade -y
Installation de dropbear pour initramfs
Dans cette partie nous allons installer une version spécifique du serveur SSH Dropbear
avec des fonctionnalités lui permettant de fonctionner dans un environnement initramfs
qui est utilisé pendant le démarrage.
apt install dropbear-initramfs
NOTE: À l'installation l'erreur suivante peut s'afficher :
dropbear: WARNING: Invalid authorized_keys file, remote unlocking of cryptroot via SSH won't work!
Cette erreur sera réglée par la suite.
Configuration de dropbear
Le fichier de configuration spécifique au paquet dropbear-initramfs
est le suivant :
/etc/dropbear-initramfs/config
.
Changement du port par défaut
Comme l'environnment initramfs
ne permet pas l'usage d'un pare-feu il est recommandé de changer le port utilisé par le serveur dropbear
.
Par exemple utiliser le port 9210
il faut ajouter la ligne suivante au fichier de configuration :
/etc/dropbear-initramfs/config
DROPBEAR_OPTIONS="-p 9210"
Méthode alternative
Pendant les recherches j'ai vu que certaines personne avait eu des problèmes avec cette configuration. Il semblerait que dans certains cas, mettre la ligne DROPBEAR_OPTION
dans le fichier /etc/initramfs-tools/initramfs.conf
permettrait de régler le problème.
Ajustement
Pour voir les options toutes disponibles utilisez la commande man dropbear
.
Personnellement j'ai choisi d'ajouter les options :
-s
: Désactive la connexion par mot de passe-j
: Désactivation du forwarding de port local-k
: Désactivation du forwarding de port distant-I 60
: Temps avant la coupure de la connexion lorsqu'il n'y a pas de transmission de traffic
Résultat nous avons la configuration suivante :
/etc/dropbear-initramfs/config
DROPBEAR_OPTIONS="-p 9210 -s -j -k -I 60"
Authentification SSH
Maintenant comme nous avons désactivé la connexion par mot de passe il faut ajouter votre clé publique aux clés ssh autorisées.
Cette clé doit être ajoutée dans le fichier /etc/dropbear-initramfs/authorized_keys
, une clé par ligne.
Si vous voulez réduire les privilèges liés à une clé pour n'autorisé que l'action de déchiffrement vous pouvez ajouter les instructions suivantes au début de la ligne:
no-port-forwarding,no-agent-forwarding,no-x11-forwarding,command="/bin/cryptroot-unlock"
.
NOTE: Pour rappel, dans le cas d'une clé
RSA
le vôtre est probablement dans le fichier~/.ssh/id_rsa.pub
sur votre machine et non le serveur.
Si vous avez besoin d'en générer une la commandessh-keygen
de votre station de travail a cette fonction.
Après avoir modifié la configuration de dropbear, il ne faut pas oublier de reconstruire l'envirronement initramfs: update-initramfs -u
.
Paramètres IP du Kernel
Afin d'avoir une IP fixe lors du démarrage il faut définir les paramètres IP au niveau du kernel.
Définition d'une IP statique
Il est possible de définir une IP statique au démarrage en modifiant le paramètre GRUB_CMDLINE_LINUX_DEFAULT
du fichier /etc/default/grub
.
Pour se faire il faut ajouter l'instruction suivante : ip=<ip>::<ip-passerelle>:<masque>
.
Voici un exemple :
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity ip=192.168.1.2::192.168.1.1:255.255.255.0"
Ensuite il ne faut pas oublier de mettre à jour la configuration de grub :
update-grub
Méthode alternative
Pour cette étape aussi j'ai pu observer que pour certaines personnes cette méthode ne fonctionne pas correctement, si vous êtes dans cette situation vous pouvez essayer ce qui suit.
À la place de modifier le fichier /etc/default/grub
, il est possible d'ajouter la ligne : IP="<ip>::<ip-passerelle>:<masque>::eth0:off"
au fichier /etc/initramfs-tools/initramfs.conf
.
NOTE:: Le mot clé
IP
est en majuscule.
Et ensuite il ne faut pas oublier de reconstruire initramfs avec la commande update-initramfs -u
.
Connexion
Maintenant faisons un essai en redémarrant la machine :
reboot
Ensuite connectons-nous à la machine :
ssh -p 9210 [email protected]
Enfin il ne reste plus que le déverrouillage de la partition :
cryptroot-unlock
Please unlock disk dm_crypt-0:
Une fois la connexion automatiquement coupée, la partition est ouverte, le système termine son démarrage et il est maintenant possible de se connecter.