OpenLDAP, सांबा और पासवर्ड उम्र बढ़ने


13

मैं एक ऐसी प्रणाली को कॉन्फ़िगर कर रहा हूं जिसमें सभी आईटी संसाधन एकल उपयोगकर्ता-पासवर्ड जोड़ी के माध्यम से उपलब्ध हैं, यह सर्वर पर शेल तक पहुंच हो सकता है, सांबा डोमेन, वाईफाई, ओपनवीपीएन, मेंटिस, आदि में प्रवेश कर सकता है (शासित विशिष्ट सेवाओं तक पहुंच के साथ। समूह सदस्यता या उपयोगकर्ता ऑब्जेक्ट फ़ील्ड द्वारा)। क्योंकि हमारे पास हमारे नेटवर्क में व्यक्तिगत डेटा है, हमें यूरोपीय संघ के डेटा संरक्षण निर्देश (या इसके बजाय पोलिश संस्करण) के अनुसार, उम्र बढ़ने को लागू करने की आवश्यकता है।

समस्या यह है कि LDAP में सांबा और पोसिक्स खाते अलग-अलग पासवर्ड हैशिंग और एजिंग जानकारी का उपयोग करते हैं। पासवर्ड को स्वयं सिंक्रनाइज़ करना आसान है ( ldap password sync = Yesइन smb.conf), पासवर्ड उम्र बढ़ने को मिक्स में जोड़ना चीजों को तोड़ता है: सांबा शैडोलैस्टचेंज को अपडेट नहीं करता है। साथ में obey pam restrictions = Yesएक प्रणाली बनाता है जिसमें एक विंडोज़ उपयोगकर्ता वृद्ध पासवर्ड नहीं बदल सकता है, लेकिन अगर मैं इसका उपयोग नहीं करता हूं, तो होम निर्देशिकाएं स्वचालित रूप से नहीं बनाई जाएंगी। पासवर्ड बदलने के लिए एलडीएपी विस्तारित ऑपरेशन का उपयोग करने का विकल्प है, लेकिन smbk5pwdमॉड्यूल इसे सेट नहीं करता है। क्या बुरा है, OpenLDAP अनुरक्षक इसे अद्यतन नहीं करेगा / पैच स्वीकार करेगा क्योंकि इस क्षेत्र को पदावनत माना जाता है।

तो, मेरा सवाल है, सबसे अच्छा समाधान क्या है? उनमें से अप और डाउनसाइड क्या हैं?

  1. LDAP ppolicyऔर आंतरिक LDAP पासवर्ड का उपयोग करें ?

    1. एनएसएस, पीएएम मॉड्यूल, सांबा, अन्य प्रणालियों के साथ यह कितनी अच्छी तरह काम करता है?
    2. क्या एनएसएस और पीएएम मॉड्यूलों को विशेष रूप से पॉलीपीरी का उपयोग करने के लिए कॉन्फ़िगर करने की आवश्यकता है, न कि छाया?
    3. क्या GOsa with पॉलीपीस के साथ काम करता है ?
    4. क्या अन्य प्रशासनिक उपकरण हैं जो कार्य-योग्य ppolicyLDAP के साथ काम कर सकते हैं ?
  2. एक साथ एक पासवर्ड पासवर्ड स्क्रिप्ट को हैक करें जो LDAP में फ़ील्ड को अपडेट करता है। (इस संभावना को छोड़कर कि उपयोगकर्ता स्वयं पासवर्ड बदले बिना क्षेत्र को अपडेट करेगा)


यह एक मास्टर-लिखित प्रश्न है। काश मैं इसके साथ आपकी मदद कर
पाता

जवाबों:


1

मैंने अपना खुद का OpenLDAP ओवरले लिखा जब भी एक EXOP पासवर्ड परिवर्तन होता है shadowlastchange, तो shadowLastChangeविशेषता को अपडेट करने के लिए कहा जाता है। इसमें सक्रिय है slapd.conf:

moduleload smbk5pwd
moduleload shadowlastchange
...

database bdb
...
overlay smbk5pwd
overlay shadowlastchange

मैंने smb.confEXOP के माध्यम से पासवर्ड बदलने के लिए कॉन्फ़िगर किया है:

ldap passwd sync = Only

फिर, प्रत्येक खाते के लिए, shadowMaxएक पासवर्ड मान्य दिनों की संख्या पर सेट है। OpenLDAP मॉड्यूल बाकी की देखभाल करते हैं!


क्या आपने इसे एक साथ चलाने की कोशिश की है?
ह्यूबर्ट करियो

नहीं, कृपया इसे आज़माएं और मुझे बताएं कि यह कैसे चलता है।
२००:०२ से २००

यह ppolicyया तो दिखता है या smbk5pwdडेबियन निचोड़ में ओपनडैप को अपडेट करता है shadowLastChange। देवन के लिए!
ह्यूबर्ट करियो

1

स्टॉप-गैप के रूप में मैंने सांबा के लिए स्क्रिप्ट बनाई जो shadowLastChangeपासवर्ड परिवर्तन पर अपडेट होगी :

#!/bin/sh
# script to update shadowLastChange when samba updates passwords
# it's not needed when using 'passwd', it does update the field,
# even if pam_ldap is using LDAP Extented Operation to change password

LDAP_MODIFY="/usr/bin/ldapmodify"
LDAP_SEARCH="/usr/bin/ldapsearch"
LDAP_USER="uid=shadow-update,ou=Services,dc=example,dc=com"
LDAP_PASSWORD="change-me"
LDAP_HOST="localhost"

# get date
SLC=$((`date '+%s'` / 24 / 3600))

# get user login name
user=$1

# find user's DN
dn=$($LDAP_SEARCH -x -h $LDAP_HOST -LLL -b dc=example,dc=com "(uid=$user)" dn)
dn=${dn#dn:}

# check if DN is not base64 encoded
if [ "${dn:0:1}" = ":" ]; then
        # update password change date
        echo "dn:$dn
changetype: modify
replace: shadowLastChange
shadowLastChange: $SLC" | cat | $LDAP_MODIFY -x -h "$LDAP_HOST" \
 -D "$LDAP_USER" -w "$LDAP_PASSWORD" > /dev/null 2>&1
else
        # update password change date
        echo "dn: $dn
changetype: modify
replace: shadowLastChange
shadowLastChange: $SLC" | cat | $LDAP_MODIFY -x -h "$LDAP_HOST" \
 -D "$LDAP_USER" -w "$LDAP_PASSWORD" > /dev/null 2>&1
fi

err=$?

if [ ! $err -eq 0 ]; then
   echo "error: can't update shadowLastChange: $err"
   echo "`date`: shadow.sh: can't update shadowLastChange: $err"\
       >> /var/log/shadow-update.log
   exit;
fi

echo OK

सांबा में यह जरूरत विन्यास unix password syncकरने के लिए सेट yes, passwd chatकरने के लिए सेट *OK*और passwd programसाथ ऊपर स्क्रिप्ट को "%u"परम के रूप में।

LDAP_USERएलडीएपी में बनाए जाने की जरूरत है और uidसांबा के सभी उपयोगकर्ताओं और पढ़ने के अधिकार पर पढ़ने की अनुमति दी गई है shadowLastChange


1

(कार्य प्रगति पर है, मैं बाद में विवरण जोड़ूंगा)

सबके लिए अच्छी खबर है! मुझे पूरा काम मिला, कमोबेश ..., परीक्षण के माहौल में ...:

  1. पासवर्ड नीति (गुणवत्ता और समय-वार दोनों) OpenLDAP स्तर पर लागू की जाती है (धन्यवाद ppolicy, not24getऔर passwdqc)
  2. पासवर्ड दोनों तरीकों से सांबा और पोसिक्स के बीच सिंक्रनाइज़ किए जाते हैं (धन्यवाद smbk5pwd)। नोट: गुणवत्ता की सांबा और ppolicy साथ जाँच गैर स्पष्ट है: password check script( pwqcheck -1से passwdqc) एक ही चेकों LDAP करता है प्रदर्शन करने की जरूरत है या उपयोगकर्ता एक अनुमति के बजाय अस्वीकृत हो जाएगा "बहुत आसान पासवर्ड, अलग कोशिश"।
  3. पीएएम और सांबा दोनों ने उपयोगकर्ता को चेतावनी दी है कि पासवर्ड जल्द ही समाप्त हो जाएगा।
  4. उपयोगकर्ता निर्देशिकाओं का उपयोग कर बनाया जाता हैpam_mkhomedir
  5. RFC2307bis (और संबद्ध स्कीमा) का GOsa GO कार्यान्वयन uidसमूह प्रविष्टियों में सम्मिलित होता है, इसलिए NIS (अधिकांश "UNIXy" सामान) या RFC2307bis स्कीमा (अधिकांश "AD के लिए डिज़ाइन किए गए" अनुप्रयोग) से अपेक्षा करने वाले अनुप्रयोग ठीक काम करते हैं।

एकमात्र समस्या यह है कि किसी खाते को अक्षम करने के लिए CLI टूल (या GOsa पोस्टमॉडिफ़ स्क्रिप्ट लिखना) का उपयोग करने की आवश्यकता होती है या खाता केवल PAM और सांबा के लिए LDAP स्तर पर लॉक नहीं किया जाएगा। पासवर्ड की समाप्ति अभी भी लागू होगी, इसलिए यह एक बड़ी समस्या नहीं है।


0

मुझे गोसा डेवलपर्स में से एक से जवाब मिला है। इस समय गोएसा किसी भी तरह से पॉलीपीस ओवरले का समर्थन नहीं करता है।

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