USB टोकन का उपयोग करके साइट पर दो-कारक प्रमाणीकरण। अब लिनक्स के लिए


हमारे पिछले लेखों में से एक में, हमने कंपनी कॉर्पोरेट पोर्टल्स पर दो-कारक प्रमाणीकरण के महत्व के बारे में बात की थी। पिछली बार, हमने IIS वेब सर्वर में सुरक्षित प्रमाणीकरण को कॉन्फ़िगर करने का तरीका दिखाया।

टिप्पणियों में, हमें लिनक्स के लिए सबसे आम वेब सर्वर के लिए निर्देश लिखने के लिए कहा गया था - नग्नेक्स और अपाचे।

आपने पूछा - हमने लिखा है।

आरंभ करने के लिए आपको क्या चाहिए?


  • किसी भी आधुनिक लिनक्स वितरण। मैंने एमएक्स लिनक्स 18.2_x64 पर एक परीक्षण सेटअप किया। यह निश्चित रूप से एक सर्वर वितरण नहीं है, लेकिन डेबियन के लिए शायद ही कोई मतभेद हैं। अन्य वितरणों के लिए, पुस्तकालयों / विन्यासों के मार्ग थोड़े भिन्न हो सकते हैं।
  • टोकन। हम पीकेआई रुटोकन ईडीएस मॉडल का उपयोग करना जारी रखते हैं, जो कॉर्पोरेट अनुप्रयोगों के लिए उच्च गति प्रदर्शन के लिए आदर्श रूप से अनुकूल है।
  • लिनक्स पर टोकन के साथ काम करने के लिए, आपको निम्नलिखित पैकेजों को स्थापित करना होगा:
    libccid libpcsclite1 PCcd PCc- उपकरण खुलता है


प्रमाण पत्र लेखन


पिछले लेखों में, हमने इस तथ्य पर भरोसा किया कि Microsoft CA का उपयोग करके सर्वर और क्लाइंट प्रमाणपत्र जारी किए जाएंगे। लेकिन चूंकि हम लिनक्स में सब कुछ कॉन्फ़िगर कर रहे हैं, उसी समय हम इन प्रमाणपत्रों को जारी करने के लिए एक वैकल्पिक तरीके के बारे में बात करेंगे - लिनक्स छोड़ने के बिना।
हम XCA को CA ( https://hohnstaedt.de/xca/ ) के रूप में उपयोग करेंगे, जो किसी भी आधुनिक लिनक्स वितरण में उपलब्ध है। XCA में हम जो भी कार्य करेंगे, वे सभी कमांड लाइन मोड में OpenSSL और pkcs11-tool उपयोगिताओं का उपयोग करके भी किए जा सकते हैं, लेकिन सरलता और स्पष्टता के लिए, हम उन्हें इस लेख में नहीं देंगे।

शुरुआत हो रही है


  1. सेट करें:

    $ apt-get install xca 
  2. और चलाएं:

     $ xca 
  3. हम CA - /root/CA.xdb के लिए अपना डेटाबेस बनाते हैं
    हम अनुशंसा करते हैं कि आप प्रमाणपत्र प्राधिकरण डेटाबेस को एक फ़ोल्डर में संग्रहीत करें जहां केवल व्यवस्थापक की पहुंच हो। रूट प्रमाणपत्रों की निजी कुंजियों की सुरक्षा के लिए यह महत्वपूर्ण है, जिनका उपयोग अन्य सभी प्रमाणपत्रों पर हस्ताक्षर करने के लिए किया जाता है।

कुंजी बनाएं और CA प्रमाणपत्र को रूट करें


सार्वजनिक कुंजी अवसंरचना (PKI) एक पदानुक्रमित प्रणाली पर आधारित है। इस प्रणाली का केंद्र मूल प्रमाणीकरण प्राधिकरण या रूट सीए है। उसका प्रमाण पत्र पहले बनाना होगा।

  1. हम CA के लिए RSA-2048 निजी कुंजी बनाते हैं। ऐसा करने के लिए, निजी कुंजी टैब पर, नई कुंजी पर क्लिक करें और उपयुक्त प्रकार का चयन करें।
  2. नई कुंजी जोड़ी के लिए एक नाम सेट करें। मैंने उसे फोन किया - सीए की।
  3. बनाई गई कुंजी जोड़ी का उपयोग करके, हम स्वयं CA प्रमाण पत्र लिखते हैं। ऐसा करने के लिए, प्रमाणपत्र टैब पर जाएं और नया प्रमाणपत्र पर क्लिक करें।
  4. SHA-256 का चयन करना सुनिश्चित करें, क्योंकि SHA-1 का उपयोग करना अब सुरक्षित नहीं माना जा सकता है।
  5. टेम्पलेट के रूप में, [डिफ़ॉल्ट] CA का चयन करना सुनिश्चित करें सभी को लागू करने के लिए मत भूलना, अन्यथा टेम्पलेट लागू नहीं होता है।
  6. विषय टैब पर, हमारी कुंजी जोड़ी चुनें। वहां आप प्रमाण पत्र के सभी मुख्य क्षेत्रों को भर सकते हैं।


कुंजियाँ और https सर्वर प्रमाणपत्र बनाएँ


  1. इसी तरह, हम सर्वर के लिए आरएसए -2048 निजी कुंजी बनाते हैं, मैंने इसे कहा - सर्वर कुंजी।
  2. प्रमाण पत्र बनाते समय, हम चुनते हैं कि सीए प्रमाणपत्र पर सर्वर प्रमाण पत्र पर हस्ताक्षर किए जाने चाहिए।
  3. SHA-256 चुनना न भूलें।
  4. टेम्पलेट के रूप में, [डिफ़ॉल्ट] HTTPS_server चुनेंअप्लाई ऑल पर क्लिक करें
  5. फिर, विषय टैब पर, हमारी कुंजी चुनें और आवश्यक फ़ील्ड भरें।


हम उपयोगकर्ता के लिए कुंजी और प्रमाण पत्र बनाते हैं


  1. उपयोगकर्ता की निजी कुंजी हमारे टोकन पर संग्रहीत की जाएगी। इसके साथ काम करने के लिए, आपको हमारी साइट से PKCS # 11 लाइब्रेरी स्थापित करने की आवश्यकता है। लोकप्रिय वितरणों के लिए, हम तैयार किए गए पैकेज वितरित करते हैं जो यहां पड़े हैं - https://www.rutoken.ru/support/download/pkcs/ । हमारे पास arm64, armv7el, armv7hf, e2k, mipso32el है, जो हमारे SDK - https://www.rutoken.ru/developers/sdk/ में लिए जा सकते हैं। लिनक्स के लिए असेंबलियों के अलावा, macOS, फ्रीबस और एंड्रॉइड के लिए असेंबलियां भी हैं।
  2. नए PKCS # 11 प्रदाता को XCA में जोड़ें। ऐसा करने के लिए, PKCS # 11 प्रदाता टैब पर विकल्प मेनू पर जाएं।
  3. जोड़ें पर क्लिक करें और PKCS # 11 लाइब्रेरी के लिए पथ चुनें। मेरे मामले में यह \ usr \ lib \ librtpkcs11ecp.so है।
  4. हमें रॉटोकन ईडीएस पीकेआई का एक स्वरूपित टोकन चाहिए। RtAdmin उपयोगिता डाउनलोड करें - https://dev.rutoken.ru/pages/viewpage.action?pageId=9999515
  5. हम बाहर ले जाते हैं

     $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN- > 
  6. कुंजी के प्रकार के रूप में हम चुनते हैं - PKI रुटोकन ईडीएस पर RSA-2048 कुंजी। मैंने इस कुंजी को क्लाइंट कुंजी का नाम दिया है।

  7. पिन कोड दर्ज करें। और हम कुंजी जोड़ी के हार्डवेयर पीढ़ी के पूरा होने की प्रतीक्षा कर रहे हैं

  8. हम सर्वर प्रमाण पत्र के साथ सादृश्य द्वारा उपयोगकर्ता के लिए प्रमाण पत्र बनाते हैं। इस बार [डिफ़ॉल्ट] HTTPS_client टेम्पलेट का चयन करें और सभी को लागू करने के लिए क्लिक करना न भूलें।
  9. विषय टैब पर, उपयोगकर्ता जानकारी दर्ज करें। हम टोकन के लिए प्रमाण पत्र को बचाने के अनुरोध के लिए सकारात्मक जवाब देते हैं।

नतीजतन, XCA में सर्टिफिकेट टैब पर, आपको कुछ इस तरह से मिलना चाहिए।


कुंजियों और प्रमाणपत्रों का यह न्यूनतम सेट सीधे सर्वर स्थापित करने के लिए पर्याप्त है।

कॉन्फ़िगर करने के लिए, हमें CA प्रमाणपत्र, सर्वर प्रमाणपत्र और सर्वर निजी कुंजी निर्यात करने की आवश्यकता है।

ऐसा करने के लिए, XCA में उपयुक्त टैब पर वांछित प्रविष्टि का चयन करें और निर्यात करें पर क्लिक करें।

nginx


नगनेक्स सर्वर को कैसे स्थापित और चलाया जाए, मैंने नहीं लिखा - इस विषय पर इंटरनेट पर पर्याप्त लेख हैं, आधिकारिक दस्तावेज का उल्लेख करने के लिए नहीं। एचटीटीपीएस और टू-फैक्टर टोकन प्रमाणीकरण स्थापित करने के लिए नीचे उतरें।

निम्न पंक्तियाँ nginx.conf में सर्वर सेक्शन में जोड़ें:

 server { listen 443 ssl; ssl_verify_depth 1; ssl_certificate /etc/nginx/Server.crt; ssl_certificate_key /etc/nginx/ServerKey.pem; ssl_client_certificate /etc/nginx/CA.crt; ssl_verify_client on; } 

Nginx में ssl विन्यास से संबंधित सभी मापदंडों का विस्तृत विवरण यहां पाया जा सकता है - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl-client_certificate

मैं केवल उन लोगों का संक्षेप में वर्णन करूंगा जो मैंने खुद से पूछे थे:

  • ssl_verify_client - बताता है कि प्रमाणपत्र ट्रस्ट श्रृंखला को सत्यापित करने की आवश्यकता है।
  • ssl_verify_depth - श्रृंखला में विश्वसनीय रूट प्रमाणपत्र खोज की गहराई निर्धारित करता है। चूँकि हमारे क्लाइंट सर्टिफिकेट को तुरंत रूट सर्टिफिकेट पर साइन किया जाता है, इसलिए गहराई 1. पर सेट की जाती है। यदि यूजर सर्टिफिकेट किसी इंटरमीडिएट सीए पर साइन किया जाता है, तो 2 को इस पैरामीटर में निर्दिष्ट किया जाना चाहिए, और इसी तरह।
  • ssl_client_certificate - विश्वसनीय रूट प्रमाणपत्र के लिए पथ निर्दिष्ट करता है, जिसका उपयोग उपयोगकर्ता प्रमाणपत्र में विश्वास को सत्यापित करने के लिए किया जाता है।
  • ssl_certificate / ssl_certificate_key - सर्वर प्रमाणपत्र / निजी कुंजी के लिए पथ को दर्शाता है।

यह जांचने के लिए नगणक्स-टी चलाना न भूलें कि कॉन्फ़िगरेशन में कोई टाइपोस नहीं हैं, और सभी फाइलें जहां आवश्यक हैं और इसी तरह।

और वास्तव में सब कुछ! जैसा कि आप देख सकते हैं, सेटअप बहुत सरल है।

फ़ायरफ़ॉक्स में काम की जाँच करना


चूंकि हम सब कुछ पूरी तरह से लिनक्स पर कर रहे हैं, हम मान लेंगे कि हमारे उपयोगकर्ता लिनक्स पर भी काम करते हैं (यदि उनके पास विंडोज है, तो पिछले लेख में ब्राउज़र स्थापित करने के निर्देश देखें

  1. हम फ़ायरफ़ॉक्स शुरू करते हैं।
  2. आइए शुरुआत में बिना टोकन के लॉग इन करने का प्रयास करें। हम निम्नलिखित चित्र प्राप्त करते हैं:

  3. के बारे में जाने: वरीयताएँ # गोपनीयता , और सुरक्षा उपकरणों पर जाएं ...
  4. नए PKCS # 11 डिवाइस ड्राइवर को जोड़ने के लिए लोड पर क्लिक करें और हमारे librtpkcs11ecp.so के लिए पथ निर्दिष्ट करें।
  5. यह प्रमाणित करने के लिए कि प्रमाणपत्र दिखाई दे रहा है, आप प्रमाणपत्र प्रबंधक के पास जा सकते हैं। आपको एक पिन कोड के लिए संकेत दिया जाता है। सही प्रविष्टि के बाद, आप यह सत्यापित कर सकते हैं कि आपके प्रमाणपत्र टैब पर एक टोकन के साथ हमारा प्रमाणपत्र दिखाई दिया है।
  6. अब हम टोकन लेकर चलते हैं। फ़ायरफ़ॉक्स एक प्रमाणपत्र चुनने का सुझाव देता है जिसे सर्वर पर चुना जाएगा। हमारा प्रमाण पत्र चुनें।

  7. लाभ!


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

अपाचे


नगनेक्स के साथ, किसी को भी अपाचे स्थापित करने में समस्या नहीं होनी चाहिए। यदि आप नहीं जानते कि इस वेब सर्वर को कैसे स्थापित किया जाए, तो बस आधिकारिक दस्तावेज का उपयोग करें।

और हम अपने HTTPS और दो-कारक प्रमाणीकरण को कॉन्फ़िगर करना शुरू कर रहे हैं:

  1. सबसे पहले आपको mod_ssl सक्रिय करना होगा:

     $ a2enmod ssl 
  2. और फिर डिफ़ॉल्ट HTTPS साइट सेटिंग सक्षम करें:

     $ a2ensite default-ssl 
  3. अब कॉन्फ़िगरेशन फ़ाइल संपादित करें: /etc/apache2/sites-enabled/default-ssl.conf:

      SSLEngine on SSLProtocol all -SSLv2 SSLCertificateFile /etc/apache2/sites-enabled/Server.crt SSLCertificateKeyFile /etc/apache2/sites-enabled/ServerKey.pem SSLCACertificateFile /etc/apache2/sites-enabled/CA.crt SSLVerifyClient require SSLVerifyDepth 10 

    जैसा कि आप देख सकते हैं, मापदंडों के नाम लगभग nginx में मापदंडों के नामों के साथ मेल खाते हैं, इसलिए मैं उन्हें नहीं समझाऊंगा। फिर से, किसी को भी विवरण में दिलचस्पी - प्रलेखन में आपका स्वागत है।
    अब हमारे सर्वर को पुनः आरंभ करें:

     $ service apache2 reload $ service apache2 restart 


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

Source: https://habr.com/ru/post/hi457886/


All Articles