Deşîfrekirina konteynirek LUKS di dema bootkirina pergalê de

Şev û roj ji her kesî re xweş! Ev post dê ji bo kesên ku şîfrekirina daneya LUKS bikar tînin û dixwazin dîskên di bin Linux (Debian, Ubuntu) de şîfre bikin dê bikêr be. qonaxên deşîfrekirina dabeşkirina root. Û min nikarîbû agahiyek wiha li ser Înternetê bibînim.

Di van demên dawî de, bi zêdebûna hejmara dîskên di refikan de, ez ketim pirsgirêka deşîfrekirina dîskan bi karanîna rêbaza naskirî ya bêtir bi navgîniya /etc/crypttab. Bi kesane, ez di karanîna vê rêbazê de çend pirsgirêkan ronî dikim, ango ku pel tê xwendin tenê piştî barkirina (çiyayê) dabeşkirina root, ku bandorek neyînî li îtxalata ZFS dike, nemaze heke ew ji dabeşên li ser amûrek *_crypt hatine çêkirin, an jî êrişên mdadm ên ku ji dabeşan hatine çêkirin jî hatine çêkirin. Em hemî dizanin ku hûn dikarin li ser konteynerên LUKS dabeşkirî bikar bînin, rast? Û her weha pirsgirêka destpêkirina zû ya karûbarên din, dema ku hêj rêzik tune ne, lê bikar bînin Jixwe ez tiştek hewce dikim (ez bi Proxmox VE 5.x û ZFS-ya komkirî li ser iSCSI re dixebitim).

Piçek li ser ZFSoverISCSIiSCSI bi navgîniya LIO-yê ji min re dixebite, û bi rastî, dema ku hedefa iscsi dest pê dike û amûrên ZVOL nabîne, ew bi tenê wan ji veavakirinê derdixe, ku rê li ber bootkirina pergalên mêvan digire. Ji ber vê yekê, an paşvekêşana pelê json-ê sererast bikin, an jî bi destan cîhazên bi nasnameyên ji bo her VM-ê zêde bikin, ku gava ku bi dehan makîneyên weha hebin û her mîhengek ji 1 dîskê zêdetir hebe, bi hêsanî tirsnak e.

Û pirsa duyemîn ku ez ê bifikirim ev e ku meriv çawa şîfre dike (ev xala sereke ya gotarê ye). Û em ê li jêr li ser vê yekê bipeyivin, di bin qutbûnê de biçin!

Pir caran, li ser Înternetê, pelek mifteyê tê bikar anîn (ji ber vê yekê bi fermanê li hêlînê tê zêdekirin - cryptsetup luksAddKey), an jî di îstîsnayên hindik de (li ser Înterneta bi zimanê rûsî agahdarî pir hindik heye) - skrîpta decrypt_derived li /lib/cryptsetup/script/ cih digire (bê guman, awayên din jî hene, lê min van her du, ku bingeha gotarê pêk anîn, bikar anîn). Di heman demê de min hewl da ku piştî ji nû ve destpêkirinê, bêyî fermanên zêde di konsolê de tevlêbûna xweseriya tam be, da ku her tişt ji bo min bi carekê re "bifire". Ji ber vê yekê, çima li bendê? —

Ka em dest pê bikin!

Werin em pergalek, mîna Debian, li ser dabeşek krîptoya sda3_crypt û bi dehan dîskên ku amade ne ku werin şîfrekirin û li gorî dilê we werin afirandin hatî saz kirin. Ji bo vekirina sda3_crypt şîfreyek me heye, û ji vê dabeşkirinê ye ku em ê "haş"ê ji şîfreya pergala xebitandinê (deşîfrekirî) derxînin û li dîskên mayî zêde bikin. Her tişt bingehîn e, di konsolê de em îcra dikin:

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

ku X dîskên me, dabeşkirin, hwd.

Piştî şîfrekirina dîskan bi "hash" ji şîfreya me, hûn hewce ne ku UUID an ID-ê bibînin - li gorî kê bi çi û çi tê bikar anîn. Em daneyan bi rêzê ji /dev/disk/by-uuid û by-id digirin.

Pêngava paşîn ji bo fonksiyonên ku em hewce ne pel û mînî-skrîptan amade dikin, em bidomînin:

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/

din

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

Naveroka ../deşîfrekirin

#!/bin/sh

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

din

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

Naveroka ../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"

hinekî din

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

Naverok ../partprobe

#!/bin/sh

$DESTDIR/bin/partprobe

û ya dawî, berî nûvekirin-initramfs, hûn hewce ne ku pelê /etc/initramfs-tools/scripts/local-top/cryptroot biguherînin, ji rêza ~ 360 dest pê bikin, pişka koda jêrîn.

Eslî


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

û bînin vê formê

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

Hişyar bikin ku UUID an ID dikare li vir were bikar anîn. Ya sereke ev e ku ajokarên pêwîst ji bo cîhazên HDD / SSD li /etc/initramfs-tools/module têne zêdekirin. Hûn dikarin fêr bibin ka kîjan ajoker bi fermanê tê bikar anîn udevadm info -a -n /dev/sdX | egrep 'digere|DRIVER'.

Niha ku em qediyan û hemû pel li cihê xwe ne, birevin update-initramfs -u -k hemû -v, di têketinê de divê nebe xeletiyên darvekirinê yên nivîsarên me. Em ji nû ve dest pê dikin, li gorî hejmara dîskan, şîfreya derbasbûnê têkevin û hinekî li bendê bin. Dûv re, pergal dê dest pê bike û di qonaxa paşîn a destpêkirinê de, ango piştî "çêkirina" dabeşkirina root, dê fermana partprobe were bicîh kirin - ew ê hemî dabeşên çêkirî yên li ser cîhazên LUKS û her rêzek, çi ZFS be, bibîne û hilde. mdadm, dê bê pirsgirêk werin civandin! Û ev hemû berî barkirinê karûbar û karûbarên bingehîn ên ku hewceyê van dîskên / rêzan in.

1: Çawa nedîtî AEP, ev rêbaz tenê ji bo LUKS1 dixebite.

Source: www.habr.com

Add a comment