Вопрос или проблема
У меня установлена служба LDAP на системе Centos7.
Я хочу создать большое количество пользователей. Эти пользователи получат пароль по умолчанию, поэтому я хочу, чтобы они изменили пароль при (единственном) первом входе.
Существует ли опция, которую я мог бы установить в ldif-файле, чтобы включить эту функциональность? (Только при первом входе, а не каждый раз, когда они заходят)
Заранее спасибо
Редактирование:
Извините, если я так открыто спрашиваю, но что такое вставка оверлея в данном случае и для чего она нужна? Я вставил схему ppolicy через sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
И создал passwordpolicy.ldif.
Редактирование2:
Я попробовал решение, упомянутое здесь, но, похоже, что-то пошло не так, команда просто игнорируется. Я добавил схему ppolicy.
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
После этого я активировал модуль, добавив следующий Ldif
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: ppolicy.la
Затем я создал оверлей, как описано в некоторых руководствах:
database: bdb
suffix: "dc=example,dc=com"
overlay: ppolicy
ppolicy_default: "cn=default,ou=policies,dc=example,dc=com"
После этого я добавил актуальную политику :
# Создает OU Политики (Организационная Единица)
dn: ou=Policies,dc=example,dc=com
objectClass: organizationalUnit
ou: Policies
# Создает объект Политики в OU Политики (Организационная Единица)
dn: cn=default,ou=Policies,dc=example,dc=com
objectClass: top
objectClass: device
objectClass: pwdPolicy
cn: default
pwdAttribute: 2.5.4.35
pwdMaxAge: 3888000
pwdExpireWarning: 604800
pwdInHistory: 3
pwdCheckQuality: 1
pwdMinLength: 8
pwdMaxFailure: 5
pwdLockout: TRUE
pwdLockoutDuration: 300
pwdGraceAuthNLimit: 0
pwdFailureCountInterval: 0
pwdMustChange: TRUE
pwdAllowUserChange: TRUE
#pwdSafeModify: FALSE
Затем я попытался добавить пользователя со следующими атрибутами (user.ldif):
dn: uid=pwresettest,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: pwresettest
sn: andsoon
userPassword: passwort
loginShell: /bin/bash
uidNumber: 1005
gidNumber: 1005
homeDirectory: /home/pwresettest
pwdReset: TRUE
Но когда я вхожу с этим пользователем, нет запроса на сброс пароля.
Я что-то сделал не так?
Заранее спасибо за ваши ответы.
С наилучшими пожеланиями
Twinhand
Я предполагаю, что ваш сервер — это OpenLDAP.
Если вы развернете ppolicy, вы получите возможность заставить изменить пароль при первом входе, используя комбинацию pwdMustChange
в файле политики и pwdReset
в записи.
Преимуществом является то, что вы собираетесь развернуть что-то, что вам потребуется в будущем: срок действия пароля, принудительная проверка пароля и так далее.
Недостатком является то, что настройка ppolicy требует: вставку схемы, вставку оверлея и настройку политики (специальная запись для хранения ваших конфигураций).
Другой проблемой является то, что, хотя ppolicy является общим решением, так как оно размещено в самой директории, вы можете столкнуться с проблемами при взаимодействии с клиентскими инструментами.
Ответ или решение
Чтобы сбросить пароли пользователей LDAP при первом входе и убедиться, что все элементы настроены корректно, необходимо выполнить несколько шагов в OpenLDAP. Ниже приведены детальные инструкции и рекомендации:
Шаг 1: Установка и активация схемы PPolicy
Поскольку у вас уже есть установленный OpenLDAP и вы добавили схему ppolicy
, убедитесь, что вы правильно загрузили модуль:
-
Убедитесь, что возможно загрузить модуль ppolicy:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
-
Проверьте, что модуль активирован:
Создайте файл с содержимым, включающим в себя следующее, где
database
соответствует вашей базе данных:dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /usr/lib64/openldap olcModuleLoad: ppolicy.la
Добавьте через команду:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f <имя_вашего_файла.ldif>
Шаг 2: Создание политики паролей
Создайте политику, которая будет использоваться для управления паролями пользователей. Это может выглядеть следующим образом:
dn: ou=Policies,dc=example,dc=com
objectClass: organizationalUnit
ou: Policies
dn: cn=default,ou=Policies,dc=example,dc=com
objectClass: top
objectClass: device
objectClass: pwdPolicy
cn: default
pwdAttribute: 2.5.4.35
pwdMaxAge: 3888000
pwdExpireWarning: 604800
pwdInHistory: 3
pwdCheckQuality: 1
pwdMinLength: 8
pwdMaxFailure: 5
pwdLockout: TRUE
pwdLockoutDuration: 300
pwdGraceAuthNLimit: 0
pwdFailureCountInterval: 0
pwdMustChange: TRUE
pwdAllowUserChange: TRUE
Это создаст политику, принуждающую пользователей менять пароль при первом входе.
Шаг 3: Настройка оверлея ppolicy
Добавьте оверлей для вашей базы данных, используя следующий код:
dn: your-database-dn
objectClass: olcDatabaseConfig
olcDatabase: bdb
olcSuffix: "dc=example,dc=com"
olcOverlay: ppolicy
ppolicy_default: "cn=default,ou=Policies,dc=example,dc=com"
Шаг 4: Создание учетной записи пользователя
При создании учетной записи пользователя добавьте атрибут pwdReset: TRUE
для того, чтобы инициировать необходимость смены пароля:
dn: uid=pwresettest,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: pwresettest
sn: andsoon
userPassword: passwort
loginShell: /bin/bash
uidNumber: 1005
gidNumber: 1005
homeDirectory: /home/pwresettest
pwdReset: TRUE
Шаг 5: Протестируйте вход
После выполнения всех вышеуказанных шагов попробуйте войти в систему под учетной записью pwresettest
. Если все сделано правильно, то при первом входе пользователя должен появиться запрос на изменение пароля.
Устранение неполадок
Если после всех настроек по-прежнему не работает смена пароля:
- Проверьте логирование LDAP для поиска ошибок.
- Убедитесь, что клиентский инструмент, который вы используете для аутентификации, поддерживает политику PPolicy.
- Убедитесь, что все DN, которые вы используете, соответствуют действительным DN в вашем LDAP.
Заключение
Настройка политики паролей в OpenLDAP через PPolicy — это шаг, который не только позволяет управлять соблюдением безопасности паролей, но и дает возможность гибко управлять пользователями. Применение pwdMustChange
и pwdReset
является стандартной практикой для обеспечения безопасности при первичном входе пользователя.