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.
- 1586 megtekintés
Hozzászólások
Köszi, de én a rendszerpartíciót szeretném titkosítani.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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 a cryptsetup
-hoz azt használom fel kulcsfájl gyanánt, aztán formázás és csatolás.
Ezután jön a debootstrap
majd a chroot
, 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 a keyscript
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?
- A hozzászóláshoz be kell jelentkezni
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!
- A hozzászóláshoz be kell jelentkezni
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 a keyscript
-et és boot opcióknál a helyére cryptkey=/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?
- A hozzászóláshoz be kell jelentkezni
up
- A hozzászóláshoz be kell jelentkezni