पूर्ण डिस्क एन्क्रिप्शन (एलयूकेएस के ऊपर एलवीएम) के साथ उबंटू पर रैम को कैसे सुरक्षित करें?


20

मैं Ubuntu 13.04 पर पूर्ण डिस्क एन्क्रिप्शन (LUKS के शीर्ष पर LVM) का उपयोग कर रहा हूं।

मैं luksSuspendसस्पेंड प्रक्रिया (और बाद में उपयोग luksResume) में शामिल करना चाहता हूं ताकि मैं मेमोरी पर महत्वपूर्ण सामग्री छोड़ने के बिना रैम को निलंबित कर सकूं और रूट अनलॉक हो जाए।

मैं पिछले 7 घंटों से आर्क लिनक्स के लिए एक स्क्रिप्ट को पोर्ट करने की कोशिश कर रहा हूं , अब तक सफलता के बिना: मुझे ईमानदारी से पता नहीं है कि मैं क्या कर रहा हूं ...

क्या कोई मुझे इस पोर्ट करने में मदद कर सकता है (या स्क्रैच से ऐसा कुछ बना सकता है)? या, कम से कम, क्या कोई मुझे दस्तावेज़ों के बारे में बता सकता है कि कैसे निलंबित प्रक्रियाओं में सामान को हुक करने के लिए और कैसे आवश्यक बायनेरिज़ और स्क्रिप्ट (जैसे क्रिप्टिसेटअप) उपलब्ध होने के बाद भी सभी IO को रूट (द्वारा luksSuspend) अवरुद्ध कर दिया गया है ?

आवश्यक बायनेरी और लिपियों को फिर से शुरू करने के लिए उपलब्ध रखने के बारे में, इस अन्य ब्लॉग पोस्ट (आर्क के लिए भी) ने उन्हें कॉपी किया /boot; हालाँकि मैं उन पंक्तियों में कुछ और उपयोग करना चाहूंगा, जो मैंने पहले बताई गई स्क्रिप्ट में वियाननी ने इस्तेमाल की थीं, क्योंकि इस पहलू में वह दृष्टिकोण थोड़ा अधिक सुरुचिपूर्ण प्रतीत होता है।


मैं इस पर कुछ और घंटे बिताता हूं ...
जोनास मालाको

मैंने उन लिपियों को संपादित किया जो बनती हैं pm-suspendऔर ऐसा प्रतीत होता है कि मैं लगभग वहीं था। हालांकि, मुझे पता चला कि मैं echo -n "mem" > /sys/power/stateरूट fs ( cryptsetup luksSuspend ...) को फ्रीज करने के बाद सिस्टम ( ) को सस्पेंड नहीं कर सकता , इसके लिए मुझे कुछ i / o अभी भी चाहिए ...
जोनास मालाको

1
मैंने डेबियन सूचियों पर कुछ चर्चाएँ पढ़ीं (और कुछ अन्य सूचियाँ जो इन लोगों से जुड़ी हुई हैं या जुड़ी हुई हैं) और, अब तक, ऐसा प्रतीत होता है कि समाधान के लिए "डिनिट्रामॉफ़्स" जैसी किसी चीज़ की आवश्यकता होगी: कर्नेल डेमीट्र्राम्स पर नियंत्रण को नियंत्रित करेगा। वास्तव में सिस्टम को सस्पेंड करने से ठीक पहले, ताकि यह tmpfs अंतिम क्लीनअप क्रिया (जैसे रूटफ़ के लिए एन्क्रिप्शन कुंजी पोंछना) कर सके।
जोनास मालाको

मैं वास्तव में इस प्रश्न का उत्तर देखना चाहता हूं।
बेनालास्टर

जवाबों:


3

मैं उसी समस्या को लेकर आया हूं, इसलिए मैंने उसी स्क्रिप्ट को पोर्ट करने के लिए एक और शॉट लिया, जिसे आप यहां देख सकते हैं । इसके बाद यह किसी भी गैर-वाष्पशील भंडारण को नहीं छूता है luksSuspend, इसलिए यह एन्क्रिप्टेड / बूट के साथ वास्तविक पूर्ण-डिस्क एन्क्रिप्शन के साथ भी काम करता है। हालांकि, आपको सावधान रहने की आवश्यकता होगी - यह कभी-कभार अपेक्षित रूप से काम नहीं कर सकता है!

पोर्ट की गई स्क्रिप्ट निम्न कार्य करती है:

  • कहीं एक रैंप माउंट बनाएं
  • वहाँ initramfs की सामग्री निकालें (initramfs स्क्रिप्ट को निलंबित करके)
  • बाध्य प्रासंगिक निर्देशिकाओं (जैसे माउंट /sys, /proc, /dev, /run) को ramfs माउंट
  • ऐसी किसी भी सेवा को रोकें जो हस्तक्षेप कर सकती है (systemd-udevd, systemd-journald)
  • रूट फाइलसिस्टम (ext4 या btrfs) को nobarrier के साथ रिमूव करें ताकि लिनक्स S3 में जाने की कोशिश करते समय लटका न हो, फिर सिंक करें
  • Initramfs माउंट में चुरोट, जो फिर से सिंक करता है, चलाता है luksSuspend, और कंप्यूटर को सोता है
  • luksResumeउठने के बाद, फाइल सिस्टम को रिमूव करें, सेवाओं को फिर से शुरू करें, इनट्रैमफैट्स माउंट में अनमाउंट बाइंड माउंट्स
  • अंत में, initramfs को अनमाउंट करें ताकि हम theitramfs फ़ाइलों के लिए उपयोग की जाने वाली RAM को मुक्त कर सकें

मुझे अभी तक अपनी स्क्रिप्ट पर व्यापक परीक्षण करना है, लेकिन यह मेरे लिए मज़बूती से काम करता है। यदि आप किसी अन्य फाइल सिस्टम (अर्थात ext4 या btrfs) का उपयोग करते हैं, तो आप बाधा के साथ समस्याओं का अनुभव कर सकते हैं, इसलिए आपको स्क्रिप्ट को भी संशोधित करना होगा।

किसी भी तरह से, यह परीक्षण और सत्यापित करने के लिए अच्छा है कि स्क्रिप्ट पहले काम करती है। यदि आप लिनक्स को S3 (यानी पर echo mem > /sys/power/state) में डालने का प्रयास करते समय लटका अनुभव करते हैं , तो आपको पुनर्प्राप्त करने में सक्षम होना चाहिए:

  • निलंबित करने से पहले, एक tty या अन्य टर्मिनल खोलें (जो कि सुलभ होगा, इसलिए आदर्श रूप से tty)
  • RAM में cry cryetetup और प्रासंगिक लाइब्रेरी लोड करें: sudo cryptsetup luksResume anything_here
  • स्क्रिप्ट का उपयोग कर निलंबित करें
  • यदि यह चिरोट के बाद लटका हुआ है (उदाहरण के बाद starting version xxxनए वीटी पर प्रदर्शित किया जाता है), उस टटी पर स्विच करें जिसे आपने पहले खोला था या चला था।sudo cryptsetup luksResume your_luks_device_name_here
  • यदि वह भी लटका हुआ है, तो एक और vt खोलें और उसमें क्रोकेट करें /run/initramfs:sudo chroot /run/initramfs /bin/ash
  • चलाने की कोशिश करें luksResume:cryptsetup luksResume your_luks_device_name_here && exit
  • आपके कंप्यूटर को तब निलंबित करना चाहिए। फिर आप इसे जगा सकते हैं, स्क्रिप्ट को मार सकते हैं यदि वे अभी भी चल रहे हैं, तो बाइंड माउंट को अनमाउंट करें /run/initramfsऔर यदि लागू हो तो अपने रूट फाइलसिस्टम को अवरोध के साथ हटा दें।

1

मेरे पास इस सेटअप के साथ अनुभव नहीं है, लेकिन कई लोग इसमें सफलता का दावा करते हैं। यहाँ उनमें से एक जोड़े हैं।

LUKS साथ dm-तहखाने - स्वैप विभाजन को कूटबद्ध करने
Howto: सहित उबंटू 6.10 व्यग्र Eft साथ डिस्क विभाजन को निलंबित पूरी तरह से एन्क्रिप्टेड हार्डडिस्क
ubuntu-पूर्ण डिस्क एन्क्रिप्शन-एलवीएम-luks

हालाँकि उनमें से कोई भी luksSuspend का उपयोग नहीं करता है (जो हो सकता है कि वे क्यों काम करते हैं)।


लिंक के लिए धन्यवाद ... मैं पिछले लिंक (13.04 इंस्टॉलर द्वारा उत्पन्न ऑटो) के समान सेटअप का उपयोग कर रहा हूं।
जोनास मलाको

अब तक कोई ल्यूसस्पेंड नहीं, मेमोरी से कुंजियों को साफ करने के लिए बंद करना चाहिए ... फिर भी, लिंक के लिए धन्यवाद! शायद यह समझने के लिए कि मैं इसे मैन्युअल रूप से कैसे कॉन्फ़िगर करूं, मैं कुछ जानकारी प्राप्त कर सकता हूं कि कैसे रैम को निलंबित करने के लिए luksSuspend का उपयोग किया जाए।
जोनास मलाको

1
luksSuspend का उपयोग करना बेहद मुश्किल लगता है। जैसा कि यह सभी I / O को जमा करता है, एक बहुत ही कलाबाज सस्पेंड स्क्रिप्ट की जरूरत है। मुझे जर्मन में केवल एक ही सफलता-कहानी मिल सकी जो (बुरी तरह से) अंग्रेजी में अनुवादित हो सकती है । इसे एक टेम्पलेट के रूप में उपयोग करने का प्रयास करें।
१३

2
आपको राम-डिस्क और सांख्यिकीय रूप से लिंक किए गए cryptsetup का उपयोग करने की आवश्यकता हो सकती है।
१३

1

मैंने इसे Ubuntu 15.10 पर पूरी तरह कार्यात्मक होने में कुछ समय बिताया। यदि आप ext2, ext3 या ext4 पर यह काम करने की कोशिश कर रहे हैं, तो आपको 'nobarrier' विकल्प के साथ वॉल्यूम माउंट करने के लिए / etc / fstab को अपडेट करना होगा। अन्यथा, मैं BTRFS का उपयोग करने का सुझाव देता हूं।

एक बार जब आपका फाइलसिस्टम प्रीपेड हो जाता है, तो यहां स्क्रिप्ट का उपयोग करें: https://github.com/Microcentillion/ubuntu-lukssstend

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.