Как изменить пароли учетной записи на сервере OpenLDAP

Вступление

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

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

Изменение собственного пароля пользователя

Возможность изменения паролей управляется элементами управления доступом для сервера LDAP. Как правило, LDAP настроен, чтобы позволить учетным записям возможность изменять свои собственные пароли. Это хорошо работает, если вы, как пользователь, знаете свой предыдущий пароль.

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

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

  • * + -a [oldpassword] + *: Флаг + -a + позволяет вам вводить старый пароль как часть запроса в командной строке.

  • * + -A + *: Этот флаг является альтернативой флагу + -a +, который запрашивает у вас старый пароль при вводе команды.

  • * + -t [oldpasswordfile] + *: Этот флаг можно использовать вместо вышеуказанного для чтения старого пароля из файла.

Вам также необходимо указать новый пароль, используя одну из следующих опций:

  • * + -s [newpassword] + *: Флаг + -s + используется для ввода нового пароля в командной строке.

  • * + -S + *: этот вариант флага + -s + будет запрашивать новый пароль при вводе команды.

  • * + -T [newpasswordfile] + *: Этот флаг можно использовать вместо вышеуказанного для чтения нового пароля из файла.

Используя один параметр из каждой группы, наряду с обычными параметрами для указания местоположения сервера, записи и пароля привязки, вы можете изменить свой пароль LDAP. Технически, OpenLDAP не всегда нуждается в старом пароле, так как он используется для привязки к записи, но другие реализации LDAP требуют этого, поэтому лучше установить в любом случае.

Как правило, команда будет выглядеть примерно так:

ldappasswd -H ldap:// -x -D "" -W -A -S

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

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

ldappasswd -H ldap:// -x -D "" -w  -a  -S

Изменение пароля пользователя с помощью привязки RootDN

Инструмент + ldappasswd + также позволяет вам изменить пароль другого пользователя, если это необходимо в качестве администратора LDAP. Технически, вы можете связываться с любой учетной записью, у которой есть доступ на запись к паролю учетной записи, но этот доступ обычно ограничен записью rootDN (административная) и самой учетной записью.

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

Базовая команда + ldappasswd + будет выглядеть очень похоже, с той лишь разницей, что вы должны указать запись для изменения в конце команды. Вы можете использовать опции + -a + или + -A +, если у вас есть старый пароль, но это часто не так при смене пароля для пользователя. Если у вас нет старого пароля, просто отключите его.

Например, если rootDN для вашего сервера LDAP - + cn = admin, dc = example, dc = com +, а пароль, который вы хотите изменить, - для `+ uid = bob, ou = people, dc = example, dc = com + `entry, вы можете напечатать это:

ldappasswd -H ldap:// -x -D "" -W -S "uid=bob,ou=people,dc=example,dc=com"

Вам будет предложено ввести новый пароль Боба, а затем вам будет предложено ввести пароль, необходимый для привязки к записи администратора, чтобы внести изменения.

Изменение пароля RootDN

В случае, если вы забыли свой пароль администратора LDAP, вам потребуется доступ с правами root или `+ sudo + 'на сервер системы LDAP для его сброса. Войдите в свой сервер, чтобы начать.

Поиск текущей информации RootDN

Сначала вам нужно будет найти учетную запись RootDN и текущий хэш пароля RootDN. Это доступно в специальной + cn = config + конфигурации DIT. Мы можем найти информацию, которую мы ищем, набрав:

sudo ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW | tee ~/newpasswd.ldif

Это должно вернуть учетную запись rootDN и пароль для вашего DIT. Он также скажет вам базу данных конфигурации, где это определено. Мы также записали эту информацию в файл в нашем домашнем каталоге, чтобы мы могли изменить его после получения нового хэша пароля:

RootDN и RootPW для DIT

dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

Хеширование нового пароля

Далее мы можем использовать утилиту + slappasswd + для хеширования нового пароля. Мы хотим использовать тот же хеш, который был в строке + olcRootPW +, которую мы запросили, на что указывает префиксное значение с фигурными скобками. В нашем случае это + {SSHA} +.

Используйте утилиту + slappasswd +, чтобы сгенерировать правильный хеш для пароля, который мы хотим использовать. Мы добавим наш новый хеш в конец файла, который мы создали с помощью последней команды. Вам нужно будет указать полный путь к команде, если вы используете учетную запись без полномочий root:

/usr/sbin/slappasswd -h  >> ~/newpasswd.ldif

Вам будет предложено ввести и подтвердить новый пароль, который вы хотите использовать. Хешированное значение будет добавлено в конец нашего файла.

Изменение пароля в Config DIT

Теперь мы можем отредактировать файл, чтобы создать действительную команду LDIF для изменения пароля. Откройте файл, в который мы пишем:

nano ~/newpasswd.ldif

Это должно выглядеть примерно так:

~ / Newpasswd.ldif

dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

Возможно, вы можете иметь несколько значений в зависимости от того, имеет ли ваш сервер LDAP более одного DIT. Если это так, используйте значение + olcRootDN +, чтобы найти правильную учетную запись, которую вы хотите изменить. Удалите другие триплеты + dn +, + olcRootDN +, + olcRootPW +, если они есть.

Убедившись, что строка + olcRootDN соответствует учетной записи, которую вы пытаетесь изменить, закомментируйте ее. Ниже мы добавим две строки. Первый должен указывать + changetype: modify +, а вторая строка должна указывать LDAP, что вы пытаетесь `` заменить: olcRootPW + `. Это будет выглядеть так:

~ / Newpasswd.ldif

dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com


olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

Теперь удалите хеш, который находится в строке + olcRootPW +, и замените его на тот, который вы создали ниже. Удалите все посторонние линии. Теперь это должно выглядеть так:

~ / Newpasswd.ldif

dn: olcDatabase={1}hdb,cn=config
#olcRootDN: cn=admin,dc=example,dc=com
changetype: modify
replace: olcRootPW
olcRootPW:

Сохраните и закройте файл, когда вы закончите.

Теперь мы можем применить изменения, набрав:

sudo ldapmodify -H ldapi:// -Y EXTERNAL -f ~/newpasswd.ldif

Это изменит пароль администратора в директории + cn = config.

Смена пароля в обычном DIT

Это изменило пароль для записи в административном DIT. Однако нам все еще нужно изменить запись в обычном DIT. В настоящее время действительны как старый, так и новый пароли. Мы можем исправить это, изменив обычную запись DIT, используя наши новые учетные данные.

Снова откройте файл LDIF:

nano ~/newpasswd.ldif

Замените значение в строке + dn: + значением RootDN, которое вы закомментировали ранее. Эта запись - наша новая цель для смены пароля. Нам также необходимо изменить * оба * вхождения + olcRootPW + с помощью + userPassword +, чтобы мы изменили правильное значение. Когда вы закончите, файл LDIF должен выглядеть следующим образом:

[output ~/newpasswd.ldif]
dn:
changetype: modify
replace:
: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

Сохраните и закройте файл.

Теперь мы можем изменить пароль для этой записи, связавшись с ним, используя новый пароль, который мы установили в config DIT. Вам нужно будет привязаться к записи RootDN для выполнения операции:

ldapmodify -H ldap:// -x -D "" -W -f ~/newpasswd.ldif

Вам будет предложено ввести новый пароль, который вы установили в конфигурации DIT. После аутентификации пароль будет изменен, оставив только новый пароль для аутентификации.

Заключение

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