Автор Тема: прокси в AD  (Прочитано 4360 раз)

Денис

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
прокси в 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 только начал разбираться....

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: прокси в AD
« Ответ #1 : 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 не приходилось, готового примера у меня нет.

Егор

Денис

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: прокси в AD
« Ответ #2 : 03 Июль 2023, 13:50:46 »
Спасибо, Егор,
в нашем AD - sasl digest-md5, simple аутентификацией туда не получается попасть
когда делаю ldapsearch -x непосредственно в AD - аутентификация не проходит, а если пишу mech=DIGEST-MD5 - все ок
« Последнее редактирование: 03 Июль 2023, 13:54:24 от Денис »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: прокси в AD
« Ответ #3 : 03 Июль 2023, 14:06:07 »
Если так, то, как минимум, в credentials в olcDbIDAssertBind нужно указывать что-то, что ожидает механизм digest-md5. Подозреваю, что это не пароль в открытом виде, скорее всего какой-нибудь хэш.

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

Егор
« Последнее редактирование: 03 Июль 2023, 14:18:57 от egor »

Денис

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: прокси в AD
« Ответ #4 : 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 ?
« Последнее редактирование: 03 Июль 2023, 14:20:26 от Денис »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: прокси в AD
« Ответ #5 : 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, которая у Вас успешно выполняется.

Егор

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: прокси в AD
« Ответ #6 : 03 Июль 2023, 14:23:19 »
ааа, хеш! его делать saslpasswd -s ?

Вероятно. Что получается на выходе команды?

Денис

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: прокси в AD
« Ответ #7 : 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
« Последнее редактирование: 03 Июль 2023, 17:43:43 от Денис »

Денис

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: прокси в AD
« Ответ #8 : 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


egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: прокси в AD
« Ответ #9 : 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=="

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

Егор

Денис

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: прокси в AD
« Ответ #10 : 03 Июль 2023, 17:22:50 »

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

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

Могу попробовать отловить хеш через tcpdump

Денис

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: прокси в AD
« Ответ #11 : 03 Июль 2023, 17:29:34 »

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


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

Огромное спасибо, Егор!
« Последнее редактирование: 03 Июль 2023, 17:44:19 от Денис »