Как проверить политику хранения паролей ldap

Как проверить, как пароли хранятся на локальном работающем сервере OpenLDAP? Я бы предпочел какой-то запрос, в котором будет указана используемая конфигурация. В качестве альтернативы также допустим доступ к сохраненным паролям, чтобы убедиться, что они зашифрованы. Просто проверить файл конфигурации недостаточно.

Я перечислил пользователей с их паролями с помощью ldapsearch

ldapsearch -x -b ou=people -H ldap://127.0.0.1 -D cn=admin -w <password>

, и пароли не перечислены в открытом тексте, но действительно ли это подтверждает, что они не хранятся в открытом виде, или ldapsearch шифрует их перед возвратом результатов?

0
задан 7 October 2021 в 08:58
1 ответ

Я перечислил пользователей с их паролями, используя ldapsearchи пароли не указаны в открытом виде, но действительно ли это подтверждает, что они не хранятся в открытом виде?

Да, нет, может быть.

Я думаю, что ldapsearchи, например, наложение политики паролей не заменяет сохраненные пароли в открытом виде зашифрованной или хешированной версией в ответах поиска. Шифрование/хеширование паролей в открытом виде происходит только при установке/обновлении паролей. Я думаю, что в этом отношении вы можете доверять тому, что показывает вам ldapsearch.

Но и ldapsearch, и slapcatотображают userPasswordв формате base64-. Двойное двоеточие ::после имени атрибута используется для указания того, что значение закодировано в base64-.

 userPassword:: c2VjcmV0LXBhc3N3b3JkCg==
 userPassword:: e1NTSEF9RGtNVHdCbCthLzNEUVR4Q1lFQXBkVXROWEdnZFVhYzMK

На самом деле вы не узнаете, пока не расшифруете эту строку символов base64, является ли пароль хешированным или открытым текстом. Если вы найдете только пароли в виде {hash prefix}salt/value:

 userPassword: {SSHA}DkMTwBl+a/3DQTxCYEApdUtNXGgdUac3
 userPassword: {SSHA}d0Q0626PSH9VUld7yWpR0k6BlpQmtczb
 userPassword: {CRYPT}$1$czBJdDqS$TmkzUAb836oMxg/BmIwN.1
 userPassword: {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==
 userPassword: {SMD5}4QWGWZpj9GCmfuqEvm8HtZhZS6E=

, то все в порядке. Пароли без такого префикса представляют собой обычный текст.

Простой проверки файла конфигурации недостаточно.

Действительно. Когда хэширование/шифрование паролей включено/изменено, ни существующие пароли в открытом виде, ни существующие пароли, зашифрованные с помощью различных алгоритмов, не преобразуются.
Насколько мне известно, после изменения политики паролей по умолчанию существующий открытый текст и пароли, хэшированные с помощью других алгоритмов, также не перестанут работать, демон ldap просто перебирает все поддерживаемые механизмы всякий раз, когда выполняется запрос аутентификации.

Чтобы проверить содержимое фактически сохраненных данных в OpenLDAP, проще всего, вероятно, экспортировать базу данных в читаемый формат LDIF с помощьюslapcat; извлечь все значения атрибутов userPassword из этого LDIF и декодировать их с помощью base64.

1
ответ дан 7 October 2021 в 11:34

Теги

Похожие вопросы