déverrouillage de rootfs via la connexion ssh dans initramfs
Vous pouvez déverrouiller votre rootfs au démarrage à distance, en utilisant ssh pour vous connecter au système de démarrage lorsqu'il est exécuté avec initramfs monté.
Installer
Pour que le déverrouillage à distance fonctionne, les packages suivants doivent être installés avant de générer initramfs: dropbear
busybox
Le fichier /etc/initramfs-tools/initramfs.conf
contient les options de configuration utilisées lors de la construction de initramfs. Il devrait contenir BUSYBOX=y
(ceci est défini comme valeur par défaut lorsque le paquetage busybox est installé) pour que busybox soit installé dans le initramfs, et ne devrait pas contenir
DROPBEAR=n
, ce qui désactiverait l'installation de dropbear dans initramfs. Si défini sur DROPBEAR=y
, dropbear sera installé dans tous les cas; Si
DROPBEAR
non défini, dropbear ne sera installé que dans le cas d’une installation existante de cryptroot.
Les clés d’hôte utilisées pour initramfs sont dropbear_dss_host_key
et
dropbear_rsa_host_key
, toutes deux situées dans /etc/initramfs-tools/etc/dropbear/
. S'ils n'existent pas lors de la compilation de initramfs, ils seront créés automatiquement. Voici les commandes pour les créer manuellement:
dropbearkey -t dss -f /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
Comme les initramfs ne seront pas chiffrés, une authentification publique est supposée. La ou les clés utilisées pour cela seront extraites de
/etc/initramfs-tools/root/.ssh/authorized_keys
. Si ce fichier n'existe pas lors de la compilation de initramfs, il sera créé et
/etc/initramfs-tools/root/.ssh/id_rsa.pub
y sera ajouté. Si ce dernier fichier n'existe pas non plus, il sera généré automatiquement - vous trouverez la clé privée correspondante sur laquelle vous devrez ultérieurement vous connecter à initramfs /etc/initramfs-tools/root/.ssh/id_rsa
(ou id_rsa.dropbear
au cas où vous en auriez besoin au format dropbear). Voici les commandes pour effectuer les étapes respectives manuellement:
Pour créer une clé (au format dropbear):
dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
Pour convertir la clé du format dropbear au format openssh:
/usr/lib/dropbear/dropbearconvert dropbear openssh \
/etc/initramfs-tools/root/.ssh/id_rsa.dropbear \
/etc/initramfs-tools/root/.ssh/id_rsa
Pour extraire la clé publique:
dropbearkey -y -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear | \
grep "^ssh-rsa " > /etc/initramfs-tools/root/.ssh/id_rsa.pub
Pour ajouter la clé publique au fichier allowed_keys:
cat /etc/initramfs-tools/root/.ssh/id_rsa.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys
Si vous voulez une interface pour obtenir configuré à l' aide dhcp, la mise
DEVICE=
en /etc/initramfs-tools/initramfs.conf
devrait être suffisant. Initramfs doit également respecter le ip=
paramètre du noyau. Si vous utilisez grub, vous voudrez probablement le définir /boot/grub/menu.lst
, soit dans la # kopt=
ligne " ", soit ajouté à une ou plusieurs lignes " kernel
" spécifiques . Le ip=
paramètre de noyau est documenté Documentation/nfsroot.txt
dans l'arborescence des sources du noyau.
Problèmes
N'oubliez pas de courir update-initramfs
lorsque vous avez modifié la configuration pour la rendre efficace!
La collecte d’entropie suffisante pour le démon ssh semble parfois poser problème. Le démarrage du démon ssh peut être retardé jusqu'à ce que suffisamment d'entropie ait été récupérée. Ceci n'est pas bloquant pour le processus de démarrage. Ainsi, lorsque vous êtes sur la console, vous n'avez pas à attendre que sshd ait terminé son démarrage.
Procédure de déverrouillage
Pour déverrouiller à distance, vous pouvez faire quelque chose comme ceci:
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
-i "~/id_rsa.initramfs" root@initramfshost.example.com \
"echo -ne \"secret\" >/lib/cryptsetup/passfifo"
Cet exemple suppose que vous avez un known_hosts
fichier supplémentaire " ~/.ssh/known_hosts.initramfs
" qui contient la clé d’hôte du système cryptroot, un fichier " ~/id_rsa.initramfs
" qui contient la clé autorisée du système cryptroot, que le nom du système cryptroot est " initramfshost.example.com
" et que la phrase secrète de cryptroot est " secret
"
- < debian@x.ray.net
>, mer. 30 sept. 2009
zless /usr/share/doc/cryptsetup/README.remote.gz