يوم جيد ، ليلة! ستكون هذه المشاركة مفيدة لأولئك الذين يستخدمون تشفير بيانات LUKS ويريدون
فك تشفير
فك تشفير الأقراص تحت Linux (Debian، Ubuntu) في
مرحلة فك تشفير القسم الجذر . ولم أتمكن من العثور على هذه المعلومات على الإنترنت.
في الآونة الأخيرة ، مع زيادة عدد الأقراص في الأرفف ، واجهت مشكلة فك تشفير الأقراص باستخدام أكثر من طريقة معروفة عبر / etc / crypttab. شخصياً ، أسلط الضوء على العديد من المشكلات التي تستخدم هذه الطريقة ، أي أن الملف يتم قراءته
فقط بعد تثبيت قسم الجذر (التحميل) ، مما يؤثر سلبًا على استيراد ZFS ، خاصة إذا تم جمعها من أقسام على جهاز * _crypt أو غارات mdadm جمعت أيضا من الأقسام.
نعلم جميعا أنه يمكنك استخدام افترقوا في حاويات LUKS؟ وأيضًا مشكلة البدء المبكر للخدمات الأخرى في حالة عدم وجود صفائف بعد ، ولكن يجب استخدام شيء ما (أعمل مع Proxmox VE 5.x و ZFS عبر iSCSI المجمعة).
قليلا عن ZFSoverISCSIيعمل iSCSI من خلال LIO ، وفي الواقع عندما يبدأ هدف iscsi ولا يرى أجهزة ZVOL ، فإنه يزيلها ببساطة من التكوين ، مما يمنع أنظمة الضيف من التحميل. وبالتالي ، إما استعادة نسخة احتياطية من ملف json ، أو إضافة الأجهزة يدويًا مع معرفات كل جهاز VM ، وهو أمر فظيع للغاية عندما يكون هناك العشرات من هذه الأجهزة وهناك أكثر من قرص واحد في تكوين كل منها.
والسؤال الثاني الذي سأدرسه هو كيفية فك تشفير (هذه هي النقطة الرئيسية في المقال). وسوف نتحدث عن هذا أدناه ، انتقل تحت خفض!
في أغلب الأحيان ، على الإنترنت ، يستخدمون ملف مفتاح (الأمر cryptsetup luksAddKey الذي تمت إضافته إلى الفتحة قبل نفسه) ، أو في حالات استثنائية نادرة (اللغة الروسية هي معلومات شحيحة جدًا) - البرنامج النصي decrypt_derived ، وهو / lib / cryptsetup / script / (بالطبع ، لا تزال هناك طرق ، لكنني استخدمت هذين ، اللذين شكلا أساس المقال). سعيت أيضًا إلى التضمين الكامل المستقل بعد إعادة التشغيل ، دون أي أوامر إضافية في وحدة التحكم ، بحيث "ينطلق" كل شيء مرة واحدة. فلماذا الانتظار؟ -
لنبدأ!
نحن نفترض نظامًا ، على سبيل المثال ، دبيان ، مثبتًا على قسم التشفير 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
إضافي
touch /etc/initramfs-tools/hooks/partcopy && chmod +x /etc/initramfs-tools/hooks/partcopy
بعض أكثر
touch /etc/initramfs-tools/scripts/local-bottom/partprobe && chmod +x /etc/initramfs-tools/scripts/local-bottom/partprobe
وأخيرًا ، قبل التحديث - initramfs ، تحتاج إلى تعديل الملف / etc / initramfs-tools / scripts / local-top / cryptroot ، بدءًا من السطر ~ 360 ، قطعة من الشفرة أدناه
وتقديمهم إلى هذا النموذج
يرجى ملاحظة أنه يمكن استخدام UUID أو ID هنا. الشيء الرئيسي هو أن برامج التشغيل الضرورية لأجهزة HDD / SSD تضاف إلى / etc / initramfs-tools / modules. يمكنك معرفة برنامج التشغيل الذي يجب استخدامه بواسطة
معلومات udevadm -a -n / dev / sdX | egrep 'looking | DRIVER' .
الآن وبعد أن انتهينا وجميع الملفات في مكانها ،
وقم بتشغيل
update-initramfs -u -k all -v ،
يجب ألا تكون هناك أخطاء في تنفيذ البرامج النصية الخاصة بنا في التسجيل. نقوم بإعادة التشغيل ، وأدخل عبارة المرور وننتظر قليلاً ، اعتمادًا على عدد الأقراص. بعد ذلك ، سيبدأ النظام وفي المرحلة النهائية من بدء التشغيل ، أي بعد "تركيب" قسم الجذر ، سيتم تنفيذ أمر partprobe - سيجد وينتقل كل الأقسام التي تم إنشاؤها على أجهزة LUKS وأي صفائف ، سواء ZFS أو mdadm ، سيتم تجميعها دون مشاكل! وكل هذا
قبل تحميل الخدمات والخدمات الأساسية التي تحتاج إلى هذه الأقراص / المصفوفات.
update1 : كما
لاحظ AEP ، تعمل هذه الطريقة فقط مع LUKS1.