LVM और LUKS को ऑटोडेक्क्रिप्ट विभाजन में कैसे कॉन्फ़िगर करें?


21

मैंने हाल ही में पूर्ण lvm एन्क्रिप्शन (सेटअप से स्थापित) के साथ ubuntu सर्वर 11.04 स्थापित किया है। मैं चाहता हूं कि स्वचालित अनलॉक करने के लिए एक महत्वपूर्ण फ़ाइल का उपयोग करें। मैंने इस गाइड http://ubuntuforums.org/showthread.php?t=837416 का अनुसरण करने की कोशिश की है

मैंने इस कमांड के साथ एक कुंजी उत्पन्न की: sudo dd if=/dev/urandom of=/boot/grub/keyfile bs=1024 count=4

मैंने इसे अंदर डाला /boot/grubक्योंकि मुझे लगता है कि यह एन्क्रिप्टेड नहीं है। जब मैं इस कमोड के साथ कुंजी जोड़ने की कोशिश करता sudo cryptsetup luksAddKey /dev/sdX /boot/grub/keyfile हूं तो यह मुझसे पासफ़्रेज़ के लिए पूछता है और जब मैंने इसे डाला तो कुछ भी नहीं हुआ, स्क्रीन पर कुछ भी नहीं छपा है! मैं इसे अनदेखा करता हूं और दूसरों के कदमों को जारी रखता हूं और रिबूट करता हूं, लेकिन ऐसा कुछ नहीं हुआ और यह पासफ्रेज के लिए कहता है।

सहायता के लिए धन्यवाद ।


क्या आपका मतलब है बिना पासफ़्रेज़ दर्ज किए डिक्रिप्ट? यदि बूट प्रक्रिया ऐसा कर सकती है, तो वॉल्यूम को डिक्रिप्ट करने के लिए आवश्यक कुंजी बूट के दौरान सुलभ सिस्टम पर होनी चाहिए। आप कैसे उम्मीद करेंगे कि आप डेटा चोरी से बचा सकें?
जेम्स हेनस्ट्रिज सेप

हाँ, मुझे लगता है कि मैं कुंजी को एक छिपे हुए विभाजन या एक USB फ्लैश ड्राइव में डालूँगा। क्या यह संभव है ?
इस्मान

समस्या यह है कि यदि बूट लोडर कुंजी का पता लगा सकता है, तो कोई व्यक्ति (अनएन्क्रिप्टेड) ​​बूट कोड का निरीक्षण कर सकता है। यदि आप USB स्टिक पर कुंजी स्टोर करते हैं, तो आप यह सुनिश्चित करना चाहते हैं कि स्टिक कंप्यूटर के साथ चोरी न हो। यदि आप केवल बूट के दौरान छड़ी को प्लग करने जा रहे हैं, तो यह पासफ़्रेज़ दर्ज करने से अधिक सुविधाजनक नहीं है।
जेम्स हेनस्ट्रिज सेप

ऑटोडेक्रिप्ट को कैसे रोकें: askubuntu.com/questions/615408/…
Ciro Santilli 中心 ec ec ec 事件

जवाबों:


27

मैं सिर्फ अपने नए होम सर्वर पर इसके माध्यम से गया हूं, इसमें बहुत अधिक गूगुलिंग और अनुमान लगाया गया है, लेकिन मुझे यह काम कर रहा है। मैं यहाँ चरणों को पुन: पेश करने का प्रयास करूँगा। मैं Ubuntu सर्वर 11.10 का उपयोग कर रहा हूं, और एन्क्रिप्टेड LVM का उपयोग करते हुए बहुत अधिक मानक इंस्टॉल के साथ शुरू किया है, इसलिए मैं बस वहां से किए गए परिवर्तनों से संबंधित हूं।

सेट अप:

  • / dev / sda1 मेरा अनएन्क्रिप्टेड / बूट पार्टीशन है
  • / dev / sda5 मेरा lvm विभाजन है जिसमें सब कुछ शामिल है - रूट, स्वैप और होम
  • / dev / sdc1 मेरे USB फ्लैश ड्राइव पर विभाजन है जहां मैं कीफाइल को स्टोर करूंगा

सबसे पहले, मैंने अपने होम डायरेक्टरी में एक कीफाइल बनाया,:

dd if=/dev/urandom of=keyfile bs=512 count=4

(आप एक बड़ी कुंजी के लिए एक बड़ा blockize या गिनती का उपयोग कर सकते हैं)

क्रायसिपेटअप को नई कुंजी बताएं (यह ऐसी सामग्री है जो महत्वपूर्ण है, फ़ाइल नाम नहीं):

sudo cryptsetup luksAddKey /dev/sda5 keyfile

फिर, मैंने ext2 के साथ अपनी USB फ्लैश ड्राइव को स्वरूपित किया और इसे एक लेबल दिया। मैंने एक लेबल का उपयोग किया, ताकि बाद में मैं इसे लेबल द्वारा माउंट कर सकूं, और यूएसबी फ्लैश ड्राइव को बदलने के मामले में कुछ गलत हो जाता है।

sudo mkfs -t ext2 /dev/sdc1
sudo e2label /dev/sdc1 KEYS

(बेशक, आपका डिवाइस अलग-अलग होगा)

अब, रूट मोड 400 के स्वामित्व वाले USB फ्लैश ड्राइव में कीफाइल की प्रतिलिपि बनाएँ:

mkdir KEYS
sudo mount /dev/sdc1 KEYS
sudo cp keyfile KEYS
sudo chown root KEYS/keyfile
sudo chmod 400 KEYS/keyfile

संशोधित करें / etc / crypttab। मेरा मूल रूप से निहित है

sd5_crypt UUID=(...) none luks

जिसे मैंने बदल दिया

sd5_crypt UUID=(...) /dev/disk/by-label/KEYS:/keyfile luks,keyscript=/lib/cryptsetup/scripts/passdev

अंत में, initramfs अपडेट करें:

sudo update-initramfs -uv

अब यह USB फ्लैश ड्राइव पर कीफाइल का उपयोग करके बूट करता है। यदि मैं फ्लैश ड्राइव को हटा देता हूं (कहते हैं, जब मैं छुट्टी पर जाता हूं) तो यह बूट नहीं करता है और मेरा डेटा सुरक्षित है।

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


3
यदि आप सुनिश्चित नहीं हैं कि पासवर्ड प्रॉम्प्ट कैसे प्राप्त करें, तो आप एक वैकल्पिक initramfs के माध्यम से लोड करने के लिए फ्लैश ड्राइव में बूट करने योग्य विभाजन का उपयोग कर सकते हैं जो कि कीफाइल के लिए दिखता है और हार्ड डिस्क पर डिफ़ॉल्ट बूट लोड होता है जो नियमित initramfs के लिए संकेत देता है। एक पासवर्ड।
मोनिका को बहाल करना - 14--

1
@ 3pic मुझे 100% यकीन नहीं है क्योंकि मैंने कई महीने पहले ऐसा किया था। लेकिन उबंटू एक वर्चुअल फाइल सिस्टम में बूट होता है। keyscript=/lib/cryptsetup/scripts/passdevइसमें passdevस्क्रिप्ट जोड़ता है। और फिर update-initramfs -uvफ़ाइल सिस्टम आर्काइव का पुनर्निर्माण करता है।
वरुणअगव

1
@ रंडीऑरिसन यह वास्तव में बहुत अच्छा है। यह काम करता हैं। लेकिन ... इसके बाद यह इनट्राम्राम हो जाता है, फिर यह मिनट या दो मिनट के लिए बैठता है A start job is running for dev-sda8:-keyfile.device (1min 18s...)आदि। यह गुजरता है, सब कुछ घुड़सवार होता है, लेकिन यह थोड़ी देर के लिए लटका रहता है। लॉग का कहना है "डिवाइस देव-sda8 के इंतजार में समय समाप्त हो गया: -sda7keyfile.device; sda7crypt के लिए क्रिप्टो सेटअप के लिए निर्भरता विफल रही।" बेशक, यह पहले से ही इनट्राम द्वारा घुड़सवार था, लेकिन .... मैं क्या गलत कर रहा हूं?
हिच

1
किसी कारण से यह systemd के साथ पसंद / काम नहीं करता है; यह keyscriptपूरी तरह से क्षेत्र की उपेक्षा करेगा ।
एटिएन ब्रुइन्स

1
उबंटू 17.10+ में, अपडेट-इनट्राम्राम्स टूल एक इनट्राम्राम्स इमेज उत्पन्न नहीं करेगा जो एक ल्यूक वॉल्यूम को बूट करने में सक्षम है यदि आपका रूट फाइल सिस्टम एक ल्यूक वॉल्यूम पर है और एक कुंजी फ़ाइल है। आप इसे "कोई नहीं" कीफाइल मान के रूप में छोड़ कर कार्य कर सकते हैं, और कीस्क्रिप्ट = / etc / my-keycript होने के लिए विकल्पों को सेट कर सकते हैं, जहां / etc / my-keycript एक शेल स्क्रिप्ट है जो कुंजी को प्रिंट करता है।
मैकिल

6

Howtoforge.com के इन निर्देशों ने मुझे स्वचालित रूप से डिक्रिप्टिंग वॉल्यूम के साथ ऊपर और चल दिया।

कैसे करें: एक Keyfile के साथ स्वचालित रूप से अनलॉक किए गए ड्राइव को अनलॉक करें

चरण 1: एक यादृच्छिक कीफाइल बनाएं

sudo dd if=/dev/urandom of=/root/keyfile bs=1024 count=4

चरण 2: कीफाइल को केवल रूट करने के लिए पढ़ें

sudo chmod 0400 /root/keyfile

यह कीफाइल को केवल रूट द्वारा पठनीय बनाएगा। अगर किसी को इस कीफाइल की सुविधा मिलती है, तो आपके कंप्यूटर पर वैसे भी बड़ी समस्या है।

वैकल्पिक रूप से अपने इच्छित कीफाइल को रूट: रूट करें और इसे / रूट फ़ोल्डर में ले जाएं

चरण 3: LUKS में कीफाइल जोड़ें

LUKS / dm_crypt सक्षम डिवाइस में 10 अलग-अलग कीफाइल्स / पासवर्ड हो सकते हैं। इसलिए, पहले से ही सेटअप पासवर्ड रखने के बाद हम इस कीफ़ाइल को अतिरिक्त प्राधिकरण विधि के रूप में जोड़ने जा रहे हैं।

sudo cryptsetup luksAddKey /dev/sdX /root/keyfile

sdX बेशक आपका LUKS डिवाइस है।

पहले आपको ड्राइव को अनलॉक करने के लिए एक (मौजूदा) पासवर्ड दर्ज करने के लिए प्रेरित किया जाएगा। यदि सब कुछ अच्छा है, तो आपको इस तरह एक आउटपुट मिलना चाहिए:

Enter any LUKS passphrase:
key slot 0 unlocked.
Command successful.

चरण 4: एक मैपर बनाएँ

LUKS उपकरणों को एक मैपर बनाने की आवश्यकता होती है जिसे तब fstab में संदर्भित किया जा सकता है। खुला / आदि / क्रिप्टैब

sudo nano /etc/crypttab

और फिर इस तरह एक पंक्ति जोड़ें:

sdX_crypt      /dev/sdX  /root/keyfile  luks

या आप डिवाइस के UUID का उपयोग कर सकते हैं:

sdX_crypt      /dev/disk/by-uuid/247ad289-dbe5-4419-9965-e3cd30f0b080  /root/keyfile  luks

sdX_crypt उस मैपर का नाम है जिसे बनाया जा रहा है। आप यहाँ किसी भी नाम का उपयोग कर सकते हैं जैसे "संगीत" या "फ़िल्में" या "sfdsfawe" ...।

फ़ाइल को सहेजें और ctrl-x जारी करके बंद करें, दर्ज करें, दर्ज करें। Ctrl-x नैनो को बंद कर देता है, लेकिन पहले यह फाइल को बचाने के लिए कहता है [Yes = enter] और नाम क्या होगा [उसी नाम = enter]।

हमने वास्तव में वहां जो किया है, वह बता रहा है कि ड्राइव को अनलॉक करने के लिए पासवर्ड प्रविष्टि के बजाय रूट / कीफाइल का उपयोग किया जाएगा।

चरण 5: डिवाइस को fstab में माउंट करें

अब, हमारे पास एक अनलॉक डिवाइस है (ठीक है, अभी तक नहीं लेकिन जब सिस्टम बूट हो रहा है) और हमें अभी इसे माउंट करने की आवश्यकता है। खुला / आदि / fstab:

sudo nano /etc/fstab

और एक नई प्रविष्टि जोड़ें:

/dev/mapper/sdX_crypt  /media/sdX     ext3    defaults        0       2

सुनिश्चित करें कि आपके पास सही मैपर नाम है जिसे आपने चरण 4 में जोड़ा है। यह भी सुनिश्चित करें कि माउंट पॉइंट / फ़ोल्डर मौजूद है। इसे जोड़ने के बाद, फ़ाइल को फिर से सहेजें और इसे बंद करें (ctrl-x, enter, enter)।

चरण 6: रिबूट या रिमाउंट

बस। अब आप रिबूट कर सकते हैं और अतिरिक्त उपकरणों को ऑटो-अनलॉक और माउंट किया जाना चाहिए। आप सभी उपकरणों को हटाकर इसका परीक्षण भी कर सकते हैं:

sudo mount -a

1
आप अपडेट करना भूल जाते हैं initramfs, 100% जरूरत है
3pic

6

रैंडी ऑरिसन के जवाब में सुधार करते हुए , यहां मैंने एक छोटी स्क्रिप्ट बनाई है, जो कि कीफाइल को खोजने में विफल होने पर उपयोगकर्ता से पासवर्ड मांगने के लिए सिस्टम को कम कर देगी।

#!/bin/sh

ask_for_password () {
    cryptkey="Unlocking the disk $cryptsource ($crypttarget)\nEnter passphrase: "
    if [ -x /bin/plymouth ] && plymouth --ping; then
        cryptkeyscript="plymouth ask-for-password --prompt"
        cryptkey=$(printf "$cryptkey")
    else
        cryptkeyscript="/lib/cryptsetup/askpass"
    fi
    $cryptkeyscript "$cryptkey"
}

device=$(echo $1 | cut -d: -f1)
filepath=$(echo $1 | cut -d: -f2)

# Ask for password if device doesn't exist
if [ ! -b $device ]; then
    ask_for_password
    exit
fi

mkdir /tmp/auto_unlocker
mount $device /tmp/auto_unlocker

# Again ask for password if device exist but file doesn't exist
if [ ! -e /tmp/auto_unlocker$filepath ]; then
    ask_for_password
else
    cat /tmp/auto_unlocker$filepath
fi

umount /tmp/auto_unlocker

यह सहेजें और की जगह keyscript=/lib/cryptsetup/scripts/passdevमें /etc/crypttabइस फ़ाइल और चलाने के लिए पथ के साथ sudo update-initramfs -uvऔर आपका काम हो गया।


मुझे लगता है कि आपका समाधान एक से अधिक keyfile के लिए usb ड्राइव के लिए काम नहीं कर रहा है। मेरा मतलब है कि अगर मेरे पास एक से अधिक एन्क्रिप्टेड पार्टीशन (होम, स्वैप, रूट) हैं। यह कहता है कि यह कैट कमांड के बाद USB ड्राइवर को अनमाउंट नहीं करता है। क्या आपके पास इसे ठीक करने का कोई विचार है?
खामिदुल्ला

यह मेरे लिए काम कर रहा है (Xubuntu 17.10) लेकिन मुझे ग्रब को संपादित करना था और "स्प्लैश" को हटाना था। इसके अलावा, मुझे फ़ाइल को एक उचित स्थान (/ lib / cryptsetup / script / unlock_custom) में सहेजना था और इसे 755 पर चोदना था। यह सुनिश्चित नहीं था कि विशिष्ट स्थान पर छप या नकल होने से यह मेरे लिए काम कर रहा है, लेकिन यह पहले नहीं हुआ था। वैसे भी, यह काम करता है, लेकिन बूट करने के बाद, Startet AppArmor initialization.मुझे मिलता है: देव-डिस्क कीफ़िले.देविस (1 मीटर 30 मी) के लिए एक शुरुआत का काम चल रहा है। 90 के दशक के बाद एक्स शुरू होता है और मैं अपने सिस्टम का उपयोग कर सकता हूं ... कोई भी विचार नहीं है कि इस स्टार्ट जॉब को कैसे ठीक किया जाए ...
फायरप्लेस

1

@ डिच मेरे पास @Randy Orrison जैसा ही सेटअप था और उसी मुद्दे में आप के रूप में भाग गया और यह पता चला कि सिस्टमड का एक बग है जो / filesystem को फिर से माउंट करने की कोशिश करता है क्योंकि यह / etc / crypttab में संबंधित प्रविष्टि पाता है।

इसे हल करने के लिए मैंने अपडेट / initramfs -uv कमांड चलाने के बाद बस sda5_crypt के लिए / etc / crypttab से प्रविष्टि हटा दी।

रिबूट और सब कुछ ठीक काम करता है।

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