%2C%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D0%BC%D1%83%D1%8E%20ldappasswd%3F.png)
Я использую 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} |