Как правильно настроить устаревание пароля с использованием krb5?

Вопрос или проблема

У меня есть сервер Solaris, он использует ldap для аутентификации пользователей и kerberos для пароля. Пользователь может изменить свой пароль, у меня есть только проблема с устареванием пароля, например:

passwd -r ldap -n 12 giovanni
Enter giovanni's password: 
Permission denied

Это pam.conf для passwd

passwd  auth sufficient         pam_passwd_auth.so.1
passwd  auth required           pam_dhkeys.so.1
passwd  auth sufficient         pam_krb5.so.1
passwd  auth required           pam_unix_cred.so.1
passwd  auth required           pam_unix_auth.so.1

Я знаю, что в kerberos можно использовать политики, но если я хочу установить устаревание пароля для пользователя? Мне нужно установить политику только для этого пользователя? Нет возможности использовать команду passwd?

Поскольку пароль хранится в Kerberos, только сервер(ы) Kerberos может эффективно управлять его устареванием.

Детали зависят от реализации Kerberos. Предположим, что вы используете MIT Kerberos, инструмент для этого – kadmin. Как только вы войдете в систему, используя начальный Kerberos (т.е. учетную запись пользователя Kerberos), которая имеет административные права, вы увидите запрос kadmin:.

С помощью get_principal giovanni, вы сможете просмотреть атрибуты пользователя. Вы захотите проверить атрибут Policy:, чтобы увидеть, имеет ли начальный элемент пользователя уже связанную с ним политику паролей: атрибут укажет имя применимого объекта политики, если он существует.

С помощью команды get_policy <policy_name> (заменяя <policy_name> именем объекта политики) вы можете просмотреть содержимое существующей политики.

Если существует объект политики, его можно изменить, чтобы добавить ограничение на срок действия пароля (все еще в запросе kadmin:). Например:

modpol -maxlife "180 days" <policy_name>

Но это повлияет на всех пользователей, у которых назначена эта политика, поэтому вы можете вместо этого создать новую политику для этого пользователя и затем применить политику к начальному элементу пользователя. Если у пользователя была существующая политика, вы, вероятно, захотите добавить все ограничения текущей политики к новой политике, добавив параметры -minlife, -minlength, -minclasses и/или -history также к команде addpol, в соответствии с тем, что содержала старая политика.

addpol -maxlife "180 days" <name_of_new_policy>
modprinc -policy <name_of_new_policy> giovanni

Тем не менее, это касается только будущих изменений пароля. Чтобы применить ограничение срока действия к текущему паролю, вам понадобится еще одна команда:

modprinc -expire "180 days" giovanni

Ответ или решение

Для правильной настройки устаревания пароля с использованием Kerberos (krb5) в вашей системе с использованием Solaris сервера через LDAP для аутентификации, следует учитывать несколько важных моментов. У вас возникла проблема с устареванием пароля, и, как вы указали, пароли хранятся на сервере Kerberos, поэтому управление их возрастом возможно только на уровне Kerberos-сервера.

Теория

Kerberos управляет паролями через политики, которые задают сроки устаревания, минимальную длину пароля, требования к сложности и другие параметры безопасности. Эти политики могут быть назначены конкретным пользователям или группам пользователей. Ваша цель — настроить устаревание пароля для пользователя, при этом желаемо сделать это через существующие средства Kerberos, а не через команду passwd, которая в вашем контексте использует LDAP и не взаимодействует непосредственно с Kerberos.

Пример

В MIT Kerberos, который является одной из наиболее распространённых реализаций, вы можете использовать административную утилиту kadmin. Она позволяет вам управлять пользователями и политиками с учётом всех настроек:

  1. Войдите в kadmin с помощью учётной записи, обладающей административными правами.
kadmin -p admin
  1. Проверьте текущие настройки для пользователя:
get_principal giovanni

Обратите внимание на атрибут Policy, который указывает, какая политика применена к пользователю.

  1. Если политика уже существует и ее нужно модифицировать, используйте:
modpol -maxlife "180 days" <policy_name>
  1. Если пользователя необходимо привязать к новой политике для управления устареванием пароля, создайте новую политику:
addpol -maxlife "180 days" имя_новой_политики
modprinc -policy имя_новой_политики giovanni
  1. Чтобы задать срок истечения уже текущему паролю, дополнительно выполните:
modprinc -expire "180 days" giovanni

Применение

Эти действия обеспечат, что установленное устаревание паролей будет строго контролироваться Kerberos, а не LDAP. Все изменения начнут действовать для всех будущих изменений паролей. Важно учесть, что изменение политики на уровне Kerberos может повлиять на всех пользователей, так что если вы не хотите менять параметры для всех, создайте отдельную политику для специфичных требований.

Таким образом, корректная настройка на Kerberos-сервере поможет избежать проблем с управлением устареванием паролей и повысит общую безопасность системы в соответствии с установленными требованиями корпоративной информационной безопасности.

Оцените материал
Добавить комментарий

Капча загружается...