Amikor egy Linux fájrendszert LVM-el titkosítva hozunk létre a debian telepítőjével, akkor minden indításkor kéri a jelszót a fájlrendszer feloldásához. Ezt lehet megoldani az adott számítógéphez köthető megoldással, ami feloldja automatikusan ezt.
Nálam egy /boot (sda1) és egy / (extended titkosított sda5) partíció van
0. Biztonsági mentés az eredeti initramfs-ről.
Hozzunk létre egy másolatot
cp /boot/initrd.img-X.Y.Z-N-amd64 /boot/initrd.img-X.Y.Z-N-amd64.safe
Majd változtassuk meg a betöltőmenüt. A /boot/grub/grub.cfg fájlban duplázzuk a menu-t a menuentry résznél, és azon belül az initrd sort változtassuk meg. Plusz egy timeout hiba miatt a linux-al kezdődő sorban az ro és quiet kernel parancsok közé tegyük be a következőt: rd.luks.crypttab=yes luks.crypttab=no.
Bár az a szabály, hogy ezt a fájlt ne változtassuk.
Valahogy így kellene kinéznie:
### BEGIN /etc/grub.d/10_linux ###
#...
menuentry 'Debian GNU/Linux (crypto safe)' --class debian --class gnu-linux --class gnu --class os {
load_video
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
search --no-floppy --fs-uuid --set=root 2a5e9b7f-2128-4a50-83b6-d1c285410145
echo 'Loading Linux 4.19.0-14-amd64 ...'
linux /vmlinuz-4.19.0-14-amd64 root=/dev/mapper/dradispro-root ro rd.luks.crypttab=yes luks.crypttab=no quiet
echo 'Loading initial ramdisk ...'
initrd /initrd.img-4.19.0-14-amd64.safe
}
# ...
### END /etc/grub.d/10_linux ###
Ezek után bármi gond lép fel a művelet által, vissza tudjuk állítani az eredeti állapotot.
1. Véletlenszerű kulcsfájl létrehozása
dd if=/dev/urandom of=/boot/keyfile bs=1024 count=4
2. Csak a rendszergazda férhessen hozzá
chmod 0400 /boot/keyfile
3. Kulcsfájl hozzárendelése a partícióhoz
cryptsetup -v luksAddKey /dev/sda5 /boot/keyfile
Ekkor be kell írni a partícióhoz tartozó jelszót. Utána a következő jelenik meg:
Key slot 0 unlocked.
Key slot 1 created.
Command successful.
4. /etc/crypttab fájl módosítása
Először megkeressük a /dev/sda1-hez tartozó UUID-t
ls -l /dev/disk/by-uuid/
Az eredetihez képest a none helyett a keyfile-t kell megadni, a végére pedig beszúrni a keyscript=/lib/cryptsetup/scripts/passdev szöveget
sda5_crypt UUID=(...) /dev/disk/by-uuid/<uuid>:/keyfile luks,discard,keyscript=/lib/cryptsetup/scripts/passdev
Legyen csak olvasható a fájl (eredetileg 0777)
chmod 0440 /etc/crypttab
5. Initramfs készítés
mkinitramfs -o /boot/initrd.img-4.19.0-14-amd64 4.19.0-14-amd64
6. Újraindítás
Források:
https://dradisframework.com/support/guides/customization/auto-unlock-luks-encrypted-drive.html
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=786559
Konfiguráció:
Lenovo X250 notebook
Debian10 Buster