Dechifre yon veso LUKS nan moman demaraj sistèm lan

Bon lajounen kou lannwit tout moun! Pòs sa a pral itil pou moun ki sèvi ak chifreman done LUKS epi ki vle dechifre disk anba Linux (Debian, Ubuntu) sou etap nan dechifre patisyon rasin lan. Apre sa, mwen pa t 'kapab jwenn enfòmasyon sa yo sou entènèt la.

Plis dènyèman, ak ogmantasyon nan kantite disk nan etajè yo, mwen te kouri nan pwoblèm nan nan dechifre disk lè l sèvi avèk metòd la plis pase byen li te ye nan /etc/crypttab. Pèsonèlman, mwen mete aksan sou kèk pwoblèm ak lè l sèvi avèk metòd sa a, sètadi ke yo te li dosye a sèlman apre yo fin chaje (monte) patisyon rasin lan, ki afekte enpòtasyon ZFS yon fason negatif, an patikilye si yo te bati nan patisyon sou aparèy *_crypt la, oswa atak mdadm bati nan patisyon tou. Nou tout konnen ke ou ka itilize separe sou resipyan LUKS, pa vre? Epi tou pwoblèm nan kòmansman an byen bonè nan lòt sèvis, lè pa gen okenn etalaj ankò, men itilize Mwen deja bezwen yon bagay (mwen travay ak clustered Proxmox VE 5.x ak ZFS sou iSCSI).

Yon ti kras sou ZFSoverISCSIiSCSI travay pou mwen atravè LIO, e an reyalite, lè sib iscsi a kòmanse epi li pa wè aparèy ZVOL, li tou senpleman retire yo nan konfigirasyon an, ki anpeche sistèm envite yo demaraj. Pakonsekan, swa retabli yon backup dosye json, oswa manyèlman ajoute aparèy ak idantifyan pou chak VM, ki se tou senpleman terib lè gen plizyè douzèn machin sa yo ak chak konfigirasyon gen plis pase 1 disk.

Ak dezyèm kesyon an ke mwen pral konsidere se ki jan yo dechifre (sa a se pwen an kle nan atik la). Epi nou pral pale sou sa a anba a, ale anba koupe a!

Pi souvan, sou entènèt la, yo itilize yon dosye kle (yo te ajoute pwòp tèt ou nan plas la anvan sa a pa lòd la - cryptsetup luksAddKey), oswa nan eksepsyon ki ra (sou entènèt la Ris-lang gen anpil enfòmasyon) - script la decrypt_derived. ki sitiye nan /lib/cryptsetup/script/ (nan kou, gen lòt fason, men mwen te itilize de sa yo, ki te fòme baz atik la). Mwen te fè efò tou pou enklizyon otonòm konplè apre rdemare, san okenn kòmandman adisyonèl nan konsole a, pou ke tout bagay ta "vole moute" pou mwen nan yon fwa. Se poutèt sa, poukisa tann? —

An n kòmanse!

Ann sipoze yon sistèm, tankou Debian, enstale sou yon patisyon kriptografik sda3_crypt ak yon douzèn disk ki pare yo dwe chiffres ak kreye nan kontni kè ou. Nou gen yon pasfraz (passphrase) pou déblotché sda3_crypt, epi li se nan patisyon sa a ke nou pral retire "hash" nan modpas la sou sistèm nan kouri (decrypted) epi ajoute li nan rès la nan disk yo. Tout bagay se elemantè, nan konsole a nou egzekite:

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

kote X se disk nou yo, patisyon, elatriye.

Apre chifreman disk yo ak yon "hash" soti nan pasfraz nou an, ou bezwen chèche konnen UUID la oswa ID - tou depann de ki moun ki itilize ak ki sa. Nou pran done nan /dev/disk/by-uuid ak by-id respektivman.

Pwochen etap la se prepare fichye ak mini-scripts pou fonksyon nou bezwen travay, ann kontinye:

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/

далее

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

Sa ki nan ../decrypt

#!/bin/sh

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

далее

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

Sa ki nan ../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"

yon ti jan plis

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

Kontni ../partprobe

#!/bin/sh

$DESTDIR/bin/partprobe

epi dènye, anvan update-initramfs, ou bezwen edite /etc/initramfs-tools/scripts/local-top/cryptroot fichye a, kòmanse soti nan liy ~ 360, snippet kòd anba a.

Original


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

epi pote li nan fòm sa a

Edited


                # 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

Remake byen ke swa UUID oswa ID ka itilize isit la. Bagay pwensipal lan se ke chofè ki nesesè pou aparèy HDD / SSD yo ajoute nan /etc/initramfs-tools/modules. Ou ka chèche konnen ki chofè yo te itilize ak kòmandman an udevadm info -a -n /dev/sdX | egrep 'kap|CHOFÈ'.

Kounye a ke nou fini ak tout dosye yo an plas, kouri aktyalizasyon-initramfs -u -k tout -v, nan antre pa dwe erè ekzekisyon nan scripts nou yo. Nou rdemare, antre pasfraz la epi tann yon ti jan, tou depann de kantite disk. Apre sa, sistèm lan pral kòmanse ak nan etap final lan nan lansman, sètadi apre "monte" patisyon rasin lan, yo pral egzekite lòd la partprobe - li pral jwenn ak ranmase tout patisyon ki te kreye sou aparèy LUKS ak nenpòt etalaj, kit li ZFS oswa. mdadm, yo pral reyini san pwoblèm! Ak tout bagay sa yo anvan chaje sèvis debaz ak sèvis ki bezwen disk/etalaj sa yo.

aktyalizasyon1: Kòman remake AEP, metòd sa a ap travay sèlman pou LUKS1.

Sous: www.habr.com

Add nouvo kòmantè