Sbloccare LUKS da remoto con SSH
Pubblicato il ven 08 giugno 2018 in informatica • 2 min read
Note
Questo tutorial presuppone che abbiate già provveduto ad effettuare un'installazione cifrata di Arch Linux. Qui di seguito sono descritti i passi necessari per sbloccare il disco cifrato via Secure Shell tramite chiave pubblica.
Tutte le informazioni necessarie su come installare Arch Linux su un disco cifrato le potete trovare sulla wiki ufficiale ed in particolare qui. Oppure se siete impazienti potete leggere la guida rapida che trovate nella sezione downloads del sito.
Io ho scelto di usare tinyssh perché è un server ssh molto leggero che supporta egregiamente i nuovi algoritmi ssh ed25519
+ curve25519-sha256@libssh.org
+ chacha20-poly1305@openssh.com
. In questo modo posso far uso della chiave di autenticazione cv25519 presente sul mio token OpenPGP NitroKey-Start/FST-01.
Attenzione: questo metodo ed i pacchetti necessari non sono supportati ufficialmente da Arch Linux. Spero sappiate cosa state facendo.
Procedura
Ci servono dei pacchetti presenti nel repository AUR (Arch User Repository) mantenuti dalla community che si possono installare tra l'altro con yaourt.
~ $ yaourt -S mkinitcpio-netconf mkinitcpio-utils mkinitcpio-tinyssh
Terminata l'installazione come utente root aprite il file /etc/tinyssh/root_key
~ # vim /etc/tinyssh/root_key
ed incollatevi dentro la chiave pubblica ssh; è la stessa che andremmo a mettere nel classico file ~/.ssh/authorized_keys
A questo punto dobbiamo modificare il file di configurazione /etc/mkinitcpio.conf in modo tale da includere nel ramdisk gli HOOKs necessari
~ # vim /etc/mkinitcpio.conf
e modificare la variabile HOOKS=(....)
sostituendo encrypt
con netconf tinyssh encryptssh
e ottenendo quindi
Adesso bisogna modificare il file /etc/default/grub
per configurare i parametri da passare al kernel necessari a configurare la rete.
La sintassi è questa:
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip>
Editiamo il file che si presenta così nella mia VM di test:
e modifichiamolo in questo modo:
Nel mio caso, avendo un server dhcp, ho scelto di far assegnare al server dhcp l'indirizzo ip.
ip=:::::eth0:dhcp
Ma a meno che non siate sicuri di quello che state facendo vi consiglio di impostare un indirizzo statico.
La sintassi è questa:
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip>
Ad esempio potreste avere:
ip=192.168.1.20::192.168.1.1:255.255.255.0::eth0:none:
dove 192.168.1.20 sarà l'indirizzo ip del pc da sbloccare, 192.168.1.1 è l'indirizzo del gateway (solitamente il vostro router di casa) e 255.255.255.0 la netmask.
Occorre prestare attenzione al fatto che nell'indicare il nome della scheda di rete vanno usati i nomi del Kernel (eth0, eth1,...) e non quelli di udev (ad esempio: enp0s1, ...).
Maggiori informazioni le potete trovare nella documentazione ufficiale del Kernel.
Terminata la configurazione dobbiamo rigenerare il ramdisk:
~ # mkinitcpio -p linux
ed aggiornare la configurazione di grub:
~ # grub-mkconfig -o /boot/grub/grub.cfg
Se non avete commesso alcune errore, riavviando il pc, potrete connetervi tramite ssh per inserire la password di decodifica del disco cifrato.