Ditën dhe natën e mirë të gjithëve! Ky postim do të jetë i dobishëm për ata që përdorin enkriptimin e të dhënave LUKS dhe duan të deshifrojnë disqet nën Linux (Debian, Ubuntu) në fazat e deshifrimit të ndarjes rrënjë. Dhe unë nuk mund të gjeja një informacion të tillë në internet.
Kohët e fundit, me rritjen e numrit të disqeve në rafte, u përballa me problemin e deshifrimit të disqeve duke përdorur metodën më shumë se të njohur përmes /etc/crypttab. Personalisht, unë theksoj disa probleme me përdorimin e kësaj metode, domethënë që skedari po lexohet vetëm pas ngarkimit (montimit) të ndarjes rrënjë, e cila ndikon negativisht në importet e ZFS, veçanërisht nëse ato janë ndërtuar nga ndarje në një pajisje *_crypt, ose bastisje mdadm të ndërtuara gjithashtu nga ndarje. Të gjithë e dimë se mund të përdorni të ndarë në kontejnerë LUKS, apo jo? Dhe gjithashtu problemi i fillimit të hershëm të shërbimeve të tjera, kur nuk ka ende vargje, por për t'u përdorur Unë tashmë kam nevojë për diçka (punoj me Proxmox VE 5.x të grumbulluar dhe ZFS mbi iSCSI).
Pak për ZFSoverISCSIiSCSI funksionon për mua përmes LIO, dhe në fakt, kur objektivi iscsi fillon dhe nuk i sheh pajisjet ZVOL, ai thjesht i heq ato nga konfigurimi, gjë që parandalon nisjen e sistemeve të vizitorëve. Prandaj, ose rivendosja e një kopje rezervë të skedarit json, ose shtimi manual i pajisjeve me identifikues për çdo VM, gjë që është thjesht e tmerrshme kur ka dhjetëra makina të tilla dhe çdo konfigurim ka më shumë se 1 disk.
Dhe pyetja e dytë që do të shqyrtoj është se si të deshifrohet (kjo është pika kryesore e artikullit). Dhe ne do të flasim për këtë më poshtë, shkoni nën prerje!
Më shpesh, në internet, përdoret një skedar çelësi (i vetë-shtuar në slot para kësaj nga komanda - cryptsetup luksAddKey), ose në përjashtime të rralla (në internetin në gjuhën ruse ka shumë pak informacion) - skripti decrypt_derived ndodhet në /lib/cryptsetup/script/ (natyrisht, ka mënyra të tjera, por unë përdora këto të dyja, të cilat formuan bazën e artikullit). Unë gjithashtu u përpoqa për përfshirje të plotë autonome pas rindezjes, pa ndonjë komandë shtesë në tastierë, në mënyrë që gjithçka të "fluturonte lart" për mua menjëherë. Prandaj, pse të presim? -
Le të fillojmë!
Le të supozojmë një sistem, si Debian, të instaluar në një ndarje kripto sda3_crypt dhe një duzinë disqe gati për t'u koduar dhe krijuar sipas përmbajtjes suaj. Ne kemi një frazë kalimi (frazë kalimi) për të zhbllokuar sda3_crypt, dhe pikërisht nga kjo ndarje do të heqim "hash"-in nga fjalëkalimi në sistemin që funksionon (i deshifruar) dhe do ta shtojmë atë në pjesën tjetër të disqeve. Gjithçka është elementare, në tastierë ne ekzekutojmë:
/lib/cryptsetup/scripts/decrypt_derived sda3_crypt | cryptsetup luksFormat /dev/sdX
ku X janë disqet tona, ndarjet, etj.
Pas kriptimit të disqeve me një "hash" nga fraza jonë e kalimit, duhet të zbuloni UUID ose ID - në varësi të asaj se kush është mësuar me çfarë dhe çfarë. Ne marrim të dhëna përkatësisht nga /dev/disk/by-uuid dhe by-id.
Hapi tjetër është përgatitja e skedarëve dhe mini-skripteve për funksionet që na duhen, le të vazhdojmë:
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
Përmbajtja e ../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
Përmbajtja e ../pjesëkopje
#!/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"
pak me shume
touch /etc/initramfs-tools/scripts/local-bottom/partprobe && chmod +x /etc/initramfs-tools/scripts/local-bottom/partprobe
Përmbajtja ../partprobe
#!/bin/sh
$DESTDIR/bin/partprobe
dhe së fundi, përpara përditësimit-initramfs, ju duhet të redaktoni skedarin /etc/initramfs-tools/scripts/local-top/cryptroot, duke filluar nga rreshti ~360, pjesa e kodit më poshtë
Origjinal
# decrease $count by 1, apparently last try was successful.
count=$(( $count - 1 ))
message "cryptsetup ($crypttarget): set up successfully"
break
dhe silleni në këtë formë
Redaktuar
# 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
Vini re se UUID ose ID mund të përdoren këtu. Gjëja kryesore është që drejtuesit e nevojshëm për pajisjet HDD / SSD të shtohen në /etc/initramfs-tools/module. Ju mund të zbuloni se cili drejtues është duke u përdorur me komandën udevadm info -a -n /dev/sdX | egrep 'duket|SHOFER'.
Tani që kemi mbaruar dhe të gjithë skedarët janë në vend, ekzekutoni përditësim-initramfs -u -k të gjitha -v, në prerje nuk duhet të jetë gabimet e ekzekutimit të skripteve tona. Rinisim, futim frazën e kalimit dhe presim pak, në varësi të numrit të disqeve. Më pas, sistemi do të fillojë dhe në fazën përfundimtare të nisjes, domethënë pas "montimit" të ndarjes rrënjësore, komanda partprobe do të ekzekutohet - do të gjejë dhe marr të gjitha ndarjet e krijuara në pajisjet LUKS dhe çdo grup, qoftë ZFS ose mdadm, do të montohet pa probleme! Dhe e gjithë kjo para ngarkimit shërbimet dhe shërbimet kryesore që kanë nevojë për këto disqe/vargje.
azhurnimi1: Si
Burimi: www.habr.com