Pag-decrypt sa usa ka sudlanan sa LUKS sa oras sa pag-boot sa system

Maayong adlaw ug gabii sa tanan! Kini nga post mahimong mapuslanon sa mga naggamit sa LUKS data encryption ug gusto nga mag-decrypt sa mga disk ubos sa Linux (Debian, Ubuntu) sa yugto sa decryption sa root partition. Ug dili nako makit-an ang ingon nga kasayuran sa Internet.

Bag-o lang, uban sa pagdugang sa gidaghanon sa mga disk sa mga estante, akong nasugatan ang problema sa pag-decrypting sa mga disk gamit ang labaw pa sa iladong paagi pinaagi sa /etc/crypttab. Sa personal, gipasiugda nako ang pipila ka mga problema sa paggamit niini nga pamaagi, nga mao ang pagbasa sa file lamang human sa loading (mounting) sa gamut partition, nga negatibong makaapekto sa mga import sa ZFS, ilabi na kung kini nakolekta gikan sa mga partisyon sa usa ka *_crypt device, o mga mdadm raid nga nakolekta usab gikan sa mga partisyon. Nahibal-an namon tanan nga mahimo nimong gamiton ang gibahin sa mga sudlanan sa LUKS, di ba? Ug usab ang problema sa sayo nga pagsugod sa ubang mga serbisyo, kung wala pa ang mga arrays, ug paggamit Nagkinahanglan na ko og usa ka butang (nagtrabaho ko sa clustered Proxmox VE 5.x ug ZFS sa iSCSI).

Usa ka gamay bahin sa ZFSoverISCSIAng iSCSI nagtrabaho alang kanako pinaagi sa LIO, ug sa tinuud, kung ang target sa iscsi magsugod ug dili makita ang mga aparato sa ZVOL, gitangtang ra kini gikan sa pagsumpo, nga nagpugong sa mga sistema sa bisita gikan sa pag-boot. Busa, ibalik ang backup nga json file, o mano-mano nga pagdugang sa mga aparato nga adunay mga identifier sa matag VM, nga makalilisang kung adunay daghang mga makina ug ang matag configuration adunay labaw pa sa 1 disk.

Ug ang ikaduha nga pangutana nga akong hisgotan kung giunsa ang pag-decrypt (kini ang panguna nga punto sa artikulo). Ug atong hisgutan kini sa ubos, adto sa cut!

Kasagaran sa Internet gigamit nila ang usa ka yawe nga file (nga awtomatiko nga gidugang sa slot nga adunay mando - cryptsetup luksAddKey), o sa talagsaon nga mga eksepsiyon (adunay gamay kaayo nga kasayuran sa Internet nga sinultian nga Ruso) - ang decrypt_derived script, nga nahimutang sa /lib/cryptsetup/script/ (siyempre, adunay ubang mga paagi, apan akong gigamit kining duha, nga nahimong basehan sa artikulo). Naningkamot usab ako alang sa bug-os nga autonomous nga pagpaaktibo pagkahuman sa pag-reboot, nga wala’y dugang nga mga mando sa console, aron ang tanan "magkuha" dayon alang kanako. Busa, nganong maghulat? β€”

Magsugod na ta!

Nagtuo kami nga usa ka sistema, pananglitan Debian, gi-install sa sda3_crypt crypto partition ug usa ka dosena nga mga disk nga andam sa pag-encrypt ug paghimo sa bisan unsang gusto sa imong kasingkasing. Adunay kami usa ka yawe nga hugpong sa mga pulong (passphrase) aron maablihan ang sda3_crypt ug gikan sa kini nga seksyon nga among tangtangon ang "hash" sa password sa usa ka sistema nga nagdagan (na-decrypted) ug idugang kini sa ubang mga disk. Ang tanan elementarya, sa console nga among gipatuman:

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

diin ang X mao ang among mga disk, partisyon, ug uban pa.

Pagkahuman sa pag-encrypt sa mga disk gamit ang usa ka hash gikan sa among yawe nga hugpong sa mga pulong, kinahanglan nimo nga mahibal-an ang UUID o ID - depende kung kinsa ang naanad sa unsa. Nagkuha kami og data gikan sa / dev / disk / by-uuid ug by-id, matag usa.

Ang sunod nga yugto mao ang pag-andam sa mga file ug mini-scripts alang sa mga gimbuhaton nga kinahanglan natong buhaton, magpadayon kita:

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/

dugang pa

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

Mga sulod sa ../decrypt

#!/bin/sh

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

dugang pa

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

Mga sulod ../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"

gamay pa

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

Mga sulod ../partprobe

#!/bin/sh

$DESTDIR/bin/partprobe

ug sa katapusan, sa dili pa i-update-initramfs, kinahanglan nimo nga i-edit ang file /etc/initramfs-tools/scripts/local-top/cryptroot, sugod sa linya ~360, usa ka piraso sa code sa ubos

Orihinal


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

ug dad-a kini niini nga porma

Gi-edit


                # 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

Timan-i nga ang UUID o ID mahimong gamiton dinhi. Ang panguna nga butang mao nga ang kinahanglan nga mga drayber alang sa mga aparato sa HDD / SSD gidugang sa /etc/initramfs-tools/modules. Mahimo nimong mahibal-an kung unsang drayber ang gigamit sa mando udevadm info -a -n /dev/sdX | egrep 'nangita|DRIVER'.

Karon nga nahuman na kami ug ang tanan nga mga file naa sa lugar, nagdagan kami update-initramfs -u -k tanan -v, sa logging kinahanglan dili mga sayop sa pagpatuman sa atong mga script. Nag-reboot kami, isulod ang yawe nga hugpong sa mga pulong ug maghulat gamay, depende sa gidaghanon sa mga disk. Sunod, magsugod ang sistema ug sa katapusan nga yugto sa pagsugod, nga pagkahuman sa "pag-mount" sa partition sa ugat, ipatuman ang partprobe nga mando - makit-an ug kuhaon ang tanan nga gihimo nga mga partisyon sa mga aparato sa LUKS ug bisan unsang mga arrays, kini ZFS o mdadm, pagatigumon nga walay mga problema! Ug kining tanan sa wala pa magkarga ang mga nag-unang serbisyo nga nanginahanglan niini nga mga disk / array.

update1: Unsaon nakamatikod AEP, kini nga pamaagi magamit lamang sa LUKS1.

Source: www.habr.com

Idugang sa usa ka comment