Рамзкунии контейнери LUKS дар вақти боркунии система

Ҳама шабу рӯз ба хайр! Ин паём барои онҳое, ки рамзгузории додаҳои LUKS-ро истифода мебаранд ва мехоҳанд дискҳоро зери Linux (Debian, Ubuntu) рамзкушоӣ кунанд, муфид хоҳад буд. марҳилаи рамзкушоии қисмати реша. Ва ман чунин маълумотро дар интернет пайдо карда натавонистам.

Ба наздикӣ, бо афзоиши шумораи дискҳо дар рафҳо, ман бо мушкилоти рамзкушоӣ кардани дискҳо бо истифода аз усули бештар маъруф тавассути /etc/crypttab дучор шудам. Шахсан, ман якчанд мушкилотро бо истифодаи ин усул таъкид мекунам, яъне хондани файл танҳо пас аз бор кардан (монтаж кардан) қисмати реша, ки ба воридоти ZFS таъсири манфӣ мерасонад, махсусан агар онҳо аз қисмҳо дар дастгоҳи *_crypt ҷамъоварӣ шуда бошанд, ё рейдҳои mdadm низ аз қисмҳо ҷамъоварӣ карда шаванд. Мо ҳама медонем, ки шумо метавонед тақсимшударо дар контейнерҳои LUKS истифода баред, дуруст? Ва инчунин проблемаи барвакт ба кор андохтани дигар хадамот, ки хануз массив мавчуд нест, ва истифода баред Ба ман аллакай чизе лозим аст (ман бо Proxmox VE 5.x кластерӣ ва ZFS бар iSCSI кор мекунам).

Як каме дар бораи ZFSoverISCSIiSCSI барои ман тавассути LIO кор мекунад ва дар асл, вақте ки ҳадафи iscsi оғоз мешавад ва дастгоҳҳои ZVOL-ро намебинад, он танҳо онҳоро аз конфигуратсия хориҷ мекунад, ки аз пурборкунии системаҳои меҳмонон пешгирӣ мекунад. Аз ин рӯ, ё барқарор кардани файли нусхаи json, ё ба таври дастӣ илова кардани дастгоҳҳо бо идентификаторҳои ҳар як VM, ки ин даҳшатнок аст, вақте ки даҳҳо чунин мошинҳо мавҷуданд ва ҳар як конфигуратсия зиёда аз 1 диск дорад.

Ва саволи дуюм, ки ман баррасӣ хоҳам кард, ин аст, ки чӣ гуна рамзкушоӣ кардан лозим аст (ин нуқтаи асосии мақола аст). Ва мо дар ин бора дар зер гап мезанем, ба буриш равед!

Аксар вақт дар Интернет онҳо файли калидиро истифода мебаранд (ки ба таври худкор бо фармони cryptsetup luksAddKey ба слот илова карда шудааст) ё дар ҳолатҳои нодир (дар интернети русизабон маълумот хеле кам аст) - скрипти decrypt_derived, ки дар /lib/cryptsetup/script/ (албатта, роҳҳои дигар низ ҳастанд, аммо ман ин дуро истифода кардам, ки асоси мақоларо ташкил медоданд). Ман инчунин кӯшиш кардам, ки пас аз бозоғозӣ бе ягон фармонҳои иловагӣ дар консол фаъолсозии пурраи худмухторӣ дошта бошам, то ҳама чиз дарҳол барои ман "барояд". Пас, чаро интизор шавед? —

Биёед оғоз кунем!

Мо тахмин мезанем, ки системае, масалан Debian, дар қисмати криптографии sda3_crypt насб шудааст ва даҳҳо дискҳо барои рамзгузорӣ ва сохтани ҳар чизе, ки дили шумо мехоҳад, омодаанд. Мо барои кушодани sda3_crypt ибораи калидӣ (гузарвожа) дорем ва маҳз аз ҳамин бахш мо “хэш”-и паролро дар системаи коркунанда (рамзшифршуда) хориҷ мекунем ва онро ба дискҳои дигар илова мекунем. Ҳама чиз оддӣ аст, дар консол мо иҷро мекунем:

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

ки дар он X дискҳо, қисмҳои мо ва ғ.

Пас аз рамзгузории дискҳо бо хэш аз ибораи калидии мо, шумо бояд UUID ё ID-ро фаҳмед - вобаста ба кӣ ба чӣ одат кардааст. Мо мутаносибан аз /dev/disk/by-uuid ва by-id маълумот мегирем.

Марҳилаи навбатӣ омода кардани файлҳо ва мини-скриптҳо барои вазифаҳое, ки мо бояд кор кунем, идома медиҳем:

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/

минбаъд

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"

минбаъд

touch /etc/initramfs-tools/hooks/partcopy && chmod +x /etc/initramfs-tools/hooks/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"

каме бештар

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

Мундариҷа ../partprobe

#!/bin/sh

$DESTDIR/bin/partprobe

ва ниҳоят, пеш аз update-initramfs, шумо бояд файлро таҳрир кунед /etc/initramfs-tools/scripts/local-top/cryptroot аз сатри ~360, як пораи код дар зер сар карда

Original


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

ва онро ба ин шакл оваред

Таҳрир


                # 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

Дар хотир доред, ки UUID ё ID метавонад дар ин ҷо истифода шавад. Муҳим он аст, ки драйверҳои зарурӣ барои дастгоҳҳои HDD/SSD ба /etc/initramfs-tools/modules илова карда шудаанд. Шумо метавонед фаҳмед, ки кадом драйвер бо фармон истифода мешавад udevadm info -a -n /dev/sdX | egrep 'нигарист|РОНАНДА'.

Акнун, ки мо тамом шудем ва ҳамаи файлҳо дар ҷои худ ҳастанд, мо медароем update-initramfs -u -k all -v, дар қайдгири набояд бошад хатогиҳо дар иҷрои скриптҳои мо. Мо аз нав оғоз мекунем, ибораи калидиро ворид мекунем ва вобаста ба шумораи дискҳо каме интизор мешавем. Минбаъд, система оғоз меёбад ва дар марҳилаи ниҳоии оғозёбӣ, яъне пас аз "монтаж кардани" қисмати реша, фармони partprobe иҷро карда мешавад - он ҳама қисмҳои сохташударо дар дастгоҳҳои LUKS ва ҳама массивҳо, хоҳ ZFS бошад, хоҳ ZFS, пайдо ва мегирад. мдадм, бе мушкилот монтаж карда мешавад! Ва хамаи ин пеш аз бор кардан хидматҳои асосӣ, ки ба ин дискҳо / массивҳо ниёз доранд.

навсозӣ1: Чӣ хел пай бурд AEP, ин усул танҳо барои LUKS1 кор мекунад.

Манбаъ: will.com

Илова Эзоҳ