Как включить хеширование паролей (SSHA) в openLDAP
Что касается жизни, я не могу найти это нигде, и если кто-то может просто дать мне ссылку, я был бы очень признателен.
Мы пытаемся включить SSHA хеширование в openLDAP. По умолчанию он хранит пароли в незашифрованном виде, что я считаю преступным, но эй, я парень из AD, так что я знаю. Но вы могли бы подумать, что им будет проще найти информацию, необходимую для включения хеширования, если вы того пожелаете. А ты не выбрал бы?
4 ответа
Вы можете использовать 'password-hash ' для изменения алгоритма хеширования, по умолчанию используется SSHA (не чистый текст).
Обратите внимание, что slapd использует вышеперечисленное только в том случае, если пароль, отправленный клиентами, представлен в виде простого текста, если ваш клиент отправляет хешированный пароль, он будет сохранен как есть.
например, с помощью pam_ldap используйте pam_password exop (или очистите)
Как на сервере выполняются тесты на надежность пароля, если пароль приходит в хэше, и я знаю, что это особенность openLDAP?
Если вы отправили хешированные пароли, slapd не сможет выполнить проверку надежности, поэтому клиенты должны отправлять пароли в виде открытого текста (ppolicy имеет возможность принять / отклонить хешированный пароль).
Замечания:
- убедитесь, что ваши клиенты используют ssl/tls (чтобы пароли не отправлялись в виде открытого текста)
- Атрибут userpassword содержит специальные символы ({}), поэтому вам нужно выполнить base64 -d, чтобы определить используемый алгоритм хеширования.
Например: обычно атрибуты возвращаются в следующем формате (:: указывают, что результат закодирован в base64)
userPassword:: e1NTSEF9QjU0VXNmQWhJN1dQZ3FvbDVSQ1l5RHUzTlVqa1luVVhYV2ljbmc9PQ=
=
$ echo e1NTSEF9QjU0VXNmQWhJN1dQZ3FvbDVSQ1l5RHUzTlVqa1luVVhYV2ljbmc9PQ==|openssl base64 -d
{SSHA}B54UsfAhI7WPgqol5RCYyDu3NUjkYnUXXWicng==
Это старый вопрос, но он все еще актуален. Больше не рекомендуется использовать SSHA (например, SHA-1) из-за его относительно простой переборки.
Более безопасный алгоритм хеширования - SHA-512. Более сильный хеш можно создать на стороне клиента с помощью OpenSSL 1.1 следующим образом:
_generate_password_hash() {
local plaintext; plaintext="$1"
command printf "{CRYPT}%s" "$(openssl passwd -6 -stdin <<< "${plaintext}")"
}
Это выведет строку, такую как:
{CRYPT}$6$SGIWzAbjh.3WoQQJ$vEFlcRBQpd2fJ8dxcbojr83pjQcXcJ.InRMzNRryTQ//fMYJoCRFWAPn22EvJyDikG.MNuUqRYqQtI97Clj2F0
Обратите внимание на {CRYPT}
вместо того {SSHA}
в начале.
Вы можете применить пароль, например, с помощью ldapmodify:
ldapmodify -h "${LDAP_HOST}" -D cn=user,dc=example,dc=com -W <<EOF
dn: cn=user,dc=example,dc=com
changetype: modify
replace: userPassword
userPassword: $(_generate_password_hash NEW_PASSWORD_HERE)
EOF
Обратите внимание, что LibreSSL имеет другой набор доступных алгоритмов хеширования. Проверьте свою актуальную версию OpenSSL с помощьюopenssl version
если openssl passwd --help
не показывает -6
вариант.
Когда вы пытались хранить userPassword
атрибут в операциях добавления / изменения LDAP, userPassword
значение хранится в виде простого текста. Но вы можете изменить это поведение, используя ppolicy_hash_cleartext
вариант в ppolicy
оверлейный модуль в OpenLDAP. Как только вы включите его, когда клиент отправит простой текстовый пароль, он будет сохранен как SSHA
по умолчанию. Вы можете найти более подробную информацию о включении хэш-пароля в OpenLADP здесь
Спецификация LDAP требует незашифрованные пароли для взаимодействия. Ссылка, приведенная выше в отношении безопасности, предоставит вам опцию для типов хешей по умолчанию, которые сервер может применять, но учитывает последствия.
OpenLDAP поддерживает различные схемы хранения для администраторов на выбор. Инструмент, который вы используете для создания учетных записей, должен быть настроен на хеширование. Сервер будет хранить пароли в формате, который запрашивает клиент. Если хеширование выполнено правильно, ldapsearch покажет хешированные пароли, например:
userPassword: {SSHA}d0Q0626PSH9VUld7yWpR0k6BlpQmtczb
См. http://www.openldap.org/doc/admin24/security.html для получения подробной информации.
Что касается административных инструментов, я бы лично порекомендовал http://phpldapadmin.sourceforge.net/