Назад | Перейти на главную страницу

Как установить хеш-пароль для OpenLDAP?

У меня на Ubuntu 12.04 установлена ​​следующая версия:

OpenLDAP: slapd  (Sep 19 2013 22:49:31) $
buildd@batsu:/build/buildd/openldap-2.4.28/debian/build/servers/slapd

OpenLDAP теперь предлагает SSHA в качестве хэша по умолчанию. Я хочу использовать другой хеш. Тем не менее, старые учебники основаны на редактировании /etc/ldap/slapd.conf который пропал в более новой версии OpenLDAP. Какой файл мне изменить?

Ладно. Я понял это с помощью IRC и чтения man-страницы.

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

Мы будем использовать ldapmodify для добавления, изменения и удаления записей.

Шаг 1. Создайте test.conf

Мы создадим файл с именем test.conf и добавьте следующее:

dn: olcDatabase={-1}frontend,cn=config
add: olcPasswordHash
olcPasswordHash: {CRYPT}

В dn отличается, если у вас другая база данных. Я начал, не зная, где разместить, поэтому смоделировал:

sudo su            # do this as root
cd /etc/ldap/
mkdir test.d
slaptest -f test.conf -F test.d

Последняя команда будет перерабатывать существующий test.conf (мое имя в честь знаменитого старого slapd.conf) к новому cn=config формат.

если ты tree в test.d каталог, и если вы прочитаете каждый из файлов ldif, вы найдете именно тот файл, который хотите изменить. В моем случае (возможно, для всех пользователей Убунута) это было бы olcDatabase={-1}frontend.ldif.

Другое дело cn=config. Это потому, что этот файл ldif существует в cn=config каталог.

Это хороший способ узнать, какому атрибуту должен принадлежать.

Шаг 2: запустите ldapmodify

root@test32giab:/etc/ldap# ldapmodify -Y EXTERNAL -H ldapi:/// -f test.conf

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={-1}frontend,cn=config"

Если вы сейчас проверите файл ldif, он должен иметь olcPasswordHash атрибут.

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

dn: cn=config
add: olcPasswordCryptSaltFormat
olcPasswordCryptSaltFormat: $5$rounds=8000$%.16s

Запустите это, используя тот же ldapmodify команда. Теперь учетная запись LDAP будет хешироваться с использованием SHA-256 ($6$ является SHA-512) плюс 16-символьная длинная соль и хешируется 8000 раз.

В dn запись cn=config потому что это значение (на основе моего моделирования с использованием шага 1) находится в cn=config.ldif файл.

Чтобы узнать о формате, проверьте http://www.openldap.org/lists/openldap-technical/201305/msg00002.html

Если вы экспериментируете с другим форматом, вы можете попробовать использовать replace метод. Итак, файл будет выглядеть так.

dn: cn=config
replace: olcPasswordCryptSaltFormat
olcPasswordCryptSaltFormat: $5$%.16s

Теперь я удалил 8000-кратную итерацию. Я думаю, что по умолчанию SHA5-256-CRYPT хешируется 5000 раз.

Вы можете узнать больше об этом, выполнив man ldapmodify и прокрутите страницу до конца страницы руководства.