OpenLDAP, старіння Samba та паролів


13

Я налаштовую систему, в якій усі ІТ-ресурси доступні через єдину пару користувачів-паролів, будь то доступ до оболонки на серверах, вхід до домену Samba, WiFi, OpenVPN, Mantis тощо (з доступом до конкретних сервісів, якими керується за полями членства в групі або об'єктом користувача). Оскільки в нашій мережі є персональні дані, нам потрібно застосувати старіння паролів, відповідно до Директиви про захист даних ЄС (а точніше польської версії).

Проблема полягає в тому, що облікові записи Samba та POSIX у LDAP використовують різну інформацію про хешування паролів та інформацію про старіння. При синхронізації паролів самі легко ( ldap password sync = Yesв smb.conf), додавши пароль старіння в перервах змішувати речі: Samba не оновлюється shadowLastChange. Разом з obey pam restrictions = Yesстворює систему, в якій користувач Windows не може змінити застарілий пароль, але якщо я не використовую його, домашні каталоги не створюватимуться автоматично. Альтернативою є використання розширеної операції LDAP для зміни пароля, але smbk5pwdмодуль також не встановлює. Що ще гірше, те, що технічне обслуговування OpenLDAP не оновлюватиме / не прийме патчі, оскільки це поле вважається застарілим.

Отже, моє запитання: яке найкраще рішення? Які їхні наслідки та наслідки?

  1. Використовувати LDAP ppolicyта внутрішнє старіння паролів LDAP?

    1. Наскільки добре це працює з NSS, PAM модулями, samba, іншими системами?
    2. Чи потрібно NSS та PAM модулі конфігурувати спеціальним чином, щоб використовувати ppolicy, а не тінь?
    3. Чи має GOsa² працювати з ppolicy?
    4. Чи існують інші адміністративні інструменти, які можуть працювати з ppolicyLDAP з обмеженим доступом?
  2. Злому разом скрипт зміни пароля, який оновлює поле в LDAP. (залишаючи можливість того, що користувач сам оновлюватиме поле без зміни пароля)


Це майстерно написане запитання. Я б хотів, щоб я міг вам у цьому допомогти ...
gWaldo

Відповіді:


1

Я написав власне накладання OpenLDAP, яке покликане shadowlastchangeоновити shadowLastChangeатрибут кожного разу, коли відбувається зміна пароля EXOP. Він активований у slapd.conf:

moduleload smbk5pwd
moduleload shadowlastchange
...

database bdb
...
overlay smbk5pwd
overlay shadowlastchange

Я налаштував smb.confзмінити паролі через EXOP:

ldap passwd sync = Only

Потім для кожного облікового запису встановіть shadowMaxкількість днів дії пароля. Модулі OpenLDAP піклуються про інше!


ви спробували запустити його разом з ppolicy?
Хуберт Каріо

Ні. Спробуйте, і дайте мені знати, як це відбувається.
200_успіх

Схоже , що або ppolicyабо smbk5pwdнакладення в Debian стискає OpenLDAP зробити оновлення shadowLastChange. Так, для Debian!
Хуберт Каріо

1

Як пробіл у зупинці я створив сценарій для Samba, який буде оновлювати 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

У конфігурації Samba його потрібно unix password syncвстановити на yes, passwd chatвстановити в *OK*і passwd programвище сценарій, "%u"як парам.

У LDAP_USERLDAP потрібно створити обліковий запис, вказаний в LDAP, і надати йому доступ для читання uidвсім користувачам Samba та право писати shadowLastChange.


1

(триває робота, деталі я додам пізніше)

Гарні новини всім! Я працюю над тим, більш-менш ..., в тестовому середовищі ...:

  1. Політика паролів (як і час вимог до продукції , мудрий) забезпечується на рівні OpenLDAP (завдяки ppolicy, not24getа passwdqc)
  2. Паролі синхронізуються між Samba та POSIX обома способами (завдяки smbk5pwd). Примітка. Перевірка якості за допомогою Samba та ppolicy не очевидна: password check script( pwqcheck -1від passwdqc) потрібно виконати ті ж перевірки, що і LDAP, або користувач отримає дозвіл відхилений замість "Занадто простий пароль, спробуйте інше".
  3. І PAM, і Samba попереджають користувача, що термін дії пароля скоро закінчиться.
  4. Каталоги користувачів будуть створені з використаннямpam_mkhomedir
  5. Впровадження GOsa² RFC2307bis (і пов’язаної з ним схеми) вставки uidдо групових записів, тому програми, які очікують або NIS (більшість матеріалів "UNIXy"), або схему RFC2307bis (більшість "розроблених для додатків AD").

Єдина проблема полягає в тому, що для відключення облікового запису потрібне використання інструментів CLI (або написання сценарію GOsa postmodify), або обліковий запис не буде заблоковано на рівні LDAP, лише для PAM та Samba. Термін дії пароля все ще буде застосовуватися, тому це не є великою проблемою.


0

Я отримав відповідь від одного з розробників GOsa. На даний момент GOsa жодним чином не підтримує накладення ppolicy.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.