Hammaga xayrli kun va tun! Ushbu post LUKS ma'lumotlar shifrlashdan foydalanadigan va Linux (Debian, Ubuntu) ostida disklarni shifrlashni xohlaydiganlar uchun foydali bo'ladi. ildiz bo'limining shifrini ochish bosqichi. Va men Internetda bunday ma'lumotni topa olmadim.
Yaqinda javonlardagi disklar sonining ko'payishi bilan men /etc/crypttab orqali ko'proq ma'lum bo'lgan usuldan foydalangan holda disklarni shifrlash muammosiga duch keldim. Shaxsan men ushbu usuldan foydalanish bilan bog'liq bir nechta muammolarni, ya'ni faylni o'qishni ta'kidlayman faqat ildiz qismini yuklagandan (o'rnatishdan) keyin, bu ZFS importiga salbiy ta'sir qiladi, xususan, agar ular *_crypt qurilmasidagi bo'limlardan yig'ilgan bo'lsa yoki bo'limlardan to'plangan mdadm reydlari ham. LUKS konteynerlarida parted ishlatishingiz mumkinligini hammamiz bilamiz, to'g'rimi? Va shuningdek, boshqa xizmatlarni erta boshlash muammosi, hali massivlar mavjud bo'lmaganda va foydalanish Menga allaqachon biror narsa kerak (men iSCSI orqali klasterlangan Proxmox VE 5.x va ZFS bilan ishlayapman).
ZFSoverISCSI haqida bir oziSCSI men uchun LIO orqali ishlaydi va aslida, iscsi nishoni ishga tushirilganda va ZVOL qurilmalarini ko'rmasa, u ularni konfiguratsiyadan olib tashlaydi, bu esa mehmon tizimlarining yuklanishiga to'sqinlik qiladi. Shunday qilib, json faylining zaxira nusxasini tiklash yoki har bir VM identifikatoriga ega qurilmalarni qo'lda qo'shish, bu o'nlab bunday mashinalar mavjud bo'lganda va har bir konfiguratsiyada 1 dan ortiq disk bo'lsa, bu dahshatli.
Va men ko'rib chiqadigan ikkinchi savol - shifrni qanday ochish kerak (bu maqolaning asosiy nuqtasi). Va biz bu haqda quyida gaplashamiz, kesishga o'ting!
Ko'pincha Internetda ular kalit fayldan foydalanadilar (u avtomatik ravishda cryptsetup luksAddKey buyrug'i bilan slotga qo'shiladi) yoki kamdan-kam hollarda (rus tilidagi Internetda juda kam ma'lumot mavjud) - shifrlangan skriptdan foydalanadilar. /lib/cryptsetup/script/ (albatta, boshqa yo'llar ham bor, lekin men maqolaga asos bo'lgan bu ikkitasidan foydalandim). Men qayta ishga tushirilgandan so'ng, konsolda qo'shimcha buyruqlarsiz to'liq avtonom faollashtirishga harakat qildim, shunda hamma narsa men uchun darhol "uchib ketadi". Shuning uchun, nima uchun kutish kerak? β
Qani boshladik!
Biz sda3_crypt kripto bo'limiga o'rnatilgan Debian kabi tizim va yuragingiz xohlagan narsani shifrlash va yaratishga tayyor o'nlab disklarni taxmin qilamiz. Bizda sda3_crypt qulfini ochish uchun kalit ibora (parol iborasi) mavjud va aynan shu bo'limdan biz ishlayotgan (deshifrlangan) tizimdagi parolning "xesh"ini olib tashlaymiz va uni boshqa disklarga qo'shamiz. Hammasi oddiy, konsolda biz bajaramiz:
/lib/cryptsetup/scripts/decrypt_derived sda3_crypt | cryptsetup luksFormat /dev/sdX
bu erda X bizning disklarimiz, bo'limlarimiz va boshqalar.
Disklarni bizning kalit iboramizdan xesh bilan shifrlagandan so'ng, kim nimaga o'rganganiga qarab UUID yoki ID ni bilib olishingiz kerak. Biz mos ravishda /dev/disk/by-uuid va by-id dan ma'lumotlarni olamiz.
Keyingi bosqich - biz ishlashimiz kerak bo'lgan funktsiyalar uchun fayllar va mini-skriptlarni tayyorlash, keling:
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/
yanada
touch /etc/initramfs-tools/hooks/decrypt && chmod +x /etc/initramfs-tools/hooks/decrypt
../decrypt
#!/bin/sh
cp -p /lib/cryptsetup/scripts/decrypt_derived "$DESTDIR/bin/decrypt_derived"
yanada
touch /etc/initramfs-tools/hooks/partcopy && chmod +x /etc/initramfs-tools/hooks/partcopy
Tarkib ../nusxasi
#!/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"
yana ozgina
touch /etc/initramfs-tools/scripts/local-bottom/partprobe && chmod +x /etc/initramfs-tools/scripts/local-bottom/partprobe
Tarkib ../partprobe
#!/bin/sh
$DESTDIR/bin/partprobe
va nihoyat, update-initramfs-dan oldin, faylni tahrirlashingiz kerak /etc/initramfs-tools/scripts/local-top/cryptroot, ~360-satrdan boshlab, quyida joylashgan kod parchasi.
Original
# decrease $count by 1, apparently last try was successful.
count=$(( $count - 1 ))
message "cryptsetup ($crypttarget): set up successfully"
break
va uni ushbu shaklga keltiring
Tahrirlangan
# 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
Bu erda UUID yoki ID dan foydalanish mumkinligini unutmang. Asosiysi, HDD/SSD qurilmalari uchun kerakli drayverlar /etc/initramfs-tools/modules-ga qo'shilgan. Buyruq bilan qaysi drayverdan foydalanilganligini bilib olishingiz mumkin udevadm info -a -n /dev/sdX | egrep 'qarash|haydovchi'.
Endi biz tugatdik va barcha fayllar joyida, biz ishga tushamiz update-initramfs -u -k all -v, jurnalga kirishda bo'lmasligi kerak skriptlarimizni bajarishdagi xatolar. Biz qayta ishga tushiramiz, asosiy iborani kiritamiz va disklar soniga qarab biroz kutamiz. Keyinchalik, tizim ishga tushadi va ishga tushirishning yakuniy bosqichida, ya'ni ildiz bo'limi "o'rnatilgandan" keyin partprobe buyrug'i bajariladi - u LUKS qurilmalarida va ZFS yoki ZFS bo'lsin, barcha yaratilgan bo'limlarni topadi va oladi. mdadm, muammosiz yig'iladi! Va bularning barchasi yuklashdan oldin ushbu disklar/massivlarga muhtoj bo'lgan asosiy xizmatlar.
yangilash1: Qanaqasiga
Manba: www.habr.com