Távoli újraindítás titkosított fájlrendszerrel

Feb. 24

Mit tegyünk, ha távolról kell újraindítanunk a rendszerünket, ami titkosított fájlrendszerről fut? Ha nem csinálunk semmit, akkor a boot folyamat megáll, és a konzolon kell begépelnünk a jelszót. Megmutatom, hogyan lehet a fájlrendszer jelszavát is ssh-n keresztül megadni.

Fontos: az itt leírtakat Debian Jessie disztribúció alatt próbáltam. Más Debian verziókban valószínűleg hasonlóan működik, de előfordulhat, hogy szükség lesz apróbb változtatásokra.

  • A távoli indításhoz szükségünk lesz az initrd-ben egy minimális ssh-szerverre.
  • Meg kell oldanunk, hogy ugyanazt a hostkey-t használja, mint a gépen futó openssh szerver.
  • Írnunk kell még egy kis scriptet, ami bekéri a jelszót, és beírja a megfelelő fifo-ba.
  • És végül meg kell győznünk az update-initramfs-t, hogy a scriptünket mindig tegye be az initrd-be.

Telepítsük fel a szükséges csomagokat:

apt-get install --no-install-recommends openssh-server dropbear busybox

Konvertáljuk az openssh kulcsát az initrd-ben futó dropbear számára:

/usr/lib/dropbear/dropbearconvert openssh dropbear \
  /etc/ssh/ssh_host_ecdsa_key \
  /etc/initramfs-tools/etc/dropbear/dropbear_ecdsa_host_key

Hozzuk létre a /root/unlock scriptet:

#!/bin/ash/
echo -n "Enter the key: "
read a
echo -ne "$a" > /lib/cryptsetup/passfifo
echo "Done."

Adjunk rá futási jogot:

chmod 755 /root/unlock

Hozzuk létre a hook-ok /usr/share/initramfs-tools/hooks/unlock néven

#!/bin/sh
. "${CONFDIR}/initramfs.conf"
. /usr/share/initramfs-tools/hook-functions
copy_exec "/root/unlock" "/bin/"

És végül frissítsük az initrd-t:

update-initramfs -u

Ha ezek után újraindítjuk a gépet, be tudunk rá lépni ssh-val a boot folyamat közben, és az unlock paranccsal megadva a titkosított meghajtó jelszavát, a boot folyamat folytatódik.

Következő bejegyzés Előző bejegyzés