Iddeċifrar ta' kontenitur LUKS fil-ħin tal-boot tas-sistema

Il-lejl u nhar it-tajjeb lil kulħadd! Din il-kariga se tkun utli għal dawk li jużaw l-encryption tad-data LUKS u jridu jiddeċifraw diski taħt Linux (Debian, Ubuntu) fuq stadju tad-deċifrar tal-partizzjoni tal-għeruq. U ma stajtx insib informazzjoni bħal din fuq l-Internet.

Pjuttost reċentement, b'żieda fin-numru ta 'diski fl-ixkafef, iltqajt mal-problema ta' decrypting diski bl-użu tal-metodu aktar minn magħruf permezz /etc/crypttab. Personalment, nenfasizza ftit problemi bl-użu ta 'dan il-metodu, jiġifieri li l-fajl jinqara biss wara t-tagħbija (immuntar) il-partizzjoni tal-għeruq, li jaffettwa b'mod negattiv l-importazzjonijiet ZFS, b'mod partikolari jekk inġabru minn diviżorji fuq apparat *_crypt, jew rejds mdadm miġbura wkoll minn diviżorji. Ilkoll nafu li tista’ tuża parted fuq kontenituri LUKS, hux? U wkoll il-problema tal-bidu bikri ta 'servizzi oħra, meta għad m'hemmx arrays, u użu Diġà għandi bżonn xi ħaġa (qed naħdem ma 'clustered Proxmox VE 5.x u ZFS fuq iSCSI).

Ftit dwar ZFSoverISCSIiSCSI jaħdem għalija permezz tal-LIO, u fil-fatt, meta l-mira iscsi tibda u ma tarax l-apparati ZVOL, sempliċement tneħħihom mill-konfigurazzjoni, li jipprevjeni s-sistemi mistiedna milli jibdew. Għalhekk, jew tirrestawra l-fajl json backup, jew manwalment iżżid apparati bl-identifikaturi ta 'kull VM, li hija sempliċement terribbli meta jkun hemm għexieren ta' magni bħal dawn u kull konfigurazzjoni għandha aktar minn disk 1.

U t-tieni mistoqsija li se nikkunsidra hija kif decrypt (dan huwa l-punt ewlieni tal-artikolu). U nitkellmu dwar dan hawn taħt, mur fil-qatgħa!

Ħafna drabi fuq l-Internet jużaw fajl ewlieni (li ġie miżjud awtomatikament mal-islott bil-kmand - cryptsetup luksAddKey), jew f'eċċezzjonijiet rari (hemm ftit li xejn informazzjoni fuq l-Internet bil-lingwa Russa) - l-iskrittura decrypt_derived, li tinsab f' /lib/cryptsetup/script/ (naturalment, hemm modi oħra, imma jien użajt dawn it-tnejn, li ffurmaw il-bażi tal-artiklu). Jiena stinkajt ukoll għal attivazzjoni awtonoma sħiħa wara reboots, mingħajr ebda kmandi addizzjonali fil-console, sabiex kollox "titlaq" għalija minnufih. Għalhekk, għaliex tistenna? —

Nibdew!

Aħna nassumu sistema, pereżempju Debian, installata fuq il-partizzjoni kripto sda3_crypt u tużżana diski lesti biex jikkriptaw u joħolqu dak kollu li tixtieq qalbek. Għandna frażi ewlenija (passphrase) biex nisfruttaw sda3_crypt u huwa minn din it-taqsima li se nneħħu l-"hash" tal-password fuq sistema li taħdem (decrypted) u nżiduha ma 'diski oħra. Kollox huwa elementari, fil-console noħorġu:

/lib/cryptsetup/scripts/decrypt_derived sda3_crypt | cryptsetup luksFormat /dev/sdX

fejn X hija d-diski, il-ħitan, eċċ tagħna.

Wara li tikkodifika d-diski b'hash mill-frażi ewlenija tagħna, trid issir taf l-UUID jew l-ID - skont min hu użat għal xiex. Nieħdu data minn /dev/disk/by-uuid u by-id, rispettivament.

L-istadju li jmiss qed nipprepara fajls u mini-skripts għall-funzjonijiet li għandna bżonn naħdmu, ejja nipproċedu:

cp -p /usr/share/initramfs-tools/hooks/cryptroot /etc/initramfs-tools/hooks/
cp -p /usr/share/initramfs-tools/scripts/local-top/cryptroot /etc/initramfs-tools/scripts/local-top/

aktar

touch /etc/initramfs-tools/hooks/decrypt && chmod +x /etc/initramfs-tools/hooks/decrypt

Kontenut ta' ../decrypt

#!/bin/sh

cp -p /lib/cryptsetup/scripts/decrypt_derived "$DESTDIR/bin/decrypt_derived"

aktar

touch /etc/initramfs-tools/hooks/partcopy && chmod +x /etc/initramfs-tools/hooks/partcopy

Werrej ../partcopy

#!/bin/sh

cp -p /sbin/partprobe "$DESTDIR/bin/partprobe"
cp -p /lib/x86_64-linux-gnu/libparted.so.2 "$DESTDIR/lib/x86_64-linux-gnu/libparted.so.2"
cp -p /lib/x86_64-linux-gnu/libreadline.so.7 "$DESTDIR/lib/x86_64-linux-gnu/libreadline.so.7"

daqsxejn aktar

touch /etc/initramfs-tools/scripts/local-bottom/partprobe && chmod +x /etc/initramfs-tools/scripts/local-bottom/partprobe

Werrej ../partprobe

#!/bin/sh

$DESTDIR/bin/partprobe

u fl-aħħar nett, qabel update-initramfs, trid teditja l-fajl /etc/initramfs-tools/scripts/local-top/cryptroot, li tibda mil-linja ~ 360, biċċa kodiċi hawn taħt

Original


                # decrease $count by 1, apparently last try was successful.
                count=$(( $count - 1 ))
                
                message "cryptsetup ($crypttarget): set up successfully"
                break

u ġibha għal din il-forma

Editjat


                # decrease $count by 1, apparently last try was successful.
                count=$(( $count - 1 ))
                

                /bin/decrypt_derived $crypttarget | cryptsetup luksOpen /dev/disk/by-uuid/ *CRYPT_MAP*
                /bin/decrypt_derived $crypttarget | cryptsetup luksOpen /dev/disk/by-id/ *CRYPT_MAP*

                message "cryptsetup ($crypttarget): set up successfully"
                break

Innota li jew UUID jew ID jistgħu jintużaw hawn. Il-ħaġa prinċipali hija li s-sewwieqa meħtieġa għall-apparati HDD/SSD huma miżjuda ma '/etc/initramfs-tools/modules. Tista 'ssir taf liema sewwieq jintuża mal-kmand udevadm info -a -n /dev/sdX | egrep 'iħares|XUFIER'.

Issa li aħna lesti u l-fajls kollha huma f'posthom, aħna run aġġornament-initramfs -u -k kollha -v, fil-qtugħ tas-siġar m'għandux ikun żbalji fl-eżekuzzjoni tal-iskripts tagħna. Aħna reboot, daħħal il-frażi ewlenija u stenna ftit, skond in-numru ta 'diski. Sussegwentement, is-sistema se tibda u fl-istadju finali ta 'l-istartjar, jiġifieri wara li "immuntar" il-partizzjoni ta' l-għeruq, il-kmand tal-partprobe se jiġi eżegwit - se jsib u jtella 'diviżorji kollha maħluqa fuq apparat LUKS u kwalunkwe arrays, kemm jekk ZFS jew mdadm, se jiġu mmuntati mingħajr problemi! U dan kollu qabel it-tagħbija is-servizzi ewlenin li jeħtieġu dawn id-diski/arrays.

aġġornament1: Kif innutajt AEP, dan il-metodu jaħdem biss għal LUKS1.

Sors: www.habr.com

Żid kumment