Вопрос или проблема
Я использую CentOS-ds (на основе Redhat-DS и 389 directory servers).
У меня настроен LDAP, и он работает для аутентификации пользователей (и Sudo, это удобная функция!). Даже команда passwd работает отлично для изменения паролей, хранящихся в Ldap. Однако у меня есть одна маленькая проблема. Как я могу заставить все свои учетные записи пользователей создать новый пароль после входа на сервер? Обычный способ, которым я бы это сделал:
chage -d 0 username
кажется, не «ldap-ified». Как я могу заставить людей создать новые пароли при следующем (ssh) входе? Мне нужно создать учетные записи пользователей, и я действительно не хочу, чтобы люди сохраняли пароли, которые я установил для них..
*правка – Я настроил сервер LDAP так, чтобы он заставлял менять пароль, когда их пароль сбрасывается. Однако я не могу найти способ “сбросить” пароль правильным образом, чтобы вызвать это. (все, что я могу найти, это просто вход в качестве менеджера директории и изменение их пароля)
*правка2. Поскольку мы собираемся перенести много машин на LDAP, как только эта часть будет решена, я написал скрипт для выполнения от имени root для настройки аутентификации LDAP. Возможно, я что-то упустил? (удалил серверы и базовый DN.)
#!/bin/sh
#
authconfig --enableldap --enableldapauth --enablemkhomedir --ldapserver=<server1>,<server2> --ldapbasedn="<basedn>" --update
echo 'sudoers: files ldap' >> /etc/nsswitch.conf
echo 'base <basedn>
timelimit 120
bind_policy soft
bind_timelimit 120
idle_timelimit 3600
uri ldap://<server1>/
uri ldap://<server2>/
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5
sudoers_base ou=SUDOers,<basedn>
' > /etc/ldap.conf
Я нашел решение:
В записи LDAP пользователей установите ShadowLastChange = 0
. Это заставит пользователя сбросить свой LDAP-пароль, если также определен shadowMax
(для вызова истечения пароля).
Тем не менее, есть также другая ошибка, вам затем необходимо изменить разрешения (ACL) на сервере LDAP (у меня было значение по умолчанию «Разрешить модификацию собственной записи» на OU=People), чтобы также разрешить им изменять целевой shadowLastChange
.
В противном случае они не смогут изменить значение, и оно останется равным нулю, заставляя их каждый раз восстанавливать свой пароль при входе.
@Brian изменение shadowlastchange=0 на самом деле плохая идея. Большинство клиентов LDAP не предназначены для изменения значения shadowlastchange. Поэтому вы попадете в бесконечный цикл изменения пароля каждый раз, когда выполните вход.
некоторые клиенты ldap
nss-pam-ldapd –
Эта функция недавно была добавлена в проект nss-pam-ldapd
Лог:
попытка обновить атрибут shadowLastChange пользователя при изменении пароля (
обновление пытается выполнить только, если атрибут изначально присутствует)
http://lists.arthurdejong.org/nss-pam-ldapd-commits/2010/msg00302.html
sssd –
Все еще RFE
https://bugzilla.redhat.com/show_bug.cgi?id=739312
samba-ldap-tools – отклонено
Попробуйте атрибут политики паролей pwdMustChange
(в дополнение к атрибуту состояния pwdReset
).
Когда оба установлены на TRUE
, политика паролей требует, чтобы данный пользователь изменил пароли до успешной аутентификации.
Пользователь должен изменить свой пароль, даже если используются отключенные пароли, определенные пользователем.
Атрибуты по умолчанию не установлены.
Ссылка:-http://www.centos.org/docs/5/html/CDS/ag/8.0/User_Account_Management-Managing_the_Password_Policy.html
Ответ или решение
Для того чтобы принудить пользователей в системе LDAP (в вашем случае – на CentOS-ds) сменить пароль при следующем входе в систему, необходимо внести изменения в атрибуты LDAP, а также убедиться, что у вас правильные настройки политик паролей.
Принудительная смена пароля:
-
Атрибуты LDAP:
-
Убедитесь, что в LDAP-записи пользователя выставлены атрибуты
pwdMustChange
иpwdReset
. Эти атрибуты отвечают за необходимость смены пароля и могут быть установлены вTRUE
. Например:pwdMustChange: TRUE pwdReset: TRUE
Эти атрибуты заставят пользователя сменить пароль сразу по первому входу в систему.
-
-
Установка
ShadowLastChange
:- Вместо того, чтобы устанавливать
ShadowLastChange=0
, что может привести к бесконечному циклу смены пароля, лучше использовать заданные атрибуты. Однако, еслиShadowLastChange
всё же нужно установить на0
для пользователей, следует понимать, что это может вызвать проблемы с некоторыми LDAP-клиентами, которые ожидают обновления этого атрибута.
- Вместо того, чтобы устанавливать
-
Управление правами доступа:
-
Убедитесь в том, что у пользователей есть права на изменение их записей LDAP, включая атрибут
shadowLastChange
. Это может быть сделано путём редактирования ACL (Access Control List):Access to attrs=shadowLastChange by self write by * read
-
-
Проверка настроек PAM:
- Проверьте настройки PAM (Pluggable Authentication Modules) вашего сервера, чтобы убедиться, что они корректно сконфигурированы для работы с LDAP и позволяют требовать смену пароля. Например, это можно сделать в конфигурационном файле
/etc/pam.d/common-password
или аналогичном файле в зависимости от вашей конфигурации.
- Проверьте настройки PAM (Pluggable Authentication Modules) вашего сервера, чтобы убедиться, что они корректно сконфигурированы для работы с LDAP и позволяют требовать смену пароля. Например, это можно сделать в конфигурационном файле
Шаги по проверке:
-
Создание тестового пользователя:
- Для проверки настройки вы можете создать временного пользователя в системе LDAP и убедиться, что установленные атрибуты работают, как задумано. Это позволит вам оценить как система реагирует на попытки входа с установленными атрибутами.
-
Мониторинг и логирование:
- Включите логирование на сервере, чтобы отслеживать действия пользователей и возможные ошибки, с которыми они могут столкнуться во время смены пароля. Это поможет вам понять, правильно ли работают настройки.
-
Документация:
- Ознакомьтесь с документацией для CentOS-ds и 389 Directory Server. Там вы найдете более детальные пояснения по настройке и возможностям управления пользователями и их паролями, что также поможет в устранении возможных проблем.
Заключение:
Следуя этим шагам и рекомендациям, вы можете эффективно настроить политики паролей для пользователей LDAP в CentOS-ds, гарантируя, что они будут вынуждены устанавливать новый пароль при следующем входе в систему. Настройка pwdMustChange
и корректное управление правами доступа сыграют ключевую роль в этом процессе.