OpenLDAP, Samba ve şifre yaşlandırma


13

Tüm BT kaynaklarının tek bir kullanıcı parolası çifti aracılığıyla kullanılabildiği bir sistemi yapılandırıyorum, sunuculardaki kabuğa erişim, Samba etki alanına giriş, WiFi, OpenVPN, Mantis, vb. grup üyeliği veya kullanıcı nesnesi alanlarına göre). Ağımızda kişisel verilerimiz olduğu için, AB Veri Koruma Direktifi'ne (veya daha doğrusu Lehçe sürümüne) göre şifre yaşlandırması uygulamamız gerekiyor.

Sorun, LDAP'deki Samba ve POSIX hesaplarının farklı parola karma ve eskime bilgileri kullanmasıdır. Parolaları kendileri senkronize etmek kolayken ( ldap password sync = Yesin smb.conf), karışıma parola eskimi eklemek işleri bozar: Samba shadowLastChange'i güncellemez. Bununla birlikte obey pam restrictions = Yes, bir windows kullanıcısının eski parolayı değiştiremediği bir sistem oluşturur, ancak kullanmazsam, ev dizinleri otomatik olarak oluşturulmaz. Alternatif olarak, parola değiştirmek için LDAP genişletilmiş işlemini kullanmaktır, ancak smbk5pwdmodül de ayarlamaz. Daha da kötüsü, OpenLDAP sürdürücüsü bu alanı kullanımdan kaldırıldığı kabul edildiğinden güncelleme yapmaz / yamaları kabul etmez.

Benim sorum, en iyi çözüm nedir? Bunların yukarı ve aşağı tarafları nelerdir?

  1. LDAP ppolicyve dahili LDAP şifre yaşlandırması kullanılsın mı?

    1. NSS, PAM modülleri, samba, diğer sistemlerle ne kadar iyi çalışır?
    2. NSS ve PAM modüllerinin gölge yerine ppolicy kullanmak için özel bir şekilde yapılandırılması gerekiyor mu?
    3. GOsa² , ppolicy ile çalışır mı?
    4. ppolicyEtkin LDAP ile çalışabilecek başka yönetim araçları var mı?
  2. LDAP'deki alanı güncelleyen bir şifre değiştirme komut dosyasını birlikte hackleyin. (kullanıcının, şifreyi değiştirmeden alanı güncelleme olasılığı vardır)


Bu ustaca yazılmış bir soru. Keşke size yardımcı olabilseydim ...
gWaldo

Yanıtlar:


1

Bir EXOP parola değişikliği olduğunda özniteliği shadowlastchangegüncelleştirmek için çağrılan kendi OpenLDAP yer paylaşımımı yazdım shadowLastChange. Aktive edildiği yerler slapd.conf:

moduleload smbk5pwd
moduleload shadowlastchange
...

database bdb
...
overlay smbk5pwd
overlay shadowlastchange

smb.confEXOP ile şifreleri değiştirmek için yapılandırdım :

ldap passwd sync = Only

Ardından, her hesap için shadowMaxbir şifrenin geçerli olacağı gün sayısını ayarlayın . OpenLDAP modülleri gerisini halleder!


ppolicy ile birlikte çalıştırmayı denediniz mi?
Hubert Kario

Hayır. Lütfen deneyin ve nasıl gittiğini bana bildirin.
200_success

Debian sıkmak OpenLDAP do güncelleme ppolicyya smbk5pwdbindirme gibi görünüyor . Debian için Yay! shadowLastChange
Hubert Kario

1

Bir durma boşluğu olarak Samba shadowLastChangeiçin parola değişikliğini güncelleyecek komut dosyası oluşturdum :

#!/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

Samba yılında ihtiyacı konfigürasyon dosyasında unix password syncayarlı yes, passwd chatayarlı *OK*ve passwd programyukarıda senaryoya "%u"param olarak.

LDAP_USERLDAP'de belirtilen bir hesabın oluşturulması ve uidtüm Samba kullanıcılarının okuma izni ve yazma hakkı verilmesi gerekir shadowLastChange.


1

(çalışma devam ediyor, daha sonra ayrıntıları ekleyeceğim)

Herkese iyi haberlerimiz var! Her şeyi az çok test ortamında çalıştırdım ...:

  1. Şifre politikası (hem kalite-ve zaman bilge) OpenLDAP düzeyinde uygulanır (sayesinde ppolicy, not24getve passwdqc)
  2. Parolalar Samba ve POSIX arasında her iki şekilde de senkronize edilir (sayesinde smbk5pwd). Not: Kalite Samba ve pPolicy ile kontrol dışı açıktır: password check script( pwqcheck -1dan passwdqc) LDAP yapar aynı denetimleri gerçekleştirmek için gereken veya kullanıcı "çok kolay şifre farklı deneyin" yerine engellendi bir izni alacak.
  3. Hem PAM hem de Samba, parolanın yakında süresinin dolacağı konusunda kullanıcıyı uyarır.
  4. Kullanıcı dizinleri aşağıdakiler kullanılarak oluşturulurpam_mkhomedir
  5. RFC2307bis (ve ilişkili şema) eklentilerinin GOsa² uygulaması uidgrup girişlerine eklenir , bu nedenle NIS ("UNIXy" öğelerinin çoğunu) veya RFC2307bis şemasını ("çoğu" AD için tasarlanmış "uygulamalar) bekleyen uygulamalar iyi çalışır.

Tek sorun, bir hesabı devre dışı bırakmanın CLI araçlarının (veya GOsa postmodify betiğinin yazılması) kullanımını gerektirmesi veya hesabın yalnızca PAM ve Samba için LDAP düzeyinde kilitlenmemesidir. Parola süresinin dolması yine de uygulanacaktır, bu yüzden büyük bir sorun değildir.


0

GOsa geliştiricilerinden birinden yanıt aldım. Şu anda GOsa herhangi bir şekilde polioli kaplamayı desteklememektedir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.