Egun eta gau on guztioi! Argitalpen hau erabilgarria izango da LUKS datuen enkriptatzea erabiltzen dutenentzat eta Linux-en (Debian, Ubuntu) diskoak deszifratu nahi dituztenentzat. root partizioa deszifratzeko faseak. Eta Interneten ezin izan nuen horrelako informaziorik aurkitu.
Duela gutxi, apaletan disko-kopurua areagotuz, /etc/crypttab-en bidez diskoak deszifratzearen arazoarekin topo egin nuen. Pertsonalki, metodo hau erabiltzearen arazo batzuk nabarmentzen ditut, hots, fitxategia irakurtzen ari dela root partizioa kargatu (muntatu) ondoren bakarrik, eta horrek negatiboki eragiten die ZFS inportazioei, bereziki *_crypt gailuko partizioetatik eraikitakoak badira, edo partizioetatik eraikitako mdadm raid-ak ere. Denok dakigu parted erabil dezakezula LUKS ontzietan, ezta? Eta beste zerbitzu batzuk goiz abiatzearen arazoa ere, oraindik arrayrik ez dagoenean, baina erabiltzea Dagoeneko zerbait behar dut (iSCSIren bidez Proxmox VE 5.x eta ZFS multzokatuta lan egiten dut).
ZFSoverISCSIri buruz apur batiSCSI-k LIO bidez funtzionatzen du, eta, hain zuzen ere, iscsi helburua abiarazten denean eta ZVOL gailuak ikusten ez dituenean, konfiguraziotik kentzen ditu, sistema gonbidatuak abiatzea eragozten duena. Hori dela eta, json fitxategiaren babeskopia berrezartzea edo VM bakoitzeko identifikatzaileak dituzten gailuak eskuz gehitzea, hori besterik ez da izugarria halako dozenaka makina daudenean eta konfigurazio bakoitzak disko 1 baino gehiago duenean.
Eta kontuan hartuko dudan bigarren galdera da nola deszifratu (hau da artikuluaren funtsezko puntua). Eta honetaz hitz egingo dugu jarraian, joan ebaki azpian!
Gehienetan, Interneten, gako-fitxategi bat erabiltzen da (hau baino lehen zirrikituan auto-gehitua komandoak - cryptsetup luksAddKey), edo salbuespen bakanetan (errusierazko Interneten informazio gutxi dago) - decrypt_derived script-a. /lib/cryptsetup/script/-en kokatuta (noski, badira beste modu batzuk, baina bi hauek erabili ditut, artikuluaren oinarria izan direnak). Berrabiarazi ondoren erabateko inklusio autonomoa lortzeko ere ahalegindu nintzen, kontsolan komando gehigarririk gabe, dena aldi berean "hegan egin zedin". Horregatik, zergatik itxaron? β
Has gaitezen!
Demagun sistema bat, Debian bezalakoa, sda3_crypt kripto-partizio batean instalatuta eta dozena bat disko enkriptatzeko eta zure gogoaren arabera sortzeko prest. Sda3_crypt desblokeatzeko pasaesaldi bat (passphrase) dugu, eta partizio horretatik aterako dugu martxan (deszifratuta) sistemako pasahitzetik "hash"-a eta gainerako diskoetan gehituko dugu. Dena oinarrizkoa da, kontsolan exekutatzen dugu:
/lib/cryptsetup/scripts/decrypt_derived sda3_crypt | cryptsetup luksFormat /dev/sdX
non X gure diskoak, partizioak, etab.
Diskoak gure pasaesaldiko "hash" batekin enkriptatu ondoren, UUID edo IDa aurkitu behar duzu, zertara eta zertara erabiltzen denaren arabera. /dev/disk/by-uuid eta by-id-en datuak hartzen ditugu hurrenez hurren.
Hurrengo urratsa fitxategiak eta mini-scriptak prestatzea da lan egin behar ditugun funtzioetarako, jarrai dezagun:
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/
gehiago
touch /etc/initramfs-tools/hooks/decrypt && chmod +x /etc/initramfs-tools/hooks/decrypt
../desenkriptatutako edukia
#!/bin/sh
cp -p /lib/cryptsetup/scripts/decrypt_derived "$DESTDIR/bin/decrypt_derived"
gehiago
touch /etc/initramfs-tools/hooks/partcopy && chmod +x /etc/initramfs-tools/hooks/partcopy
../partcopy-ren edukia
#!/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"
pixka bat gehiago
touch /etc/initramfs-tools/scripts/local-bottom/partprobe && chmod +x /etc/initramfs-tools/scripts/local-bottom/partprobe
Edukia ../partprobe
#!/bin/sh
$DESTDIR/bin/partprobe
eta azkenik, update-initramfs aurretik, /etc/initramfs-tools/scripts/local-top/cryptroot fitxategia editatu behar duzu, ~360 lerrotik hasita, beheko kode zatia
Original
# decrease $count by 1, apparently last try was successful.
count=$(( $count - 1 ))
message "cryptsetup ($crypttarget): set up successfully"
break
eta ekarri forma honetara
Editatua
# 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
Kontuan izan UUID edo IDa erabil daitekeela hemen. Gauza nagusia da HDD / SSD gailuetarako beharrezko kontrolatzaileak /etc/initramfs-tools/modules gehitzen direla. Komandoarekin zein kontrolatzaile erabiltzen ari den jakin dezakezu udevadm info -a -n /dev/sdX | egrep 'begira|GIDARI'.
Orain amaitu eta fitxategi guztiak lekuan daudela, exekutatu update-initramfs -u -k all -v, erregistroan ez da izan behar gure scripten exekuzio akatsak. Berrabiarazi, pasaesaldia sartu eta pixka bat itxaron dugu, disko kopuruaren arabera. Ondoren, sistema abiaraziko da eta abiarazteko azken fasean, hots, root partizioa "muntatu" ondoren, partprobe komandoa exekutatuko da - LUKS gailuetan eta edozein arrayetan sortutako partizio guztiak aurkitu eta jasoko ditu, izan ZFS edo izan. mdadm, arazorik gabe muntatuko da! Eta hori guztia kargatu aurretik Disko/matrize hauek behar dituzten oinarrizko zerbitzuak eta zerbitzuak.
eguneratzea1: Nola
Iturria: www.habr.com