Sistemin açılışı zamanı LUKS konteynerinin şifrəsinin açılması

Hər kəsə xeyirli günlər və gecələr! Bu yazı LUKS məlumat şifrələməsindən istifadə edən və Linux (Debian, Ubuntu) altında disklərin şifrəsini açmaq istəyənlər üçün faydalı olacaq. kök bölmənin şifrəsinin açılması mərhələləri. Və internetdə belə bir məlumat tapa bilmədim.

Bu yaxınlarda, rəflərdəki disklərin sayının artması ilə, /etc/crypttab vasitəsilə daha çox tanınmış metoddan istifadə edərək disklərin şifrəsini açmaq problemi ilə qarşılaşdım. Şəxsən mən bu metoddan istifadə ilə bağlı bir neçə problemi, yəni faylın oxunduğunu vurğulayıram yalnız kök bölməni yüklədikdən (montaj etdikdən) sonra, bu ZFS idxalına mənfi təsir göstərir, xüsusən də onlar *_crypt cihazında arakəsmələrdən tikilibsə və ya arakəsmələrdən qurulmuş mdadm reydləri də. Hamımız bilirik ki, LUKS konteynerlərində parted istifadə edə bilərsiniz, elə deyilmi? Həm də digər xidmətlərin erkən başlaması problemi, hələ seriallar olmadıqda, lakin istifadə edin Artıq bir şeyə ehtiyacım var (iSCSI üzərindən klasterləşdirilmiş Proxmox VE 5.x və ZFS ilə işləyirəm).

ZFSoverISCSI haqqında bir aziSCSI mənim üçün LIO vasitəsilə işləyir və əslində, iscsi hədəfi işə salındıqda və ZVOL cihazlarını görmədikdə, onları sadəcə olaraq konfiqurasiyadan çıxarır, bu da qonaq sistemlərinin yüklənməsinin qarşısını alır. Beləliklə, ya json faylının ehtiyat nüsxəsini bərpa etmək, ya da hər bir VM üçün identifikatorları olan cihazları əl ilə əlavə etmək, onlarla belə maşın olduqda və hər konfiqurasiyada 1 diskdən çox olduqda bu, sadəcə dəhşətlidir.

Və nəzərdən keçirəcəyim ikinci sual, şifrəni necə açmaq olar (bu, məqalənin əsas məqamıdır). Və bu barədə aşağıda danışacağıq, kəsik altına keçin!

Çox vaxt İnternetdə bir açar faylı istifadə olunur (bundan əvvəl slota öz-özünə əlavə olunur - cryptsetup luksAddKey) və ya nadir istisnalarda (rusdilli İnternetdə çox az məlumat var) - decrypt_derived skript /lib/cryptsetup/script/-də yerləşir (təbii ki, başqa yollar da var, amma məqalənin əsasını təşkil edən bu ikisindən istifadə etdim). Mən də konsolda heç bir əlavə əmr olmadan yenidən başladıqdan sonra tam muxtar daxil olmağa çalışdım ki, hər şey mənim üçün bir anda "uçsun". Buna görə də, niyə gözləmək lazımdır? —

Başlayaq!

Fərz edək ki, Debian kimi bir sistem sda3_crypt kripto bölməsində quraşdırılıb və onlarla disk şifrələnməyə və ürəyinizə uyğun yaradılmağa hazırdır. Bizdə sda3_crypt-in kilidini açmaq üçün parol (parol) var və məhz bu bölmədən biz işləyən (şifrəsi açılmış) sistemdəki paroldan “hash” çıxarıb disklərin qalan hissəsinə əlavə edəcəyik. Hər şey elementardır, konsolda icra edirik:

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

burada X bizim disklərimiz, bölmələrimiz və s.

Diskləri şifrəmizdən "hash" ilə şifrələdikdən sonra kimin nəyə və nəyə öyrəşdiyindən asılı olaraq UUID və ya ID-ni tapmalısınız. Biz məlumatları müvafiq olaraq /dev/disk/by-uuid və by-id-dən götürürük.

Növbəti addım bizə lazım olan funksiyalar üçün faylları və mini-skriptləri hazırlamaqdır, davam edək:

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/

daha

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

../deşifrənin məzmunu

#!/bin/sh

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

daha

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

../partcopy məzmunu

#!/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"

bir az daha

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

Məzmun ../partprobe

#!/bin/sh

$DESTDIR/bin/partprobe

və son olaraq, update-initramfs-dən əvvəl, ~360 sətirindən başlayaraq, aşağıda kod parçacığı olan /etc/initramfs-tools/scripts/local-top/cryptroot faylını redaktə etməlisiniz.

Orijinal


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

və bu formaya gətirin

Redaktə edilib


                # 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

Qeyd edək ki, burada UUID və ya ID istifadə edilə bilər. Əsas odur ki, HDD / SSD cihazları üçün lazım olan drayverlər /etc/initramfs-tools/modullara əlavə olunur. Komanda ilə hansı sürücünün istifadə olunduğunu öyrənə bilərsiniz udevadm info -a -n /dev/sdX | egrep 'baxıram|SÜRÜCÜ'.

İndi işimiz bitib və bütün fayllar yerindədir, işə salın update-initramfs -u -k all -v, girişdə olmamalıdır skriptlərimizin icra səhvləri. Disklərin sayından asılı olaraq yenidən başladın, parol ifadəsini daxil edin və bir az gözləyin. Sonra, sistem işə düşəcək və işə salınmanın son mərhələsində, yəni kök bölməni "quraşdırdıqdan" sonra partprobe əmri yerinə yetiriləcək - LUKS cihazlarında və ZFS və ya istənilən massivlərdə yaradılmış bütün arakəsmələri tapacaq və götürəcəkdir. mdadm, problemsiz yığılacaq! Və bütün bunlar yükləmədən əvvəl bu disklərə/massivlərə ehtiyacı olan əsas xidmətlər və xidmətlər.

yeniləmə1: Necə qeyd etdi AEP, bu üsul yalnız LUKS1 üçün işləyir.

Mənbə: www.habr.com

Добавить комментарий