LUKS-konteineri dekrĂŒpteerimine sĂŒsteemi kĂ€ivitamise ajal

Tere kĂ”igile, olgu pĂ€ev vĂ”i öö! See postitus on kasulik neile, kes kasutavad LUKS-andmete krĂŒpteerimist ja soovivad Linuxis (Debian, Ubuntu) kettasid dekrĂŒpteerida root-partitsiooni dekrĂŒpteerimise etapis. Sellist teavet internetist ei leidnud.

Hiljuti, seoses kettade arvu suurenemisega riiulitel, sattusin probleemile, et dekodeerida kettaid tuntud meetodi kaudu /etc/crypttab. Isiklikult toin vĂ€lja mitu probleemi selle meetodi kasutamisel, nimelt see, et faili loetakse ainult pĂ€rast root-partitsiooni laadimist, mis mĂ”jutab negatiivselt ZFS-i importimist, eriti kui need on koostatud *_crypt seadmetelt vĂ”i mdadm RAID-idelt, mis on samuti koostatud partitsioonidelt. Me kĂ”ik teame, et LUKS-konteinerite puhul saab kasutada parted'i? Ja samuti on probleem varase kĂ€ivitamisega teiste teenuste puhul, kui massiive ei ole veel, aga kasutama kui juba on midagi vajalik (töötan klastritud Proxmox VE 5.x ja ZFS ĂŒle iSCSI).

Veidi ZFS over iSCSI-stiSCSI töötab mul lĂ€bi LIO ja kui iscsi-k_target kĂ€ivitub ning ei nĂ€e ZVOL seadmeid, siis eemaldab ta need lihtsalt konfiguratsioonist, mis ei vĂ”imalda kĂŒlalissĂŒsteemidel kĂ€ivituda. Sellest tulenevalt on kas json-faili varundamine vĂ”i seadmete kĂ€sitsi lisamine iga VM-i identifikaatoritega, mis on lihtsalt kohutav, kui selliseid masinaid on kĂŒmneid ja iga konfiguratsioonis rohkem kui 1 ketas.

Ja teine kĂŒsimus, mida kĂ€sitlen, on see, millega dekrĂŒpteerida (see on artikli vĂ”tme punkt). Ja sellest rÀÀgime allpool, tulge lugema!

Sageli kasutatakse internetis vĂ”tme faili (loomulikult eelnevalt antud slotti kĂ€suga — cryptsetup luksAddKey), vĂ”i harvadel juhtudel (venekeelses internetis on teave vĂ€ga piiratud) — skripti decrypt_derived, mis asub /lib/cryptsetup/script/ (loomulikult on veel meetodeid, kuid ma kasutasin just neid kahte, mis on artikli aluseks). Samuti sihiksin tĂ€ielikku autonoomset kĂ€ivitamist pĂ€rast taaskĂ€ivitusi, ilma et peaksin terminalis tĂ€iendavalt kĂ€ske sisestama, et kĂ”ik minu jaoks kohe „töötaks”. Nii et, miks oodata? —

Alustame!

Oletame, et meil on sĂŒsteem, nĂ€iteks Debian, paigaldatud krĂŒpteeritud osale sda3_crypt ja tosin ketast, mis on valmis krĂŒpteerimiseks ja mille kohta on kĂ”ik, mida sĂŒdame soovib. Meil on vĂ”tme fraas (passphrase) sda3_crypti avamiseks ja just sellest osast me vĂ”tame töötava (dekrĂŒpteeritud) sĂŒsteemi pealt paroolilt „hashi” ja lisame selle teistele ketastele. KĂ”ik on elementaarne, sisestame konsoolis:

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

kus X on meie kettad, osad jne.

PĂ€rast ketaste krĂŒpteerimist meie vĂ”tme-fraasi „heshiga” on vajalik teada UUID-d vĂ”i ID-d — sĂ”ltuvalt sellest, kes ja millega harjunud on. Saame andmed aadressilt /dev/disk/by-uuid ja by-id vastavalt.

JÀrgmiseks etapiks on failide ja mini-skriptide ettevalmistamine, et meie vajalikud funktsioonid töötaksid, alustame:

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/

edasi

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

Sisu ..decrypt

#!/bin/sh

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

edasi

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

Sisu ..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"

veel natuke

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

Sisu ..partprobe

#!/bin/sh

$DESTDIR/bin/partprobe

ja viimane, enne update-initramfs-i, peame redigeerima faili /etc/initramfs-tools/scripts/local-top/cryptroot, alustades reast ~360, allpool olev koodinÀide

Originaal


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

ja viima sellisesse vormi

Redigeeritud


                # 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

Pange tĂ€hele, et siin saab kasutada nii UUID-d kui ka ID-d. Oluline on, et vajalikud draiverid HDD/SSD seadmetele oleksid lisatud /etc/initramfs-tools/modules. Kasutatava draiveri selgitamiseks saab kasutada kĂ€sku udevadm info -a -n /dev/sdX | egrep ‘looking|DRIVER’.

NĂŒĂŒd, kui oleme lĂ”petanud ja kĂ”ik failid on kohal, kĂ€ivitame update-initramfs -u -k all -v, logimises ei tohi olla meie skriptide tĂ€itmise vigu. TaaskĂ€ivitame, sisestame vĂ”tme-fraasi ja ootame natuke, sĂ”ltuvalt ketaste arvust. Edasi kĂ€ivitub sĂŒsteem ja kĂ€ivitamise lĂ”ppstaadiumis, nimelt pĂ€rast root-osade „mountimist”, tĂ€idetakse kĂ€sk partprobe — see leiab ja ĂŒhendab kĂ”ik LUKS seadmetes loodud osad ning kĂ”ik massiivid, olgu need ZFS vĂ”i mdadm, koosnevad ilma probleemideta! Ja kĂ”ik see enne pĂ”hiteenuste ja -teenuste laadimist, mis vajavad neid kettaid/massiive. update1

: KuidasAEP , et tihti ei kasutata nende lihtsate toimingute tÀitmiseks kÔige optimaalsemaid lahendusi: alates , see meetod töötab ainult LUKS1 jaoks.Windows, PowerShell ja pikad teed

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster