Labu dienu un nakti visiem! Å Ä« ziÅa bÅ«s noderÄ«ga tiem, kas izmanto LUKS datu Å”ifrÄÅ”anu un vÄlas atÅ”ifrÄt diskus operÄtÄjsistÄmÄ Linux (Debian, Ubuntu) saknes nodalÄ«juma atÅ”ifrÄÅ”anas posmi. Un es nevarÄju atrast Å”Ädu informÄciju internetÄ.
Pavisam nesen, palielinoties disku skaitam plauktos, es saskÄros ar disku atÅ”ifrÄÅ”anas problÄmu, izmantojot vairÄk nekÄ labi zinÄmo metodi, izmantojot /etc/crypttab. PersonÄ«gi es izceļu dažas problÄmas, kas saistÄ«tas ar Ŕīs metodes izmantoÅ”anu, proti, fails tiek lasÄ«ts tikai pÄc saknes nodalÄ«juma ielÄdes (montÄžas)., kas negatÄ«vi ietekmÄ ZFS importÄÅ”anu, jo Ä«paÅ”i, ja tie tika veidoti no starpsienÄm *_crypt ierÄ«cÄ vai mdadm reidi, kas veidoti arÄ« no nodalÄ«jumiem. MÄs visi zinÄm, ka LUKS konteineros var izmantot atdalÄ«tu, vai ne? Un arÄ« citu servisu agrÄ«nas palaiÅ”anas problÄma, kad vÄl nav masÄ«vu, bet izmantot Man jau kaut ko vajag (es strÄdÄju ar klasterizÄtu Proxmox VE 5.x un ZFS, izmantojot iSCSI).
Mazliet par ZFSoverISCSIiSCSI man darbojas caur LIO, un patiesÄ«bÄ, kad iscsi target startÄ un neredz ZVOL ierÄ«ces, tas vienkÄrÅ”i noÅem tÄs no konfigurÄcijas, kas neļauj viesu sistÄmÄm palaist. TÄdÄjÄdi vai nu jÄatjauno json faila dublÄjums, vai manuÄli jÄpievieno ierÄ«ces ar identifikatoriem katrai virtuÄlajai maŔīnai, kas ir vienkÄrÅ”i briesmÄ«gi, ja ir desmitiem Å”Ädu maŔīnu un katrÄ konfigurÄcijÄ ir vairÄk nekÄ 1 disks.
Un otrs jautÄjums, ko es apsvÄrÅ”u, ir tas, kÄ atÅ”ifrÄt (tas ir raksta galvenais punkts). Un mÄs par to runÄsim tÄlÄk, ejiet zemÄk!
VisbiežÄk internetÄ tiek izmantots atslÄgas fails (paÅ”i pievienots slotam pirms tam ar komandu - cryptsetup luksAddKey) vai retos izÅÄmumos (krievu valodÄ internetÄ ir ļoti maz informÄcijas) - decrypt_derived skripts. atrodas /lib/cryptsetup/script/ (protams, ir arÄ« citi veidi, bet es izmantoju Å”os divus, kas veidoja raksta pamatu). Es arÄ« tiecos pÄc pilnÄ«gas autonomas iekļauÅ”anas pÄc pÄrstartÄÅ”anas, bez papildu komandÄm konsolÄ, lai man viss uzreiz "uzlidotu". TÄpÄc kÄpÄc gaidÄ«t? ā
SÄksim!
PieÅemsim, ka sistÄma, piemÄram, Debian, ir instalÄta sda3_crypt kriptogrÄfijas nodalÄ«jumÄ un duci disku, kas ir gatavi Å”ifrÄÅ”anai un izveidoÅ”anai pÄc jÅ«su sirds patikas. Mums ir ieejas frÄze (paroles frÄze), lai atbloÄ·Ätu sda3_crypt, un tieÅ”i no Ŕī nodalÄ«juma mÄs noÅemsim ājaucÄjuā no paroles darboÅ”ajÄ (atÅ”ifrÄtajÄ) sistÄmÄ un pievienosim to pÄrÄjiem diskiem. Viss ir elementÄri, konsolÄ mÄs izpildÄm:
/lib/cryptsetup/scripts/decrypt_derived sda3_crypt | cryptsetup luksFormat /dev/sdX
kur X ir mūsu diski, nodalījumi utt.
PÄc disku Å”ifrÄÅ”anas ar "jauktu" no mÅ«su ieejas frÄzes, jums ir jÄnoskaidro UUID vai ID - atkarÄ«bÄ no tÄ, kurÅ” ir pieradis un ko. MÄs iegÅ«stam datus attiecÄ«gi no /dev/disk/by-uuid un by-id.
NÄkamais solis ir failu un mini skriptu sagatavoÅ”ana funkcijÄm, kas mums jÄstrÄdÄ, turpinÄsim:
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/
tÄlÄk
touch /etc/initramfs-tools/hooks/decrypt && chmod +x /etc/initramfs-tools/hooks/decrypt
../decrypt saturs
#!/bin/sh
cp -p /lib/cryptsetup/scripts/decrypt_derived "$DESTDIR/bin/decrypt_derived"
tÄlÄk
touch /etc/initramfs-tools/hooks/partcopy && chmod +x /etc/initramfs-tools/hooks/partcopy
../partcopy saturs
#!/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"
mazliet vairÄk
touch /etc/initramfs-tools/scripts/local-bottom/partprobe && chmod +x /etc/initramfs-tools/scripts/local-bottom/partprobe
Saturs ../partprobe
#!/bin/sh
$DESTDIR/bin/partprobe
un pÄdÄjais, pirms update-initramfs, jums ir jÄrediÄ£Ä /etc/initramfs-tools/scripts/local-top/cryptroot fails, sÄkot no rindiÅas ~360, koda fragments zemÄk
OriÄ£inÄls
# decrease $count by 1, apparently last try was successful.
count=$(( $count - 1 ))
message "cryptsetup ($crypttarget): set up successfully"
break
un nogÄdÄjiet to Å”ajÄ formÄ
RediÄ£Äts
# 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
Å emiet vÄrÄ, ka Å”eit var izmantot UUID vai ID. Galvenais ir tas, ka nepiecieÅ”amie draiveri HDD / SSD ierÄ«cÄm tiek pievienoti /etc/initramfs-tools/modules. Ar komandu varat uzzinÄt, kurÅ” draiveris tiek izmantots udevadm info -a -n /dev/sdX | egrep 'meklÄ | DRIVER'.
Tagad, kad esam pabeiguÅ”i un visi faili ir savÄs vietÄs, palaidiet update-initramfs -u -k all -v, mežizstrÄdÄ nedrÄ«kst bÅ«t mÅ«su skriptu izpildes kļūdas. MÄs atsÄknÄjam, ievadÄm ieejas frÄzi un nedaudz pagaidÄm, atkarÄ«bÄ no disku skaita. PÄc tam sistÄma sÄks darboties un pÄdÄjÄ palaiÅ”anas posmÄ, proti, pÄc saknes nodalÄ«juma āuzmontÄÅ”anasā, tiks izpildÄ«ta komanda partprobe - tÄ atradÄ«s un uzÅems visus izveidotos nodalÄ«jumus LUKS ierÄ«cÄs un jebkuros masÄ«vos, neatkarÄ«gi no tÄ, vai tas ir ZFS vai mdadm, tiks samontÄts bez problÄmÄm! Un tas viss pirms iekrauÅ”anas pamatpakalpojumi un pakalpojumi, kuriem nepiecieÅ”ami Å”ie diski/masÄ«vi.
atjauninÄjums1: KÄ
Avots: www.habr.com