एलडीएपी और पीएएम का उपयोग करके खाता लॉगिन को प्रतिबंधित करना


14

मैं उम्मीद कर रहा था कि कुछ PAM / LDAP गुरु मेरी मदद कर सकते हैं। मैंने हाल ही में अपने दोनों ग्राहकों (वेब-आधारित प्रणालियों के साथ उपयोग करने के लिए) और कर्मचारियों (जिन्हें एसएसएच के माध्यम से लॉगिन करने की आवश्यकता होगी) के लिए खातों को रखने के लिए उबंटू सर्वर पर एक एलडीएपी निर्देशिका स्थापित की है।

LDAP प्रमाणीकरण पूरी तरह से काम कर रहा है। हालांकि मैं खाता काम प्रतिबंध नहीं मिल सकता है: स्टाफ खातों के बीच आईडी होगा 2001और 2999और के एक सदस्य हो जाएगा ssh-usersसर्वरों के लिए लॉग इन करने के लिए उन्हें अनुमति देने के लिए समूह।

प्रश्न में प्रतिबंध हैं /etc/ldap.conf, और हैं pam_min_uid, pam_max_uidऔर pam_groupdn

pam_groupdnमेरे ssh-usersसमूह में पूर्ण DN शामिल है । pam_min_uid= 2000और pam_max_uid= 2999

अब, मैं उन्हें जोड़कर काम करने में कामयाब रहा:

account [success=1 default=ignore] pam_ldap.so

में pam_unix.soलाइन के ऊपर /etc/pam.d/common-account। हालाँकि, स्थानीय यूनिक्स खाते तब लॉगिन नहीं कर सकते हैं: जैसे ही वे कोशिश करते हैं, SSH सर्वर कनेक्शन को मार देता है।

मैंने उपरोक्त फ़ाइल में pam_ldap.soमॉड्यूल सेट किया है sufficient, लेकिन तब अमान्य उपयोगकर्ताओं को यह कहते हुए एक संदेश मिलता है कि वे लॉगिन नहीं कर सकते, लेकिन यह उन्हें वैसे भी लॉग इन करता है।

इसलिए, मैं इन खाता प्रतिबंधों को LDAP उपयोगकर्ताओं के लिए कैसे निर्धारित कर सकता हूं, जबकि अभी भी UNIX उपयोगकर्ताओं को लॉगिन करने की अनुमति है?

जैसा कि आप शायद अनुमान लगा सकते हैं कि मैं पीएएम के लिए नौसिखिया हूं, हालांकि मैं "स्वचालित रूप से घर की निर्देशिका बनाने" मॉड्यूल काम करने में कामयाब रहा हूं :-)

बहुत धन्यवाद, एंडी

जवाबों:


11

PAM में एक्सेस कंट्रोल लिस्ट (कम से कम उबंटू) के आधार पर एक्सेस को प्रतिबंधित करने की क्षमता है, जैसे कि kubanskamac का उत्तर (+1) समूहों को पॉज़िक्स समूहों के रूप में मानता है, चाहे वे LDAP /etc/groupया NIS में संग्रहीत हों ।

/etc/security/access.confपहुँच सूची फ़ाइल है। मेरी फाइल में, मैं अंत में डाल दिया:

-:ALL EXCEPT root sysadmin (ssh-users):ALL

यह रूट, sysadmin और समूह ssh-users (जो LDAP में है) को छोड़कर सभी को नकार देता है जहाँ भी वे लॉगिन करते हैं (दूसरा ALL)।

फिर मेरी PAM खाता फ़ाइल में (यह एक खाता मॉड्यूल है), मैं बहुत अंत में जोड़ता हूं:

account required pam_access.so

जो PAM को इस फ़ाइल का उपयोग करने के लिए कहता है। यह एक इलाज काम करता है :-)


यह ध्यान देने योग्य है कि आपको अपने PAM खाता फ़ाइल की शुरुआत में pam_access.so डालने की आवश्यकता हो सकती है ताकि यह प्रभावी हो सके।
21

5

मैं बस उपयोग करेंगे

auth required    pam_listfile.so   sense=accept item=group file=/etc/groups.allow onerr=fail

केवल विशिष्ट समूहों (दोनों स्थानीय और LDAP समूहों के लिए) को अनुमति देने के लिए। इस तरह आपको कुछ भी निर्दिष्ट नहीं करना है ldap.conf

यदि आप प्राधिकरण को अपने तरीके से रखना चाहते हैं, तो आपको "खाता" पास पर उपयोगकर्ताओं को फ़िल्टर नहीं करना चाहिए। मेरा मानना ​​है कि आपको इसे "सामान्य" पास पर करना चाहिए। दूसरे, जैसा कि आप स्वयं देख सकते हैं, pam_unix स्थानीय और LDAP दोनों खातों (कम से कम "खाता" पास) पर प्रक्रिया करता है, इसलिए ऐसा लगता है कि pam_ldap की बिल्कुल भी आवश्यकता नहीं है।

संपादित करें: तीसरा, यदि आप "खाता" पास (जो मुझे लगता है कि अजीब दुष्प्रभाव हो सकते हैं) पर सामान रखने पर जोर देते हैं, तो आपका अनुक्रम समाप्त होना चाहिए: ..., "पर्याप्त pam_ldap", "आवश्यक pam_localuser", "आवश्यक pam_unix" । मेरा मतलब है, यदि आपके पास कोई अन्य मॉड्यूल है, तो उन्हें pam_ldap से पहले स्थानांतरित करें - अन्यथा "पर्याप्त" खंड के कारण उन्हें LDAP खातों के लिए अनदेखा किया जाएगा।


मुझे लगता है कि pam_unix खाता जानकारी को पुनः प्राप्त करने के लिए getent कॉल्स का उपयोग कर रहा है - जो कि /etc/nsswitch.conf में LDAP का उपयोग करता है। उन पंक्तियों को libpam-ldap पैकेज इंस्टॉलर द्वारा PAM कॉन्फिग फाइलों में जोड़ा गया था। Pam_groupdn की डिफ़ॉल्ट कार्रवाई कुछ भी नहीं कर रही थी, और जवाब खोजते समय, किसी ने कहा कि यह तब तक प्रभावी नहीं होगा जब तक कि "खाता" पास के दौरान pam_ldap.so मॉड्यूल का उपयोग नहीं किया गया था। यदि संभव हो तो मैं ldap.conf में सेटिंग रखना चाहूंगा क्योंकि यह विशेष रूप से LDAP से संबंधित है।
एंडी शेलम

(1) आप pam_unix के बारे में सही हैं। (2) मैं pam_localuser सलाह के साथ अपने उत्तर को अपडेट कर रहा हूं।
कुबंज़िक

PAM के बारे में मैंने जो कुछ पढ़ा है, वह बताता है कि खाता इसके लिए सही खंड है। विशेषाधिकार - उपयोगकर्ता को पहचानता है और खाता खाता प्रमाणित करता है - उपयोगकर्ता खाता विशेषताओं की जाँच करता है, जैसे पासवर्ड की उम्र बढ़ने, लॉगिन समय प्रतिबंध और दूरस्थ लॉगिन प्रतिबंध यह कोई प्रमाणीकरण समस्या नहीं है - क्योंकि उपयोगकर्ता नाम / पासवर्ड सही है, और उपयोगकर्ता हो सकता है पहचान की। यह एक खाता प्रतिबंध है क्योंकि मैं नहीं चाहता कि कुछ खाते लॉगिन करने में सक्षम हों।
एंडी शेलम

0

बस @ और-शेलम में जोड़ने के लिए, यहाँ मेरी common-accountफ़ाइल है:

account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 default=ignore]            pam_ldap.so
account requisite                     pam_deny.so
account required                      pam_access.so
account required                      pam_permit.so
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.