sbloccare rootfs tramite login ssh in initramfs
Puoi sbloccare i tuoi rootfs all'avvio da remoto, usando ssh per accedere al sistema di boot mentre è in esecuzione con initramfs montato.
Impostare
Affinché lo sblocco remoto funzioni, è necessario installare i seguenti pacchetti prima di creare initramfs: dropbear
busybox
Il file /etc/initramfs-tools/initramfs.conf
contiene le opzioni di configurazione utilizzate durante la creazione di initramfs. Dovrebbe contenere BUSYBOX=y
(questo è impostato come predefinito quando è installato il pacchetto busybox) per avere busybox installato in initramfs e non dovrebbe contenere
DROPBEAR=n
, il che disabiliterebbe l'installazione di dropbear su initramfs. Se impostato su DROPBEAR=y
, dropbear verrà installato in ogni caso; se
DROPBEAR
non è impostato affatto, dropbear verrà installato solo in caso di una configurazione di cryptroot esistente.
Le chiavi host utilizzate per initramfs sono dropbear_dss_host_key
e
dropbear_rsa_host_key
, entrambe situate in /etc/initramfs-tools/etc/dropbear/
. Se non esistono quando viene compilato initramfs, verranno creati automaticamente. Di seguito sono riportati i comandi per crearli manualmente:
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
Poiché initramfs non verrà crittografato, si presuppone l'autenticazione con chiave pubblica. Le chiavi utilizzate per questo verranno prese da
/etc/initramfs-tools/root/.ssh/authorized_keys
. Se questo file non esiste quando viene compilato initramfs, verrà creato e
/etc/initramfs-tools/root/.ssh/id_rsa.pub
vi verrà aggiunto. Se anche quest'ultimo file non esiste, verrà generato automaticamente - troverai la chiave privata corrispondente di cui dovrai successivamente accedere agli initramfs /etc/initramfs-tools/root/.ssh/id_rsa
(o id_rsa.dropbear
nel caso in cui tu ne abbia bisogno in formato dropbear). Di seguito sono riportati i comandi per eseguire manualmente i rispettivi passaggi:
Per creare una chiave (in formato dropbear):
dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
Per convertire la chiave dal formato dropbear al formato openssh:
/usr/lib/dropbear/dropbearconvert dropbear openssh \
/etc/initramfs-tools/root/.ssh/id_rsa.dropbear \
/etc/initramfs-tools/root/.ssh/id_rsa
Per estrarre la chiave pubblica:
dropbearkey -y -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear | \
grep "^ssh-rsa " > /etc/initramfs-tools/root/.ssh/id_rsa.pub
Per aggiungere la chiave pubblica al file authorized_keys:
cat /etc/initramfs-tools/root/.ssh/id_rsa.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys
Nel caso in cui si desidera un po 'di interfaccia per avere configurato tramite DHCP, impostare
DEVICE=
in /etc/initramfs-tools/initramfs.conf
dovrebbe essere sufficiente. Initramfs dovrebbe anche rispettare il ip=
parametro kernel. Nel caso in cui usi grub, probabilmente ti consigliamo di impostarlo /boot/grub/menu.lst
, nella # kopt=
riga ' ' o aggiunto a una o più righe specifiche kernel
. Il ip=
parametro kernel è documentato Documentation/nfsroot.txt
nella struttura dei sorgenti del kernel.
Problemi
Non dimenticare di correre update-initramfs
quando hai cambiato la configurazione per renderlo efficace!
Raccogliere abbastanza entropia per il demone ssh a volte sembra essere un problema. L'avvio del demone ssh potrebbe essere ritardato fino a quando non è stata recuperata abbastanza entropia. Questo non è un blocco per il processo di avvio, quindi quando sei sulla console non dovrai aspettare che sshd completi il suo avvio.
Procedura di sblocco
Per sbloccare da remoto, potresti fare qualcosa del genere:
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
-i "~/id_rsa.initramfs" root@initramfshost.example.com \
"echo -ne \"secret\" >/lib/cryptsetup/passfifo"
Questo esempio presuppone che tu abbia un known_hosts
file " ~/.ssh/known_hosts.initramfs
" che contiene la chiave host del sistema cryptroot, che hai un file " ~/id_rsa.initramfs
" che contiene la chiave autorizzata per il sistema cryptroot, che il nome del sistema cryptroot è " initramfshost.example.com
" e che il la passphrase di cryptroot è " secret
"
- < debian@x.ray.net
>, mer 30 set 2009
zless /usr/share/doc/cryptsetup/README.remote.gz