Форум проекта Pro-LDAP.ru

Администрирование OpenLDAP => Конфигурация через cn=config => Тема начата: Денис от 03 Июль 2023, 11:36:46

Название: прокси в AD
Отправлено: Денис от 03 Июль 2023, 11:36:46
Всем привет
Попробовал настроить проксирование из LDAP в AD - добавил модуль back_ldap, добавил базу ldap, настроил аутентификацию в AD
но при попытке посмотреть что-нибудь из AD - возникает ошибка
ldapsearch -H ldap://someldap.blahblah.com/ -x -D "cn=openldap,dc=corp,dc=blahblah,dc=com" -W -b "dc=corp,dc=blahblah,dc=com" "(objectClass=*)" -V
# extended LDIF
#
# LDAPv3
# base <dc=corp,dc=blahblah,dc=com> with scope subtree
# filter: (objectClass=*)
# requesting: ALL
#

# search result
search: 2
result: 80 Other (e.g., implementation specific) error



LDIF и логи в прицепе

помогите плиз, я с LDAP только начал разбираться....
Название: Re: прокси в AD
Отправлено: egor от 03 Июль 2023, 12:48:19
Здравствуйте! Я не уверен, что AD поодерживает SASL-аутентификцию DIGEST-MD5. SIMPLE-аутентификацию он точно поддерживает, попробуйте изменить olcDbIDAssertBind:
olcDbIDAssertBind: bindmethod="simple" binddn="cn=denis.sutyagin,dc=corp,dc=blahblah,dc=com" mode="none" credentials="somecomplexpassword"

Осторожно: при SIMPLE-аутентификации пароль по сети будет передаваться в открытом виде, возможен его перехват.

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

Егор
Название: Re: прокси в AD
Отправлено: Денис от 03 Июль 2023, 13:50:46
Спасибо, Егор,
в нашем AD - sasl digest-md5, simple аутентификацией туда не получается попасть
когда делаю ldapsearch -x непосредственно в AD - аутентификация не проходит, а если пишу mech=DIGEST-MD5 - все ок
Название: Re: прокси в AD
Отправлено: egor от 03 Июль 2023, 14:06:07
Если так, то, как минимум, в credentials в olcDbIDAssertBind нужно указывать что-то, что ожидает механизм digest-md5. Подозреваю, что это не пароль в открытом виде, скорее всего какой-нибудь хэш.

Покажите полностью строку запроса ldapsearch к AD, которая у Вас успешно выполняется.

Егор
Название: Re: прокси в AD
Отправлено: Денис от 03 Июль 2023, 14:18:41
я вроде там такое вставил.. или неправильно?
olcDbIDAssertBind: bindmethod="sasl" binddn="cn=denis.sutyagin,dc=corp,dc=blahblah,dc=com" mode="self" saslmech="DIGEST-MD5" credentials="somecomplexpassword"

saslmech=DIGEST-MD5

ааа, хеш! его делать saslpasswd -s ?
Название: Re: прокси в AD
Отправлено: egor от 03 Июль 2023, 14:21:25
я вроде там такое вставил.. или неправильно?
olcDbIDAssertBind: bindmethod="sasl" binddn="cn=denis.sutyagin,dc=corp,dc=blahblah,dc=com" mode="self" saslmech="DIGEST-MD5" credentials="somecomplexpassword"

saslmech=DIGEST-MD5

В поле credentials у Вас пароль в открытом виде. Думаю, так его back_ldap в AD и передаёт. Для механизма DIGEST-MD5 нужен, скорее всего, хэш пароля.

Покажите полностью строку запроса ldapsearch к AD, которая у Вас успешно выполняется.

Егор
Название: Re: прокси в AD
Отправлено: egor от 03 Июль 2023, 14:23:19
ааа, хеш! его делать saslpasswd -s ?

Вероятно. Что получается на выходе команды?
Название: Re: прокси в AD
Отправлено: Денис от 03 Июль 2023, 16:12:59
ldappasswd - ему нужен валидный пользователь

собрал хеш по схеме
hash='{MD5}' + base64(md5(username+realm+password))

получилось такое
{MD5}HMqjnyedjgJLkUuv4kq7GQ==

попробовал
ldapmodify -Y EXTERNAL -H ldapi:/// -f ./modify-olcDBIDAssert.ldif -V
dn: olcDatabase={2}ldap,cn=admin,cn=config
changetype: modify
delete: olcDbIDAssertBind
-
add: olcDbIDAssertBind
olcDbIDAssertBind: bindmethod="sasl" binddn="cn=denis.sutyagin,dc=corp,dc=blahblah,dc=com" mode="self" saslmech="DIGEST-MD5" credentials="{MD5}HMqjnyedjgJLkUuv4kq7GQ=="

изменить не получается - говорит
No such object (32)
matched DN: cn=config

возможно тут надо ACL настраивать? я до этого не добрался еще

PS:
с этим все получилось - после того как переинициализировал OpnLDAP
но результат - тот же - не видит AD
Название: Re: прокси в AD
Отправлено: Денис от 03 Июль 2023, 16:29:00

В поле credentials у Вас пароль в открытом виде. Думаю, так его back_ldap в AD и передаёт. Для механизма DIGEST-MD5 нужен, скорее всего, хэш пароля.

Покажите полностью строку запроса ldapsearch к AD, которая у Вас успешно выполняется.

вот работающий запрос к AD

ldapsearch -H ldap://dc01.corp.blahblah.com/ -Y DIGEST-MD5 -U "denis.sutyagin" -b "dc=corp,dc=blahblah,dc=com" "(objectClass=*)"

вот результат

# extended LDIF
#
# LDAPv3
# base <dc=corp,dc=blahblah,dc=com> with scope subtree
# filter: (objectClass=*)
# requesting: ALL
#

# corp.blahblah.com
dn: DC=corp,DC=blahblah,DC=com
objectClass: top
objectClass: domain
objectClass: domainDNS
distinguishedName: DC=corp,DC=blahblah,DC=com
instanceType: 5
whenCreated: 20151216133710.0Z
whenChanged: 20230514124954.0Z
subRefs: DC=ForestDnsZones,DC=corp,DC=blahblah,DC=com

Название: Re: прокси в AD
Отправлено: egor от 03 Июль 2023, 17:05:37
ldapsearch -H ldap://dc01.corp.blahblah.com/ -Y DIGEST-MD5 -U "denis.sutyagin" -b "dc=corp,dc=blahblah,dc=com" "(objectClass=*)"

Вы какие-нибудь аутентификационные данные вводите, или "оно само" откуда-то берёт? Из какой-нибудь базы sasl привязывает идентификатор пользователя с аутентификационными данными? Если да, можно попробовать извлечь хэш из этой базы.

Что касается back_ldap, я бы попробовал так:

olcDbIDAssertBind: bindmethod="sasl" authcId="denis.sutyagin" mode="self" saslmech="DIGEST-MD5" credentials="{MD5}HMqjnyedjgJLkUuv1kqAGQ=="

Но, опять же, построение хэша я не могу прокомментировать, просто не знаю, как его правильно собрать.

Егор
Название: Re: прокси в AD
Отправлено: Денис от 03 Июль 2023, 17:22:50

Вы какие-нибудь аутентификационные данные вводите, или "оно само" откуда-то берёт? Из какой-нибудь базы sasl привязывает идентификатор пользователя с аутентификационными данными? Если да, можно попробовать извлечь хэш из этой базы.

Ввожу руками пароль, из базы sasl не привязывал

Могу попробовать отловить хеш через tcpdump
Название: Re: прокси в AD
Отправлено: Денис от 03 Июль 2023, 17:29:34

olcDbIDAssertBind: bindmethod="sasl" authcId="denis.sutyagin" mode="self" saslmech="DIGEST-MD5" credentials="{MD5}HMqjnyedjgJLkUuv4kq7GQ=="


А вот так - заработало - только с паролем в открытом виде

Огромное спасибо, Егор!