Поиск по сайту:

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


Введение

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

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

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

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

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

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

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

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

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

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

Обычно команда выглядит примерно так:

  1. ldappasswd -H ldap://server_domain_or_IP -x -D "user_dn" -W -A -S

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

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

  1. ldappasswd -H ldap://server_domain_or_IP -x -D "user's_dn" -w old_passwd -a old_passwd -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, вы можете ввести это:

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

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

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

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

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

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

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

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

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

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

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

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

  1. /usr/sbin/slappasswd -h {SSHA} >> ~/newpasswd.ldif

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

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

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

nano ~/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. Это будет выглядеть так:

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

{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

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

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

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

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

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

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

Изменение пароля в обычном DIT

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

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

  1. nano ~/newpasswd.ldif

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

[output ~/newpasswd.ldif]
dn: cn=admin,dc=example,dc=com
changetype: modify
replace: userPassword
userPassword: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

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

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

  1. ldapmodify -H ldap:// -x -D "cn=admin,dc=example,dc=com" -W -f ~/newpasswd.ldif

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

Заключение

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