Van N db scriptünk, amit egy live pendrive-ról lefuttatva kapunk egy működő Linuxot. Egy db SSD-re megy fel az egész, jelenleg egy 1 megás BIOS boot partíciót csinál, mögötte a Linuxos partíciót és a végén egy - az egész meghajtó méretétől függően - fél vagy két gigás swap-et.
Ezt szeretnénk most kibővíteni azzal, hogy a fájlrendszer, amire települ az titkosított legyen és ne passphrase-es legyen (ne kérje a bootkor), hanem keyfile-os, amit egy másik partícióról ránt be (vagy egy külső USB-ről). Végigtúrtam a netet, de az egyetlen tutorial ami erről szólt, az nem részletezte a lépéseket, hanem a Debian 8-hoz volt egy leírás, ami az installert használta.
Ebben tud valaki segíteni? Az is jó, ha elirányít egy leírásra, ami nekem eddig kimaradt.
Hozzászólások
https://binblog.info/2008/12/04/using-a-usb-key-for-the-luks-passphrase/
Köszi, de én a rendszerpartíciót szeretném titkosítani.
https://www.howtoforge.com/tutorial/passwordless-encryption-of-linux-ro…
Hát, itt meg az install alatti rész nincs meg...de a másikkal kombinálva már lehet, hogy jó lesz, köszi.
Hát valamit nagyon elkeffentek, mert nem akaródzik sikerülni.
Kezdetnek létrehozom a következő partíciós táblát a
/dev/sda
-n:1. 1 MiB BIOS BOOT (04) N/A N/A
2. 256 MiB Linux (83) ext4 /boot
3. 2304 MiB Linux (83) ext4 /
4. 1 MiB MINIX (81) N/A N/A
5. 510 MiB Linux swap (82) swap swap
Aztán lefuttatom a következőket:
dd if=/dev/urandom of=/dev/sda4 bs=512
echo 'YES' | cryptsetup -v -c aes-xts-plain64 -s 512 -h sha256 -i 2000 luksFormat /dev/sda3 /dev/sda4
cryptsetup -c aes-xts-plain64 -d /dev/sda4 -s 512 -i 2000 open --type=plain /dev/sda3 eldcr
mkfs.ext4 -F /dev/sda2
e2label /dev/sda2 BootLabel
mkfs.ext4 -F /dev/mapper/eldcr
e2label /dev/mapper/eldcr RootLabel
mkdir -p /mnt/disk
mount /dev/mapper/eldcr /mnt/disk
mkswap /dev/sda5
Vagyis a
/dev/sda4
-re kiokádok 1 MiB-nyi random szemetet és acryptsetup
-hoz azt használom fel kulcsfájl gyanánt, aztán formázás és csatolás.Ezután jön a
debootstrap
majd achroot
, amiben felcsatolom a/dev/sda2
-őt/boot
-nak, majd telepítem a rendszert (kernelt, programokat, miegyebet).Az
/etc/fstab
-ba ez kerül:UUID=<a /dev/sda2 UUID-je> /boot ext4 errors=remount-ro 0 1
UUID=<a /dev/sda3 UUID-je> / ext4 errors=remount-ro 0 1
UUID=<a /dev/sda5 UUID-je> none swap sw 0 0
A
/etc/crypttab
-ba pedig ez:eldcr UUID=<a /dev/sda3 UUID-je> /dev/disk/by-uuid/<a /dev/sda4 UUID-je> luks,cipher=aes-xts-plain64,size=512,hash=sha256,time=2000,keyscript=/boot/getlukskey.sh
Az
/etc/default/grub
-ban beállításra kerülnek a következőek:GRUB_ENABLE_CRYPTODISK=y
GRUB_PRELOAD_MODULES="luks cryptodisk"
GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=UUID=<a /dev/sda3 UUID-je>:eldcr root=/dev/mapper/eldcr cryptopts=target=eldcr,source=/dev/disk/by-uuid/<a /dev/sda3 UUID-je>,keyscript=/boot/getlukskey.sh crypto=sha256:aes-xts-plain64:512:0:"
GRUB_CMDLINE_LINUX=""
Az
/etc/initramfs-tools/conf.d/cryptroot
fájlba ez kerül:CRYPTROOT=target=eldcr,source=/dev/disk/by-uuid/<a /dev/sda3 UUID-je>
És végül a
/boot/getlukskey.sh
tartalma:#!/bin/sh
dd if=/dev/disk/by-uuid/<a /dev/sda4 UUID-je> bs=512 | cat
(Természetesen a
chmod a+x /boot/getlukskey.sh
is megvolt.)Ha minden a helyén van, akkor ezzel zárok:
grub-install --target=i386-pc --skip-fs-probe --efi-directory=/ --boot-directory=/boot --root-directory=/ /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
update-initramfs -c -k all
Boot után azonban ez az eredmény:
Begin: Running /scripts/local-block ... cryptsetup (eldcr): error - script "/boot/getlukskey.sh" missing
És ez ismétlődik addig, amíg fel nem adja.
A
getlukskey.sh
-t próbáltam már több helyre is berakni (olyankor akeyscript
paramétert mind a két helyen átírtam), de az eredmény ugyanaz.Valamit vagy nagyon félre, vagy nagyon nem értek, mert ez nem akaródzik sikerülni...
Ötlet, hogy mit?
szvsz a /boot ilyenkor meg nincs felcsatolva, (a grub specin tolti be a kernel-t, meg initrd-t),
tippre az kene hogy a getlukskey.sh is keruljon be az initram cuccba, itt egy tutorial:
https://serverfault.com/questions/152959/configure-initramfs-tools-to-a…
copy_exec /boot/getlukskey.sh /bin
es keyscript=/bin/getlukskey.sh
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Köszi, ezzel is előrébb jutottam.
A következőket változtattam a kapott hibajelentések alapján:
A kiírt kulcsot lecsökkentettem egy blokkra:
dd if=/dev/urandom of=/dev/sda4 bs=1 count=512
echo 'YES' | cryptsetup -v -c aes-xts-plain64 -s 512 -h sha256 -i 2000 --keyfile-size=512 luksFormat /dev/sda3 /dev/sda4
cryptsetup -c aes-xts-plain64 -d /dev/sda4 -s 512 -i 2000 --keyfile-size=512 open --type=plain /dev/sda3 eldcr
Az
/etc/fstab
így néz ki:/dev/disk/by-partuuid/<a /dev/sda2 partuuidja> /boot ext4 errors=remount-ro 0 1
/dev/mapper/eldcr / ext4 errors=remount-ro 0 1
/dev/disk/by-partuuid/<a /dev/sda5 partuuidja> none swap sw 0 0
A
/etc/crypttab
így:eldcr /dev/disk/by-partuuid/<a /dev/sda3 partuuidja> /dev/disk/by-partuuid/<a /dev/sda4 partuuidja> luks,cipher=aes-xts-plain64,size=512,hash=sha256,keyfile-size=512,time=2000,keyscript=getlukskey.sh
Az
/etc/default/grub
-ban egy sor változott:GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=/dev/disk/by-partuuid/<a /dev/sda3 partuuidja>:eldcr root=/dev/mapper/eldcr cryptopts=target=eldcr,source=/dev/disk/by-partuuid/<a /dev/sda3 partuuidja>,keyscript=getlukskey.sh crypto=sha256:aes-xts-plain64:512:0:0
A
getlukskey.sh
forráskönyvtára a/lib/cryptsetup/scripts/
lett (ott keresi és reklamál is, hogy invalid, ha nincs ott).A tartalma pedig ez:
#!/bin/sh
dd if=/dev/disk/by-partuuid/<a /dev/sda4 partuuidja> bs=1 count=512 2>/dev/null
A
/etc/initramfs-tools/conf.d/cryptroot
tartalma:CRYPTROOT=target=eldcr,source=/dev/disk/by-partuuid/<a /dev/sda3 partuuidja>
Létrejött a
/usr/share/initramfs-tools/hooks/glkcopy
ezzel a tartalommal:#!/bin/sh -e
PREREQS=""
case $1 in
prereqs) echo "${PREREQS}"; exit 0;;
esac
. /usr/share/initramfs-tools/hook-functions
copy_exec /lib/cryptsetup/scripts/getlukskey.sh /bin
copy_exec /sbin/cryptsetup
copy_exec /sbin/dmsetup
copy_exec /lib/cryptsetup/askpass
A
/etc/initramfs-tools/modules
-be felvettem a következő modulokat:chainiv, cryptomgr, krng, cbc, ecb, ctr, aes, sha256, xts, dm-mod, dm-crypt
Az egész folyamat végén pluszba van egy
update-initramfs -u -k all
parancs. (A menetközben lévőupdate-initramfs -c -k all
nem vette bele a scriptet, nem tudom miért.)Az eredmény ezután az, hogy bootkor:
cryptsetup (eldcr): unknown fstype, bad password or options?
Még kipróbáltam azt, hogy kihajítottam a boot opciókból és a
crypttab
-ból akeyscript
-et és boot opcióknál a helyérecryptkey=/dev/disk/by-partuuid/<a /dev/sda4 partuuidja>:0:512
került.Ennek eredményeként már az initramfs generálásakor bereklamál, hogy
WARNING: root target eldcr uses a key file, skipped
.Boot után pedig azt kéri, hogy unlockoljam a lemezt, azaz adjak passwordot.
Van valami ötlet, a kettő közül bármelyikre, hogy mi nem stimmel?
up