У меня на 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
и прокрутите страницу до конца страницы руководства.