Как заставить ldap оценить открытый текстовый пароль против пароля, сохраненного в DES - PullRequest
0 голосов
/ 04 сентября 2018

Я использую openldap slapd 2.4.40 и postgresql9.2.23 в качестве back-sql на CentoS 6.9

пользователь и пароль для LDAP uid и userPassword хранятся в postgresql в кодировке DES.

Исходный текст JacicFk5

Зашифрованный / зашифрованный текст DES - это IfjFxsltK/MPE, который хранится в БД.

Я вижу информацию о пользователе как результат ldapseach по сохраненному паролю.

ldapsearch -x  -b "dc=example,dc=com" -D uid="HDZZZ0R0N,ou=people,dc=example,dc=com" -w IfjFxsltK/MPE '(&(uid= HDZZZ0R0N)(objectClass=*))'          
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: (&(uid= HDZZZ0R0N)(objectClass=*))
# requesting: ALL
#

# user01, people, example.com
dn: uid= HDZZZ0R0N,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
cn:: W+aOkl3lia/nlKPnianjg6Hjg7Pjg4bjg4rjg7PjgrnvvIgzNu+8iVNURw==
sn:: W+aOkl3lia/nlKPnianjg6Hjg7Pjg4bjg4rjg7PjgrnvvIgzNu+8iVNURw==
uid: HDZZZ0R0N
userPassword:: SWZqRnhzbHRLL01QRQ==

Однако я не могу выполнить ldapsearch по исходному текстовому паролю

ldapsearch -x -b "dc=example,dc=com" -D uid="HDZZZ0R0N,ou=people,dc=example,dc=com" -w JacicFk5 '(&(uid= HDZZZ0R0N)(objectClass=*))'
ldap_bind: Invalid credentials (49)

Кто-нибудь подскажет, как заставить ldapsearch разрешить данный пароль открытым текстом и сохранить пароль с помощью кодировки DES?

Я хотел бы знать, как сделать простой текст JacicFk5 из командной строки ldapseach в хеш IfjFxsltK/MPE и сопоставить его с IfjFxsltK/MPE в БД как userPassowrd.

Есть ли подходящая директива для ldap.conf или slapd.conf?

Я проверил следующее.

echo "SWZqRnhzbHRLL01QRQ==" |perl -MMIME::Base64 -ne 'print decode_base64($_) . "\n"'

возвращает IfjFxsltK/MPE

perl -e 'print("userPassword: {crypt}".crypt("JacicFk5","If")."\n");'

возвращается userPassword: {crypt}IfjFxsltK/MPE

Еще одна информация. Мой ldapseach может решить текст пароля для пользователей, хранящихся на сервере AD, через ownclod.

1 Ответ

0 голосов
/ 12 сентября 2018

То, что вы хотите / должны иметь, - это простая аутентификация LDAP . Пожалуйста, сначала обратите внимание, что небезопасно для хранения паролей в открытом виде!

Сначала вам нужно проверить, какие механизмы аутентификации вы поддержали / допустили.

Пример:

tukanos@localhost:~# ldapsearch -H ldap:// -x -LLL -s base -b "" supportedSASLMechanisms
dn:
supportedSASLMechanisms: DIGEST-MD5
supportedSASLMechanisms: CRAM-MD5
supportedSASLMechanisms: NTLM

Теперь вы хотите изменить конфигурацию с помощью ldapmodify. Вы готовите файл LDIF (LDIF обозначает LDAP Data Interchangeable Format) с конфигурацией.

Подготовьте файл конфигурации, назовите его olcSaslSecProps.ldif:

dn: cn=config
replace: olcSaslSecProps
olcSaslSecProps: noanonymous,minssf=0,passcred

Что означают свойства:

noanonymous ... no anonymous connection allowed
minssf=0 ... that defines your effective encryption strength (0 ... no encryption)
passcred ... that would allow password to work as for credentials

Цитируя соображения безопасности OpenLDAP

Факторы силы безопасности

Сервер использует факторы безопасности (SSF) для указания относительная сила защиты. SSF ноль (0) означает нет защита на месте. SSF один (1) указывает на целостность защита на месте. SSF больше, чем один (> 1) примерно соответствует эффективной длине ключа шифрования. Например, DES 56, для 3DES - 112, а для AES - 128, 192 или 256.

Ряд административных средств контроля зависит от SSF, связанных с TLS. и защита SASL в сеансе LDAP.

средства управления безопасностью запрещают операции, когда соответствующие средства защиты не на месте. Например:

    security ssf=1 update_ssf=112

требует защиты целостности для всех операций и шифрования защита, эквивалент 3DES, для операций обновления (например, добавить, удалить, изменить и т. д.). Подробности смотрите в slapd.conf (5).

Теперь, чтобы применить файл LDIF:

ldapmodify -Y EXTERNAL -H ldapi:// -f ./olcSaslSecProps.ldif

Теперь для перезапуска демона slapd:

systemctl restart slapd

Если вы проверите сейчас свою конфигурацию, вы должны получить LOGIN и PLAIN:

ldapsearch -H ldap:// -x -LLL -s base -b "" supportedSASLMechanisms
dn:
supportedSASLMechanisms: PLAIN
supportedSASLMechanisms: LOGIN

Теперь ваш поиск должен работать с простым тестовым паролем:

ldapsearch -x  -b "dc=example,dc=com" -D uid="HDZZZ0R0N,ou=people,dc=example,dc=com" -w JacicFk5 '(&(uid= HDZZZ0R0N)(objectClass=*))'
...