Yubikey दो-कारक प्रमाणीकरण पूर्ण डिस्क एन्क्रिप्शन LUKS के माध्यम से


27

मैंने हाल ही में एक Yubikey Neo हासिल की है - एक निफ्टी थोड़ा हार्डवेयर सेकंड फैक्टर ऑथेंटिकेशन डिवाइस। यह मुख्य रूप से वन टाइम पासवर्ड और उभरते हुए U2F प्रोटोकॉल के साथ उपयोग के लिए है - लेकिन Yubikey संस्करण 2 के बाद से यह HMAC-SHA1 चुनौती-प्रतिक्रिया प्रमाणीकरण का भी समर्थन करता है। HMAC-SHA1 एक गुप्त कुंजी (Yubikey के अंदर संग्रहीत) को जोड़ती है और प्रतिक्रिया उत्पन्न करने के लिए इसे पासफ़्रेज़ के साथ जोड़ती है।

मैं अपने एन्क्रिप्टेड हार्ड ड्राइव के साथ 2FA का उपयोग करने के लिए अपने Ubuntu FDE सेटअप के साथ Yubikey को कैसे जोड़ सकता हूं?

जवाबों:


30

PrivacyIdea नाम के एक समूह ने initramfs में HMAC-SHA1 चुनौती-प्रतिक्रिया दिनचर्या को जोड़ने के लिए एक छोटा सा पैकेज बनाया है , जिसका अर्थ है कि उबंटू आपको Yubikey को पास करने की चुनौती के लिए क्वेरी कर सकता है और फिर LUKS वॉल्यूम अनलॉक करने के लिए प्रतिक्रिया का उपयोग कर सकता है। अधिकांश भाग के लिए, मैं इन निर्देशों का पालन कर रहा हूं , कुछ जोड़ा टिप्पणियों के साथ। प्रक्रिया वास्तव में करना बहुत आसान है।

मैंने इसे Ubuntu 14.04, 16.04 और 18.04 पर परीक्षण किया है; एक Yubikey नियो का उपयोग करना। यह फर्मवेयर 2.0+ के साथ, और उबुन्टु के किसी भी संस्करण के साथ 14.04 के बाद किसी भी हाल के Yubikey के साथ काम करना चाहिए। मैंने उबंटू 19.04 को एक यूबिकी 5 सी के साथ भी परीक्षण किया है, कुछ अतिरिक्त काम की आवश्यकता थी लेकिन इसे काम करने के लिए बनाया जा सकता है। इसमें अन्य हार्डवेयर HMAC-SHA1 चुनौती-प्रतिक्रिया उपकरण भी हो सकते हैं, जिनके साथ यह काम करता है, लेकिन मैं किसी भी मौजूद नहीं हूं। हमेशा की तरह, सुनिश्चित करें कि आगे बढ़ने से पहले आपके पास अपने डेटा का बैकअप होना चाहिए - यहाँ कोई समस्या नहीं होनी चाहिए, लेकिन हमेशा ऐसा मौका होता है कि यह आपके कंप्यूटर पर सब कुछ नष्ट कर देगा। ये निर्देश बिना किसी वारंटी के आते हैं।

अपडेट: Ubuntu 16.04 के बाद से, आवश्यक पैकेज मुख्य रिपॉजिटरी में हैं और किसी PPA की आवश्यकता नहीं है।

यदि आपके कोई प्रश्न हैं तो टिप्पणी जोड़ें!


0. आवश्यक शर्तें

इस काम के लिए, आपके पास पहले से ही LUKS फुल-डिस्क एन्क्रिप्शन सेट अप और काम करना होगा। आप उबंटू स्थापित करते समय उपयुक्त विकल्प का चयन करके ऐसा कर सकते हैं। अधिकतम सुरक्षा के लिए, आपके पास इंस्टॉल के दौरान बहुत मजबूत पासफ़्रेज़ होना चाहिए। यदि आपका पासफ़्रेज़ खरोंच तक नहीं है, तो आपको इसे जारी रखने से पहले इसे बेहतर तरीके से बदलना चाहिए ( अधिक विस्तृत निर्देश यहां )।

नीचे दी गई विधि किसी भी मौजूदा पासफ़्रेज़ की जगह नहीं लेगी, बल्कि LUKS स्लॉट में से किसी एक में एक और पासफ़्रेज़ जोड़ देगी। इसलिए यदि आप अपनी Yubikey खो देते हैं, तब भी आप किसी भी मौजूदा पासफ़्रेज़ का उपयोग करके अपने कंप्यूटर को अनलॉक कर सकते हैं - मेरा सुझाव है कि आप इसे नोट कर लें और इसे कहीं सुरक्षित रूप से छिपा दें - आपको इस प्रक्रिया के दौरान कुछ बार इसकी आवश्यकता भी होगी। आपकी नई Yubikey चुनौती पासफ़्रेज़ अभी भी यथोचित रूप से मजबूत होनी चाहिए, लेकिन उबंटू को स्थापित करते समय आपके द्वारा उपयोग किए जाने वाले पासफ़्रेज़ के रूप में लंबे समय तक नहीं होना चाहिए।


1. PrivacyIdea पीपीए जोड़ें और पैकेज स्थापित करें

उबुन्टु 14.04 पर

एक टर्मिनल खोलें, और निम्न कमांड चलाएँ:

sudo add-apt-repository ppa:privacyidea/privacyidea 

संकेत मिलने पर एंटर दबाएं, फिर चलाएं:

sudo apt-get update

इसके बाद पैकेज स्थापित करें:

sudo apt-get install yubikey-luks

उबंटू 16.04, 18.04 पर

पीपीए की कोई आवश्यकता नहीं है, आप पैकेज को इसके साथ स्थापित कर सकते हैं:

sudo apt-get install yubikey-luks

उबंटू 19.04 पर

उबंटू 19.04 के लिए स्रोत से पैकेज बनाने के तरीके के लिए यह उत्तर देखें yubikey-luks


2. Yubikey सॉफ्टवेयर इंस्टॉल करें

यदि आप किसी अन्य चीज़ के लिए Yubikey की HMAC-SHA1 कार्यक्षमता का उपयोग कर रहे हैं, तो आप इस अनुभाग को छोड़ सकते हैं। यह दूसरे Yubikey स्लॉट में किसी भी कॉन्फ़िगरेशन को मिटा देगा, इसलिए यदि आप इस Yubikey के साथ अन्य उद्देश्यों के लिए HMAC-SHA1 का उपयोग करते हैं , तो इस चरण को निष्पादित करें।

आपको उबंटू के साथ काम करने के लिए उबंटू के साथ काम करने की आवश्यकता होगी, या तो यूबिको पीपीए से उबंटू 14.04 पर या मुख्य उबुन्या भंडार से 16.04 पर और बाद में स्थापित करना होगा।

उबुन्टु 14.04 पर

यदि आपने पहले ऐसा नहीं किया है, तो PPA जोड़ें और पैकेज को इसके साथ स्थापित करें:

sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt-get install yubikey-personalization

उबंटू में 16.04, 18.04 (और बाद में)

sudo apt-get install yubikey-personalization

3. HMAC-SHA1 के लिए प्रारंभिक Yubikey स्लॉट

अब हमें HMAC-SHA1 कॉन्फ़िगरेशन के साथ Yubikey के दूसरे स्लॉट को प्रोग्राम करने की आवश्यकता है। यह आपके पिछले स्लॉट कॉन्फ़िगरेशन को मिटा देगा, जो डिफ़ॉल्ट रूप से खाली है। फिर, यदि आप HMAC-SHA1 का उपयोग किसी और चीज के लिए कर रहे हैं, तो यह कमांड जारी नहीं करता है - यह आपके कॉन्फ़िगरेशन को मिटा देगा। आप अपने अन्य उपयोगों के लिए इस LUKS सेटअप के लिए Yubikey के अंदर समान गुप्त कुंजी का सुरक्षित रूप से उपयोग कर सकते हैं। (उदाहरण के लिए, LUKS + Yubikey का उपयोग कर दूसरे कंप्यूटर के साथ)।

ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

टर्मिनल किए गए परिवर्तनों के बारे में कुछ जानकारी प्रदर्शित करेगा। आपको इसे नोट करने की आवश्यकता नहीं है, लेकिन यह एक चुनौती दिए जाने पर प्रतिक्रिया की गणना करने के लिए HMAC-SHA1 एल्गोरिथ्म में Yubikey द्वारा उपयोग की गई गुप्त कुंजी दिखाएगा।


4. LUKS स्लॉट में Yubikey को एनरोल करें

अब हम Yubikey से डिक्रिप्शन कुंजी में से एक के रूप में प्रतिक्रिया को जोड़ने के लिए LUKS कॉन्फ़िगरेशन को संपादित करेंगे।

जिस विभाजन को हमें निर्दिष्ट करने की आवश्यकता है, वह इस बात पर निर्भर करता है कि आप अपनी मशीन को बूट करने के लिए BIOS या UEFI का उपयोग कर रहे हैं या नहीं। BIOS के लिए, एन्क्रिप्टेड वॉल्यूम /dev/sda5डिफ़ॉल्ट रूप से है, UEFI के लिए यह पर है /dev/sda3। आप disksउपयोगिता को खोलकर और विभाजन के मार्ग की पुष्टि करके इसकी जांच कर सकते हैं - यह या तो होना चाहिए sda3या sda5नोट: NVMe डिस्क के साथ नए कंप्यूटर पर, पथ कुछ इस तरह होगा /dev/nvme0n1p3

इसे टर्मिनल में चलाएं:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7

यह एलयूकेएस कॉन्फ़िगरेशन के स्लॉट 7 को लिखेगा, इंस्टॉलर में संकेतों का पालन करेगा (वे आपके द्वारा चलाए जा रहे संस्करण के आधार पर थोड़ा भिन्न होते हैं)।

फिर तुम सब हो गया! आपको अपने कंप्यूटर को रिबूट करने में सक्षम होना चाहिए, और यदि आपका Yubikey डाला गया है, तो आप अपने चुनौती पासवर्ड में टाइप कर सकते हैं और LUKS विभाजन को अनलॉक करने और सिस्टम को बूट करने के लिए दूसरे कारक के रूप में Yubikey का उपयोग कर सकते हैं। एक बार जब आप हार्ड ड्राइव को डिक्रिप्ट कर लेते हैं तो आप Yubikey को हटा सकते हैं।

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


एन्क्रिप्शन चुनौती पासफ़्रेज़ बदलना

बाद की तारीख में पासवर्ड बदलना काफी सरल है, बस इस कमांड का उपयोग गुप्त कुंजी को रीसेट करने के लिए करें। गुप्त कुंजी को रीसेट करना पूरी तरह से आवश्यक नहीं है, लेकिन यह चोट नहीं पहुंचाएगा। ध्यान रखें कि यह पिछली गुप्त कुंजी को नष्ट कर देगा, यदि आप इस Yubikey के साथ किसी और चीज के लिए HMAC-SHA1 का उपयोग करते हैं तो ऐसा न करें। (उदाहरण के लिए, LUKS + Yubikey का उपयोग कर दूसरे कंप्यूटर के साथ)।

 ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

फिर, चरण 4 के समान , एलयूकेएस कुंजी स्लॉट में एक नया पासवर्ड दर्ज करने के लिए, इसके अलावा इसके लिए स्लॉट 7 को स्पष्ट करने का विकल्प छोड़कर:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c

जब Enter any remaining passphraseआपसे कहा जाए , तो अपने बैकअप पासफ़्रेज़ का उपयोग करें - न कि यूबीकी चुनौती पासफ़्रेज़। फिर एक नई Yubikey चुनौती पासफ़्रेज़ दर्ज करें , दो बार, फिर अंत में आपको एक बार बैकअप पासफ़्रेज़ दर्ज करने की आवश्यकता होगी।

अब आपकी पुरानी Yubikey चुनौती पासफ़्रेज़ हटा दी गई है और केवल आपका नया हार्ड ड्राइव को डिक्रिप्ट करेगा। आपका पिछला बैकअप पासफ़्रेज़ अब भी वही रहेगा। आप चरण 0 में दिए गए लिंक का अनुसरण करके उस पासफ़्रेज़ को बदल सकते हैं ।


सुरक्षा निहितार्थ पर ध्यान दें

Yubikey को जोड़ने से आपके सिस्टम में एक निश्चित स्तर की सुरक्षा बढ़ेगी - किसी को दोनों चुनौती पासफ़्रेज़ को जानना होगा और आपकी Yubikey को आपकी हार्ड ड्राइव को अनलॉक करने में सक्षम होना होगा (या अपना प्रारंभिक पासफ़्रेज़ ढूंढें, जिसे आप अब बैकअप के रूप में उपयोग कर रहे हैं) । हालांकि, किसी हमलावर के लिए तकनीकी रूप से संभव है कि हार्ड ड्राइव को डिक्रिप्ट करें यदि वे आपकी चुनौती पासफ़्रेज़ को जानते हैं (उदाहरण के लिए, "कंधे सर्फिंग" जब आप इसे टाइप करते हैं) और केवल थोड़े समय के लिए अपने Yubikey तक पहुंच प्राप्त कर सकते हैं। चुनौती पासफ़्रेज़ का उपयोग करके वे Yubikey से प्रतिक्रिया प्राप्त कर सकते हैं और इसे संग्रहीत कर सकते हैं, और फिर इसका उपयोग Yubikey के बिना किसी भी समय हार्ड ड्राइव को डिक्रिप्ट करने के लिए कर सकते हैं। या फिर, अगर कोई हमलावर या मालवेयर का एक टुकड़ा आपके पासफ्रेज को जानता था और आपकी यूबीकी से जुड़ी मशीन पर कोड चलाने में सक्षम था, तो वे चुनौती जारी कर सकते हैं और प्रतिक्रिया को स्टोर कर सकते हैं। इसलिए अपनी चुनौती पासफ़्रेज़ में प्रवेश करते समय, और यह सुनिश्चित करने के लिए कि आपके पास हमेशा सुरक्षित स्थान पर Yubikey है, यह सुनिश्चित करना अभी भी बेहद महत्वपूर्ण है। आपको केवल उस मशीन में प्लग करना चाहिए जिसे आप भरोसा करते हैं। यदि आप अपने Yubikey का ट्रैक खो देते हैं और संदेह करते हैं कि कोई व्यक्ति इसका उपयोग डिक्रिप्शन कुंजी सीखने की कोशिश करने के लिए कर रहा है, तो Yubikey के अंदर गुप्त कुंजी को रीसेट करने के लिए फिर से चरण 2 और 3 निष्पादित करें और एक नई चुनौती पासफ़्रेज़ चुनें। ध्यान दें कि यदि एक विरोधी ने आपके पासफ़्रेज़ में से एक (याबिके से एचएमएसी-एसएचए 1 प्रतिक्रिया, या आपका बैकअप) सीखने में कामयाबी हासिल की है, तो वे एलयूकेएस मास्टर कुंजी का बैकअप बना सकते हैं, और उसके बाद भी अपनी हार्ड ड्राइव को डिक्रिप्ट करने के लिए उपयोग करें। आप भविष्य में पासफ़्रेज़ को बदलते हैं। और यह सुनिश्चित करने के लिए कि आपके पास हमेशा सुरक्षित स्थान पर Yubikey है। आपको केवल उस मशीन में प्लग करना चाहिए जिसे आप भरोसा करते हैं। यदि आप अपने Yubikey का ट्रैक खो देते हैं और संदेह करते हैं कि कोई व्यक्ति इसका उपयोग डिक्रिप्शन कुंजी सीखने की कोशिश करने के लिए कर रहा है, तो Yubikey के अंदर गुप्त कुंजी को रीसेट करने के लिए फिर से चरण 2 और 3 निष्पादित करें और एक नई चुनौती पासफ़्रेज़ चुनें। ध्यान दें कि यदि एक विरोधी ने आपके पासफ़्रेज़ में से एक (याबिके से एचएमएसी-एसएचए 1 प्रतिक्रिया, या आपका बैकअप) सीखने में कामयाबी हासिल की है, तो वे एलयूकेएस मास्टर कुंजी का बैकअप बना सकते हैं, और उसके बाद भी अपनी हार्ड ड्राइव को डिक्रिप्ट करने के लिए उपयोग करें। आप भविष्य में पासफ़्रेज़ को बदलते हैं। और यह सुनिश्चित करने के लिए कि आपके पास हमेशा सुरक्षित स्थान पर Yubikey है। आपको केवल उस मशीन में प्लग करना चाहिए जिसे आप भरोसा करते हैं। यदि आप अपने Yubikey का ट्रैक खो देते हैं और संदेह करते हैं कि कोई व्यक्ति इसका उपयोग डिक्रिप्शन कुंजी सीखने की कोशिश करने के लिए कर रहा है, तो Yubikey के अंदर गुप्त कुंजी को रीसेट करने के लिए फिर से चरण 2 और 3 निष्पादित करें और एक नई चुनौती पासफ़्रेज़ चुनें। ध्यान दें कि यदि एक विरोधी ने आपके पासफ़्रेज़ में से एक (याबिके से एचएमएसी-एसएचए 1 प्रतिक्रिया, या आपका बैकअप) सीखने में कामयाबी हासिल की है, तो वे एलयूकेएस मास्टर कुंजी का बैकअप बना सकते हैं, और उसके बाद भी अपनी हार्ड ड्राइव को डिक्रिप्ट करने के लिए उपयोग करें। आप भविष्य में पासफ़्रेज़ को बदलते हैं। Yubikey के अंदर गुप्त कुंजी को रीसेट करने के लिए चरण 2 और 3 को फिर से निष्पादित करें और एक नई चुनौती पासफ़्रेज़ चुनें। ध्यान दें कि यदि एक विरोधी ने आपके पासफ़्रेज़ में से एक (याबिके से एचएमएसी-एसएचए 1 प्रतिक्रिया, या आपका बैकअप) सीखने में कामयाबी हासिल की है, तो वे एलयूकेएस मास्टर कुंजी का बैकअप बना सकते हैं, और उसके बाद भी अपनी हार्ड ड्राइव को डिक्रिप्ट करने के लिए उपयोग करें। आप भविष्य में पासफ़्रेज़ को बदलते हैं। Yubikey के अंदर गुप्त कुंजी को रीसेट करने के लिए चरण 2 और 3 को फिर से निष्पादित करें और एक नई चुनौती पासफ़्रेज़ चुनें। ध्यान दें कि यदि एक विरोधी ने आपके पासफ़्रेज़ में से एक (याबिके से एचएमएसी-एसएचए 1 प्रतिक्रिया, या आपका बैकअप) सीखने में कामयाबी हासिल की है, तो वे एलयूकेएस मास्टर कुंजी का बैकअप बना सकते हैं, और उसके बाद भी अपनी हार्ड ड्राइव को डिक्रिप्ट करने के लिए उपयोग करें। आप भविष्य में पासफ़्रेज़ को बदलते हैं।Cryptsetup के लिए मैन पेज यह बताता है, luksHeaderBackup अनुभाग देखें। यदि आपको संदेह है कि यह हुआ है, तो आपको अपने डेटा की सुरक्षा के लिए पूरी तरह से नया LUKS वॉल्यूम बनाना होगा।


अद्यतन: मैंने 15.04 के साथ भी यह कोशिश की है, ऐसा लगता है कि पीपीए में आवश्यक पैकेज का निर्माण नहीं है, इसलिए मुझे "ज्वलंत" के बजाय "भरोसेमंद" भंडार का उपयोग करने के लिए सॉफ़्टवेयर स्रोतों में DEB लाइन को बदलना होगा "। इस परिवर्तन को करने के बाद मेरा LUKS + Yubikey सेटअप अब 15.04 पर काम करता है।
seanlano

4
अब प्राइवेसी रेपो का इस्तेमाल न करें! पैकेज अब अपस्ट्रीम डेबियन में निहित है!
कॉर्नेलिनक्स

1
Yubikey के बिना लॉगिन से बचने का एक तरीका है: जब उपयोगकर्ता लॉग इन करता है तो हर बार ल्यूक्स पासफ़्रेज़ को बदलें। यहाँ Gentoo के लिए कार्यान्वयन है: github.com/flowolf/initramfs_ykfde यह उबंटू के लिए थोड़े समय के भीतर अनुकूलित किया जा सकता है।
१/२

1
मुझे लगता है कि वही प्रक्रिया नए 18.04 LTS रिलीज़ के लिए काम करती है?
मार्क वेनस्ट्रा

2
मैंने Ubuntu 18.04 के साथ कोशिश की है और यह ठीक काम करता है।
जेट जूल 28'18

0

Ubuntu 19.04 के लिए अपडेट करें:

ऐसा लगता है कि उबंटू 19.04 (और शायद 18.10, मैंने उस रिलीज़ की कोशिश नहीं की थी) के रूप में, काम करने के लिए cryptsetupकैसे yubikey-luksउपयोग किया जाता है इसे तोड़ने के लिए पर्याप्त रूप से बदल गया है । अपस्ट्रीम रिपॉजिटरी की यह प्रतिबद्धता एक फिक्स को लागू करने के लिए प्रतीत होती है, लेकिन मूल रिपॉजिटरी को अक्टूबर 2018 से अपडेट नहीं किया गया लगता है। मुझे रेपो का यह कांटा मिला, जिसमें फिक्स है, साथ ही कुछ अन्य बिट्स के टिड्डिंग भी हैं। 19.04 तक काम करने वाले एक पैकेज का निर्माण करने में कामयाब रहा।

चूंकि मुझे अपडेट किए गए कांटे का मौजूदा निर्माण नहीं मिला, इसलिए yubikey-luksकाम करने की विधि में स्रोत कोड प्राप्त करना और स्थानीय स्तर पर डीईबी पैकेज का निर्माण करना, फिर इसे स्थापित करना शामिल है।

नीचे दिए गए चरण 1 को छोड़कर, मेरे पिछले उत्तर के चरणों का पालन करें :


1. लुबिके-लुक्स स्रोत प्राप्त करें, पैकेज बनाएं और स्थापित करें

के साथ बिल्ड निर्भरता स्थापित करें:

sudo apt install dh-exec devscripts expect yubikey-personalization

फिर स्रोत संग्रह डाउनलोड करें और निकालें:

mkdir ~/tmp
cd ~/tmp
wget -O yubikey-luks.zip https://github.com/thuandt/yubikey-luks/archive/master.zip
unzip yubikey-luks.zip
cd yubikey-luks-*

के साथ पैकेज बनाएँ:

make builddeb NO_SIGN=1

फिर इसे स्थापित करें:

sudo dpkg -i DEBUILD/yubikey-luks_*.deb

फिर मेरे पहले उत्तर में शेष चरणों का पालन करना जारी रखें।

उम्मीद है कि 19.10 तक yubikey-luksमुख्य उबंटू संग्रह के संस्करण को अपडेट किया जा सकता है ताकि मैन्युअल रूप से निर्माण की आवश्यकता न हो।

एक बोनस के रूप में, नए संस्करण में एक कॉन्फ़िगरेशन फ़ाइल है, जिसे पाया जा सकता है /etc/ykluks.cfg। बूट पर दिखाया गया संदेश इस फ़ाइल में कॉन्फ़िगर किया जा सकता है।

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