LUKS कीस्क्रिप्ट को अनदेखा किया जा रहा है ... पासवर्ड मांगता है


10

मुझे LUKS के लिए नया नहीं है कह कर शुरू करते हैं। मैंने LVM के साथ और बिना LVM के कई बार LUKS की स्थापना की है। मुझे यकीन नहीं है कि वास्तव में यहाँ क्या चल रहा है। मेरे पास एक प्रणाली है जिसमें एक एकल एन्क्रिप्टेड विभाजन है। मेरी ड्राइव इस प्रकार है:

# lsblk

NAME MAJ: MIN RM SIZE RO TYPE MOUNTPOINT
sda 8: 0 0 128G 0 डिस्क  
Partsda1 8: 1 0 128G 0 भाग  
  ├─vg0- रूट 253: 1 0 20G 0 lvm /
  ├─vg0- सुरक्षित 253: 6 0 100M 0 lvm   
  │ │secure 253: 7 0 98M 0 क्रिप्ट / रूट / सुरक्षित
  └─vg0-swap 253: 4 0 1G 0 lvm [SWAP]

मेरी /etc/crypttabफ़ाइल कुछ इस तरह दिखती है

# यूयूआईडी की आवश्यकता यहां नहीं है क्योंकि एलवी के लिए रास्ता नहीं बदलेगा
सुरक्षित / देव / vg0 / सुरक्षित कोई भी लुक्स, कीस्क्रिप्ट = / lib / cryptsetup / स्क्रिप्ट / असुरक्षित

मेरी /lib/cryptsetup/scripts/insecureफ़ाइल निष्पादन योग्य है और ऐसा कुछ दिखता है

#!/bin/sh
# My actual file looks somewhat different because it dumps the key file with dd.
# This accomplishes virtually the same thing though.

echo -n "my-encryption-password"

मैंने update-initramfs -k all -uकई बार क्रिप्टैब को कॉन्फ़िगर करने और अपनी कीस्क्रिप्ट फ़ाइल को रखने के बाद चलाया है।

जहाँ तक मैं बता सकता हूँ, मेरी स्क्रिप्ट फ़ाइल initrd.img फ़ाइल में कॉपी नहीं हो रही है। अब जब मैं इसके बारे में सोचता हूं, मुझे नहीं लगता कि यह initrd.img फ़ाइल में कॉपी हो जाएगा क्योंकि रूट विभाजन एन्क्रिप्ट नहीं किया गया है और स्क्रिप्ट फ़ाइल को वहां से आसानी से एक्सेस किया जाना चाहिए।

रिबूट करने पर, सिस्टम क्रिप्टैब से रिकॉर्ड देखता है और पासवर्ड के लिए पूछता है (जो मेरे मामले में वास्तव में मौजूद नहीं है क्योंकि एलयूकेएस विभाजन को अनलॉक करने के लिए कीस्क्रिप्ट का उपयोग करने के बजाय एकमात्र कुंजी यादृच्छिक बिट्स से भरा कीफ़ाइल है)। मैंने एलवीके को एलवीएम से बाहर निकालने और sda2 पर डालने की कोशिश की है, और परिणाम समान थे। मुझे यह भी पता है कि कीस्क्रिप्ट cryptsetup luksOpen /dev/vg0/secure secure -d - <<< "$(/lib/cryptsetup/scripts/insecure)"एक आकर्षण की तरह काम करता है और मेरे LUKS विभाजन को कम करता है।

मैंने उबंटू 16.04.2 और उबंटू मेट 16.04.2 में इसी परिणाम के साथ कोशिश की है। मैंने बिना किसी परेशानी के पहले चाबियों का इस्तेमाल किया है। एकमात्र अंतर यह था कि, अतीत में, मेरा / विभाजन हमेशा एन्क्रिप्टेड था। अगर किसी को कुछ प्रकाश डाला जा सकता है, मैं इसकी सराहना करता हूँ। मैं केवल एक बहुत छोटा एन्क्रिप्टेड विभाजन चाहता हूं क्योंकि मैं इस प्रणाली को क्लोन करने की योजना बना रहा हूं, और मैं इसे पूरी तरह से एन्क्रिप्ट किए गए सिस्टम के साथ क्लोन नहीं करना चाहता हूं।


UPDATE 2017-04-26

लॉग के माध्यम से खुदाई करने में, मुझे निम्नलिखित त्रुटि के साथ एक लाइन मिली, जिसका कोई मतलब नहीं है। कब से 'की -स्क्रिप्ट = / पाथ / टू / स्क्रिप्ट' क्रिप्टैब के लिए एक अज्ञात विकल्प है?

... systemd-cryptsetup [737]: अज्ञात / etc / crypttab विकल्प 'कीस्क्रिप्ट' / / lib / cryptsetup / स्क्रिप्ट / असुरक्षित ', अनदेखा करना।

बस किक के लिए, मैंने कीस्क्रिप्ट के विकल्प को हटाने और कीफ़ाइल का उपयोग करने की कोशिश की, और यह सब बस काम कर गया! वास्तव में, मैंने कीफाइल-ऑफसेट जैसे अन्य विकल्पों की कोशिश की, और वे भी काम करते हैं। इसलिए, समस्या कुंजीस्क्रिप्ट विकल्प के साथ कहीं है। क्या किसी को कोई विचार है क्यों?


3
मुझे लगता है कि systemd आपकी समस्या है। सिस्टमड और कीस्क्रिप्ट के लिए एक त्वरित गूगल एक बग दिखाता है और यहां सिस्टमड में कीस्क्रिप्ट को लागू करने के लिए एक पुल अनुरोध करता है । पहले लिंक से उपलब्ध वर्कअराउंड भी है।
सर्गटेक

यह मेरा संदेह रहा है और साथ ही मैंने अपने मुद्दे में खुदाई जारी रखी है और उन परिणामों को खोज रहा है जिन्हें मैंने ऑनलाइन पाया है। मैंने यहां कुछ सिफारिशों की कोशिश की , लेकिन मुझे यकीन नहीं है कि स्क्रिप्ट फ़ाइल को initrd में कैसे लाया जाए।
b_laoshi

जवाबों:


3

अपने / etc / crypttab ( https://unix.stackexchange.com/a/447676/356711 के अनुसार ) में "initramfs" विकल्प आज़माएँ । आपका /etc/crypttabतो इस प्रकार दिखाई देगा:

# UUID is not required here since the path to the LV won't change
secure      /dev/vg0/secure       none      luks,keyscript=/lib/cryptsetup/scripts/insecure,initramfs

कृपया ध्यान दें कि यह एक समस्या हो सकती है कि आपका रूट fs एक LVM कंटेनर में है। इस मुद्दे को ऊपर दिए गए लेख में भी उल्लेख किया गया है: " लेकिन यह वर्तमान में केवल (मज़बूती से) काम करता है यदि रूट डिवाइस LVM में नहीं है। " सौभाग्य से, ऐसा लगता है कि एक वर्कअराउंड प्रदान किया गया है।

मेरा सिस्टम इस तरह दिखता है:

$ lsblk
NAME                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                             8:0    0 931.5G  0 disk
└─sda1                          8:1    0 931.5G  0 part
  └─md1                         9:1    0 931.4G  0 raid1
    └─md1_crypt               253:3    0 931.4G  0 crypt
      └─raid_crypt_vg-data_lv 253:4    0 931.4G  0 lvm   /raid
sdb                             8:16   0 931.5G  0 disk
└─sdb1                          8:17   0 931.5G  0 part
  └─md1                         9:1    0 931.4G  0 raid1
    └─md1_crypt               253:3    0 931.4G  0 crypt
      └─raid_crypt_vg-data_lv 253:4    0 931.4G  0 lvm   /raid
sdc                             8:32   0 465.8G  0 disk
├─sdc1                          8:33   0   953M  0 part  /boot
└─sdc2                          8:34   0 464.8G  0 part
  └─sdc2_crypt                253:0    0 464.8G  0 crypt
    ├─system_crypt_vg-data_lv 253:1    0   447G  0 lvm   /
    └─system_crypt_vg-swap_lv 253:2    0  17.8G  0 lvm   [SWAP]

... और निम्न Ubuntu 18.04.2 LTS में कीस्क्रिप्ट (!) के साथ/etc/crypttab डिक्रिप्शन मैजिक करता है :

$ cat /etc/crypttab
# <target name> <source device>                           <key file> <options>
sdc2_crypt      UUID=[...]                                none       luks,discard,keyscript=/etc/decryptkeydevice/decryptkeydevice_keyscript.sh
md1_crypt       /dev/md1                                  none       luks,discard,keyscript=/etc/decryptkeydevice/decryptkeydevice_keyscript.sh,initramfs

ध्यान दें कि sdc2_cryptप्रदान किए गए कीस्क्रिप्ट के साथ डिक्रिप्शन initramfs विकल्प के बिना काम करता है (क्योंकि इसमें रूट fs शामिल है और इस प्रकार "स्वचालित रूप से" initramfs बूट चरण में माना जाता है)। md1_cryptकेवल initramfs बूट चरण के दौरान (और इस प्रकार क्रिप्टैब एंट्री के अनुसार कीस्क्रिप्ट के साथ) पहले ही डिक्रिप्ट कर दिया गया था, जब मैंने इनट्रैमफैट विकल्प जोड़ा था। सिस्टमड बूट चरण के दौरान md1_crypt का बाद का डिक्रिप्ट क्रिप्टैब में दिए गए की -स्क्रिप्ट के साथ काम नहीं करता है क्योंकि "सिस्टमड क्रायसेपसेटअप" विकल्प कीस्क्रिप्ट का समर्थन नहीं करता है, https://github.com/systemd/systemd/pull/3007 देखें

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