तीन-चरण प्रमाणीकरण?


9

मैं उबंटू का इस्तेमाल कर रहा हूं।

मैं सोच रहा हूं कि क्या यह संभव है कि लिबपाम-गूगल-ऑथेंटेटर हो (जो आपको आपके फोन द्वारा उत्पन्न कोड का उपयोग करने में लॉग इन करता है) और प्रमाण पत्र प्रमाणीकरण एक साथ काम करने के लिए सेट किया गया है, और यदि यह संभव है, तो मैं कैसे जाऊंगा इसे स्थापित करना। इस प्रकार - मेरे खाते में लॉग इन करने के लिए, आपको मेरा पासवर्ड, मेरा फोन (और उसका पासकोड) और मेरा प्रमाण पत्र / निजी कुंजी और उसका पासवर्ड रखना होगा।

मैंने दोनों को स्वतंत्र रूप से काम करने के लिए तैयार किया है, लेकिन उन्हें कभी भी एक साथ काम करने में सक्षम नहीं किया गया है। मुझे यकीन है कि किसी तरह यह संभव है, हालांकि।

धन्यवाद।


आमतौर पर आप डुप्लिकेट कारकों से ज्यादा हासिल नहीं करते हैं। एक प्रमाण पत्र और कोड जनरेटर 'आपके पास कुछ है' कारक फिट बैठता है। एक पासवर्ड 'कुछ आप जानते हैं' फिट बैठता है। अन्य सामान्य कारक 'कुछ तुम हो' (बायोमेट्रिक्स) है।
रात में 'जूलैच

जवाबों:


8

पीएएम मॉड्यूल को एक साथ जोड़कर ऐसा करना संभव है। लेकिन इससे पहले कि मैं किसी भी विवरण में शामिल होऊं:

गलत तरीके से PAM कैन और WILL आपको अपने सिस्टम में लॉग इन करने से रोकेगा

शुक्र है कि आप हमेशा एकल उपयोगकर्ता मोड में बूट कर सकते हैं और समस्या को ठीक कर सकते हैं, लेकिन बस चेतावनी दी जाए कि PAM कुछ ऐसा नहीं है जिसे आप आवश्यकता से अधिक गड़बड़ करना चाहते हैं।

वैसे भी, इसके पीछे विचार यह है कि यह सुनिश्चित करने के लिए स्टैकिंग पीएएम मॉड्यूल का उपयोग करना संभव है pam-google-authenticator, pam_unix(यह आपके पासवर्ड की जांच करता है) और प्रमाणपत्र मॉड्यूल सभी को आपको एक्सेस करने की अनुमति देने में सफल होना है। डिफ़ॉल्ट रूप से, PAM को किसी भी प्रमाणीकरण मॉड्यूल को प्रमाणित करने की अनुमति देने के लिए कॉन्फ़िगर किया गया है, दूसरों को लंघन।

/Etc/pam.d/common-auth में, आप शीर्ष रेखा के पास देखेंगे जो निम्न के जैसा दिखता है:

auth    [success=2 default=ignore]  pam_unix.so nullok_secure try_first_pass

यह पीएएम को बताता है कि pam_unix.soसफल होना चाहिए , यह अगले दो नियमों को छोड़ देगा (जो आमतौर पर एक और प्रमाणीकरण मॉड्यूल हैं और फिर pam_deny.so) और वैकल्पिक मॉड्यूल के लिए आगे बढ़ें। हालांकि, क्या मॉड्यूल विफल होना चाहिए, फिर इसे नजरअंदाज कर दिया जाएगा, और नियंत्रण श्रृंखला में अगले मॉड्यूल पर पारित होगा। यह प्रत्येक प्रमाणीकरण मॉड्यूल को तब तक जारी रखता है जब तक कि वैकल्पिक ब्लॉक पर नियंत्रण नहीं हो जाता है, या PAM pam_deny.so को हिट कर देता है और वहीं विफल हो जाता है।

यह सुनिश्चित करने के लिए इसका लाभ उठाया जा सकता है pam-google-authenticator, pam_unix.soऔर आपके प्रमाणपत्र PAM मॉड्यूल को आपको एक्सेस करने की अनुमति देने में सफल होना चाहिए। मुझे Google प्रमाणक मॉड्यूल या आपके द्वारा उपयोग किए जा रहे प्रमाणपत्र मॉड्यूल का नाम नहीं पता है, लेकिन आपको उन्हें अपनी सामान्य-फ़ाइल में ढूंढने में सक्षम होना चाहिए। तो शीर्ष पर इस तरह से कुछ रखकर:

auth    requisite   pam_unix.so nullok_secure
auth    requisite   pam_google_authenticator.so
auth    requisite   pam_certificate_auth.so
auth    [success=<n>]   pam_permit.so

जगह <n>pam_permit.so मॉड्यूल यहाँ और अगले के बीच मॉड्यूल की संख्या के साथ pam_permit.soमॉड्यूल - दूसरे शब्दों में यह करने के लिए सर्वोच्च प्रमाणन मॉड्यूल के सेट किए जाने चाहिए [सफलता = n डिफ़ॉल्ट = उपेक्षा] कोड + 1. इस वाक्य रचना थोड़ा अजीब है , लेकिन उपरोक्त मॉड्यूल के सफल होने के बाद अनिवार्य रूप से स्कीम मॉड्यूल को छोड़ देता है।

बेशक, आप सोच रहे होंगे कि इस तीन-चरण प्रमाणीकरण को केवल अपने उपयोगकर्ता खाते में कैसे सीमित किया जाए। यह एक pam_succeed_if.soमॉड्यूल के साथ किया जा सकता है , और ऊपर वर्णित तीन-चरण वाले ऑर्थोक ब्लॉक के ऊपर डाला जाना चाहिए:

auth    [success=ignore default=4]  pam_succeed_if.so user = <username>

<username>आपके उपयोगकर्ता नाम की जगह कहां है। यह पंक्ति बस यह कहती है कि pam_succeed_if.so सफल होना चाहिए (उर्फ आपका उपयोगकर्ता नाम उस रेखा पर उपयोगकर्ता नाम से मेल खाता है) तो PAM को अगले मॉड्यूल के साथ आगे बढ़ना चाहिए, जो कि तीन-चरणीय मॉड्यूल हैं। अन्यथा, पीएएम को असली मॉड्यूल पर कूदना चाहिए, जो इस एक से 4 मॉड्यूल दूर हैं।

कई चीजों से मेल खाने के लिए, एक निश्चित उपयोगकर्ता नाम के साथ समूह की सदस्यता के लिए, कई लाइनों का उपयोग किया जाना चाहिए, उदाहरण के लिए:

auth    [success=1 default=ignore]  pam_succeed_if.so user = <username>
auth    [success=ignore default=4]  pam_succeed_if.so user ingroup <group>

इनमें से किसी को भी करने से पहले, मैं सामान्य-ओरिजनल फ़ाइल का बैकअप ले लूंगा, और अपने आप को सिंगल यूज़र मोड से परिचित करवाऊँगा और इमरजेंसी की स्थिति में पुरानी फाइल को कैसे रिस्टोर करूँगा। यह कॉन्फ़िगरेशन मेरे द्वारा परीक्षण नहीं किया गया है, लेकिन यह काम करना चाहिए।

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

pam_succeed_if.soमॉड्यूल के लिए पूर्ण प्रलेखन http://linux.die.net/man/8/pam_succeed_if पर पाया जा सकता है


बहुत बढ़िया जवाब! अगर मैं इसे एक से अधिक बार बढ़ा सकता हूं, तो मैं करूंगा।
हारून मिलर

धन्यवाद! हालांकि - प्रमाण पत्र लॉगिन के लिए मैं .ssh में मेरी सार्वजनिक कुंजी जोड़ रहा / authorized_keys (RSAAuthentication और sshd_config में PubkeyAuthentication सेटिंग्स का उपयोग कर) और OTP कोड के लिए मैं pam_google_authenticator उपयोग कर रहा हूँ - google-authenticator.googlecode.com/hg । तो वह काम कैसे होगा?
जेसी डब्ल्यू

@JesseW काम करने के लिए आपको PAM के साथ-साथ एक सार्वजनिक कुंजी का उपयोग करने के लिए SSHD सेट करना होगा। हालाँकि मुझे विशेष पर यकीन नहीं है, फिर भी आपको निश्चित रूप से 'हां' को सेट करना होगा ChallengeResponseAuthenticationऔर UsePAMफिर मेरे उत्तर में दी गई पंक्तियों को /etc/pam.d/sshd या /etc/pam.d/common में ऊपर सेट करना होगा। -औथ, इस पर निर्भर करता है कि आप या तो सभी लॉगिन के लिए प्रदर्शन करना चाहते हैं या सिर्फ एसएसएच। याद रखें कि 'pam_certificate_auth.so' भराव लाइन को हटा दें और परिणामस्वरूप [सफलता = <n> रेखा को संशोधित करें।
Xenopathic

2

मैंने इस पोस्ट को पढ़ा और सोचा कि यह अच्छा लग रहा था - यहां बताया गया है कि मुझे काम करने के लिए तीन-कारक प्रमाणीकरण कैसे मिला। मैंने यहाँ इसके बारे में एक ब्लॉग पोस्ट लिखा था ।

मूल रूप से, मैंने PAM में Google प्रमाणक और पासवर्ड सेट किया है, फिर बाद में OpenSSH में सार्वजनिक कुंजी प्रमाणीकरण स्थापित किया है (यह दो अन्य को दरकिनार करता है), और अंततः OpenSSH द्वारा PAM (अंतिम पंक्ति) के माध्यम से प्रमाणित करने के लिए आवश्यक है

से / etc / ssh / sshd_conf

PubkeyAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

1

केवल Pubkey + GoogleAuth को आपको अपने /etc/pam.d/sshd के शीर्ष पर जोड़ना होगा

#auth    requisite    pam_unix.so nullok_secure #if you want password, too :)
auth    requisite    pam_google_authenticator.so
auth    [success=2]  pam_permit.so

मुझे लगता है कि आपके पास OpenSSH> = 6.2 और sshd_config संपादित है

अधिक पागल सुरक्षा के लिए कुछ अतिरिक्त विन्यास जोड़ें: डी

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