سسٽم بوٽ وقت تي LUKS ڪنٽينر کي ختم ڪرڻ

تمام سٺو ڏينهن ۽ رات! هي پوسٽ انهن لاءِ ڪارآمد ثابت ٿيندي جيڪي LUKS ڊيٽا انڪرپشن استعمال ڪندا آهن ۽ لينڪس (Debian، Ubuntu) جي تحت ڊسڪ کي ڊريڪٽ ڪرڻ چاهيندا آهن. روٽ ورهاڱي کي ختم ڪرڻ جا مرحلا. ۽ مون کي انٽرنيٽ تي اهڙي معلومات نه ملي سگهي.

وڌيڪ تازو، شيلف ۾ ڊسڪ جي تعداد ۾ اضافو سان، مان /etc/crypttab ذريعي وڌيڪ معروف طريقي سان استعمال ڪندي ڊسڪ کي ڊسڪ ڪرڻ جي مسئلي ۾ ڀڄي ويو. ذاتي طور تي، آئون هن طريقي سان استعمال ڪرڻ سان ڪجھ مسئلن کي نمايان ڪري ٿو، يعني اهو فائل پڙهي رهيو آهي صرف لوڊ ڪرڻ کان پوء (ماؤنٽ) روٽ ورهاڱي، جيڪو منفي طور تي ZFS درآمدن تي اثرانداز ٿئي ٿو، خاص طور تي جيڪڏهن اهي هڪ *_crypt ڊيوائس تي ورهاڱي کان ٺاهيا ويا آهن، يا mdadm raids پڻ پارٽيشنن مان ٺهيل آهن. اسان سڀ ڄاڻون ٿا ته توهان LUKS ڪنٽينرز تي پارٽ استعمال ڪري سگهو ٿا، صحيح؟ ۽ پڻ ٻين خدمتن جي شروعاتي شروعات جو مسئلو، جڏهن اڃا تائين ڪوبه صفون نه آهن، پر استعمال ڪريو مون کي اڳ ۾ ئي ڪجهه جي ضرورت آهي (آئون ڪم ڪريان ٿو ڪلسٽر ٿيل Proxmox VE 5.x ۽ ZFS مٿان iSCSI).

ZFSoverISCSI بابت ٿوروiSCSI مون لاءِ LIO ذريعي ڪم ڪري ٿو، ۽ حقيقت ۾، جڏهن iscsi ٽارگيٽ شروع ٿئي ٿو ۽ ZVOL ڊوائيسز کي نه ٿو ڏسن، اهو صرف انهن کي ترتيب مان هٽائي ٿو، جيڪو مهمان سسٽم کي بوٽ ڪرڻ کان روڪي ٿو. ان ڪري، يا ته json فائل جي بيڪ اپ کي بحال ڪرڻ، يا دستي طور تي ڊيوائسز کي شامل ڪرڻ سان سڃاڻپ ڪندڙ هر VM لاءِ، جيڪو صرف خوفناڪ آهي جڏهن ته اهڙيون ڪيتريون ئي مشينون آهن ۽ هر ترتيب ۾ 1 ڊسڪ کان وڌيڪ آهي.

۽ ٻيو سوال جنهن تي مان غور ڪندس ته ڪيئن ڊڪرائجي (هي مضمون جو اهم نقطو آهي). ۽ اسان هن جي باري ۾ هيٺ ڳالهائينداسين، کٽ جي هيٺان وڃو!

گهڻو ڪري، انٽرنيٽ تي، هڪ اهم فائل استعمال ڪيو ويندو آهي (خود-شامل هن کان اڳ سلاٽ ۾ حڪم - cryptsetup luksAddKey)، يا نادر استثنا ۾ (روسي-ٻولي انٽرنيٽ تي تمام گهٽ معلومات آهي) - decrypt_derived اسڪرپٽ ۾ واقع آهي /lib/cryptsetup/script/ (يقيناً، ٻيا به طريقا آهن، پر مون اهي ٻئي استعمال ڪيا، جيڪي مضمون جو بنياد بڻيا). مون ريبوٽ کان پوءِ مڪمل خودمختياري جي شموليت لاءِ پڻ ڪوشش ڪئي، ڪنسول ۾ بغير ڪنهن اضافي حڪم جي، ته جيئن هر شيءِ منهنجي لاءِ هڪ ئي وقت ”اُڏام“ ٿي وڃي. تنهن ڪري، انتظار ڇو؟ -

اچو ته شروع ڪريون!

اچو ته هڪ سسٽم فرض ڪريون، جهڙوڪ ڊيبين، هڪ sda3_crypt crypto ورهاڱي تي نصب ڪيو ويو آهي ۽ هڪ درجن ڊسڪ انڪريپٽ ٿيڻ لاء تيار آهي ۽ توهان جي دل جي مواد لاء ٺاهي وئي آهي. اسان وٽ 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

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

۽ آخري، اپڊيٽ-initramfs کان اڳ، توهان کي /etc/initramfs-tools/scripts/local-top/cryptroot فائل کي ايڊٽ ڪرڻ جي ضرورت آهي، جيڪا لائن ~360 کان شروع ٿيندي، هيٺ ڏنل ڪوڊ جو ٽڪرو

اصل


                # 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 'ڳولي رهيو آهي | ڊرائيور'.

هاڻي ته اسان ڪيو آهي ۽ سڀ فائلون جاء تي آهن، هلائي اپڊيٽ-initramfs -u -k all -v، لاگنگ ۾ نه هجڻ گهرجي اسان جي اسڪرپٽ جي عمل ۾ غلطيون. اسان ريبوٽ ڪريو، پاسفريس داخل ڪريو ۽ ٿورو انتظار ڪريو، ڊسڪ جي تعداد تي منحصر ڪري ٿو. اڳيون، سسٽم شروع ٿيندو ۽ لانچ جي آخري مرحلي تي، يعني روٽ ورهاڱي کي ”ماؤنٽنگ“ ڪرڻ کان پوءِ، پارٽ پروب ڪمانڊ تي عمل ڪيو ويندو - اهو LUKS ڊوائيسز ۽ ڪنهن به صفن تي ٺاهيل سڀني حصن کي ڳولي ۽ کڻندو، اهو ZFS هجي يا. mdadm، بغير مسئلن جي گڏ ڪيو ويندو! ۽ هي سڀ لوڊ ڪرڻ کان اڳ بنيادي خدمتون ۽ خدمتون جيڪي انهن ڊسڪ / صفن جي ضرورت هونديون آهن.

اپڊيٽ 1: ڪيئن محسوس ٿيو AEPاهو طريقو صرف LUKS1 لاءِ ڪم ڪري ٿو.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو