Как определить схему защиты паролем (например, хэш-функцию), используемую ldappasswd?

Как определить схему защиты паролем (например, хэш-функцию), используемую ldappasswd?

Я использую OpenLDAP 2.6. Когда я устанавливаю пароль объекта через

ldappasswd -x -D <dn of root user> -W -S <dn of object whose pwd shall be set>

то некоторый хэш пароля оказывается в атрибуте userPassword.

Какую хэш-функцию ldappasswdиспользует? Как мне настроить хэш-функцию? По ее виду я предполагаю, что по умолчанию используется SHA1, что уже не безопасно.

решение1

Какую хеш-функцию использует ldappasswd?

Технически нет — он просто вызывает расширенную операцию LDAP «Изменить пароль», которая вызывает LDAPсервериспользовать некоторую хеш-функцию, которую он сочтет подходящей (и сохранить хеш там, где он сочтет подходящим – не обязательно в userPassword).

Итак, хэш, используемый exop 'Change Password', настраивается на стороне сервера. Для OpenLDAP это параметр, olcPasswordHashкоторый по умолчанию равен "SSHA" (salted and iterated SHA-1), аналогично $1$хэшам. Если вам нужно что-то более сильное, вы можете выбрать либо {CRYPT}использование любых алгоритмов хэширования, предоставляемых функцией crypt() системы (то есть то же самое, что и с /etc/shadow – возможно, bcrypt или yescrypt, если ОС использует libxcrypt, в противном случае тот же самый вид salted SHA),или {ARGON2}если у вас установлен дополнительный модуль slapd-argon2 (он является частью OpenLDAP, но находится в дереве «contrib»).

slapd.conf cn=config
По умолчанию (итерированный/соленый SHA-1):
password-hash {SSHA}
По умолчанию:
olcPasswordHash: {SSHA}
Системный crypt() с использованием yescrypt, если используется libxcrypt:
password-hash {CRYPT}
password-crypt-salt-format $y$%.16s
(не тестировалось, но я думаю, что это должно работать)
Системный crypt() с использованием yescrypt:
olcPasswordHash: {CRYPT}
olcPasswordCryptSaltFormat: $y$.16s
Argon2, если доступен модуль slapd:
moduleload argon2
password-hash {ARGON2}
Argon2, если доступен модуль slapd:
olcModuleLoad: argon2
olcPasswordHash: {ARGON2}

Связанный контент