Назад | Перейти на главную страницу

Linux (Ubuntu vs CentOS) LDAP-клиент для 389-ds - политика паролей

389-ds на сервере Ubuntu 12.04 и работает. Включено Fine-grained password policies и User must change password after reset для всего дерева. Впоследствии создал тестового пользователя.

Вход из клиента CentOS: пользователю предлагается сменить пароль: You are required to change your password immediately.

Вход из клиента Ubuntu: пользователь входит в систему, нет подсказки.

Файлы конфигурации клиента CentOS скопированы на клиент Ubuntu, а именно /etc/pam_ldap.conf (в Ubuntu это /etc/ldap.conf), /etc/nslcd.conf, /etc/openldap/ldap.conf (в Ubuntu / etc / ldap / ldap.conf) - без кубиков.

Оба клиента успешно аутентифицируются, оба могут изменять пароли пользователей.

Все логины являются терминальными, без графического интерфейса.

PAM на обоих клиентах:

  1. Ubuntu:

    • /etc/pam.d/common-account

      аккаунт [success = 2 new_authtok_reqd = done default = ignore]
      Учетная запись pam_unix.so [success = 1 default = ignore] pam_ldap.so реквизит учетной записи pam_deny.so требуется учетная запись
      pam_permit.so

    • /etc/pam.d/common-auth

      auth [success = 2 default = ignore] pam_unix.so nullok_secure auth [success = 1 default = ignore] pam_ldap.so use_first_pass auth
      реквизит pam_deny.so требуется авторизация
      pam_permit.so auth необязательный pam_cap.so

    • /etc/pam.d/common-password

      пароль [success = 2 default = ignore] pam_unix.so неясный пароль sha512 [success = 1 user_unknown = ignore default = die]
      pam_ldap.so try_first_pass пароль реквизит
      pam_deny.so требуется пароль
      pam_permit.so пароль необязательный pam_gnome_keyring.so

  2. CentOS

    • /etc/pam.d/system-auth-ac

      #% PAM-1.0 требуется аутентификация pam_env.so auth достаточная pam_fprintd.so auth достаточная pam_unix.so nullok try_first_pass auth Requisite pam_succeed_if.so uid> = 500 тихая аутентификация достаточная pam_ldap.so use_first_pass auth
      требуется pam_deny.so

      требуется учетная запись pam_unix.so broken_shadow account
      достаточно учетной записи pam_localuser.so достаточно
      pam_succeed_if.so uid <500 тихая учетная запись [default = bad success = ok user_unknown = ignore] Требуется учетная запись pam_ldap.so
      pam_permit.so

      требуемый пароль pam_cracklib.so try_first_pass retry = 3 type = пароль достаточный pam_unix.so sha512 shadow nullok try_first_pass use_authtok пароль достаточный pam_ldap.so use_authtok пароль требуется pam_deny.so

      сеанс необязательный pam_keyinit.so требуется отменить сеанс
      pam_limits.so сеанс необязательный сеанс pam_mkhomedir.so
      [success = 1 default = ignore] Служба pam_succeed_if.so в crond тихом сеансе use_uid требуется сеанс pam_unix.so необязательно
      pam_ldap.so

    • /etc/pam.d/passwd-auth-ac

      #% PAM-1.0 требуется авторизация pam_env.so auth достаточная pam_unix.so nullok try_first_pass auth Requisite
      pam_succeed_if.so uid> = 500 достаточно тихой аутентификации
      pam_ldap.so use_first_pass требуется авторизация pam_deny.so

      требуется учетная запись pam_unix.so broken_shadow account
      достаточно учетной записи pam_localuser.so достаточно
      pam_succeed_if.so uid <500 тихая учетная запись [default = bad success = ok user_unknown = ignore] Требуется учетная запись pam_ldap.so
      pam_permit.so

      требуемый пароль pam_cracklib.so try_first_pass retry = 3 type = пароль достаточный pam_unix.so sha512 shadow nullok try_first_pass use_authtok пароль достаточный pam_ldap.so use_authtok пароль требуется pam_deny.so

      сеанс необязательный pam_keyinit.so требуется отменить сеанс
      pam_limits.so сеанс необязательный сеанс pam_mkhomedir.so
      [success = 1 default = ignore] Служба pam_succeed_if.so в crond тихом сеансе use_uid требуется сеанс pam_unix.so необязательно
      pam_ldap.so

Одно отличие состоит в том, что на Ubuntu у меня не установлен cracklib. Планирую сделать это позже, сейчас просто тестирую.

Интересно, присоединяется ли клиент LDAP Ubuntu к Windows AD, как он получает от него уведомления об истечении срока действия пароля. Должно быть что-то похожее, но я не могу понять.

Как заставить клиента Ubuntu соблюдать / подчиняться политике паролей? Почему я не вижу You are required to change your password immediately. подскажите при входе в систему, учитывая, что такая же конфигурация работает с CentOS?

Спасибо!

Счастливых праздников!

Я играл с 389-ds на Ubuntu для рабочего проекта и столкнулся с той же проблемой.

Я не уверен, что копирую конфигурацию из CentOS - у меня не было под рукой коробки.

Но когда я посмотрел и прочитал PAM, оказалось, что все в файле /etc/pam.d/common-account.

pam_unix.so был выше pam_ldap.so, и у него также было [success = 2 default = ignore], что означает, что в случае успеха пропустить следующие два правила и для всего остального игнорировать строку.

Теперь, поскольку учетные записи LDAP являются действительными учетными записями UNIX, поскольку мы добавили ldap в /etc/nsswitch.conf, это правило вернет успех, и модуль pam_ldap.so никогда не запустится.

Чтобы обойти это, мой /etc/pam.d/common-account теперь выглядит так:

# here are the per-package modules (the "Primary" block)
account [success=1 default=bad]  pam_succeed_if.so user ingroup auth-access quiet
account [success=reset default=bad]  pam_succeed_if.so uid <= 500 quiet
account [success=2 user_unknown=ignore default=ok]      pam_ldap.so
account [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so
# here's the fallback if no module succeeds
account requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
account required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config

Как видите, я также добавил несколько правил, чтобы разрешить пользователям из группы LDAP «auth-access» или пользователей системы с UID ниже 500 считаться действительными учетными записями.

И немного поясню:

Мы попали в первое правило

account [success=1 default=bad]  pam_succeed_if.so user ingroup auth-access quiet

Что будет успешным, если пользователь находится в этой группе, и если это так, мы пропускаем следующую строку, поскольку знаем, что это не удастся (они действительный пользователь LDAP, поэтому у них не будет системного UID ниже 500) - если это не так не удалось, вернуть ошибку (плохо).

Затем следующее правило, если оно не было пропущено

account [success=reset default=bad]  pam_succeed_if.so uid <= 500 quiet

Поэтому, если это успешно (поскольку UID ниже 500), сбросьте значение ошибки, установленное вышеуказанным модулем, потому что они не будут частью этой группы LDAP.

И важная часть

account [success=2 user_unknown=ignore default=ok]      pam_ldap.so

Проверьте сервер LDAP на статус учетной записи - если это удастся, мы знаем, что пользователь LDAP является действительным пользователем UNIX, поэтому пропустите следующие две строки (чтобы перейти к pam_permit.so и позволить пользователю войти в систему). Если пользователь неизвестен серверу LDAP, проигнорируйте эту строку и перейдите к следующей - и для всех других статусов «ok» означает, что можно передавать эти коды возврата как есть, что будет передавать такие вещи, как срок действия пароля и т. Д. .

А потом:

account [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so

Если мы попали в это правило, мы не были действующим пользователем LDAP, поэтому проверьте, действуем ли мы как системный пользователь - в случае успеха пропустите следующую 1 строку (приведет нас к pam_permit.so). В противном случае игнорируйте, что приведет нас к pam_deny.so.

Надеюсь, это поможет объяснить немного больше - документ, который помог мне, если меня было не очень легко понять, был: http://uw714doc.sco.com/en/SEC_pam/pam-4.html

С уважением, iamacarpet