Назад | Перейти на главную страницу

OpenLDAP slapd как прозрачный прокси, привязка всегда не выполняется

У меня есть коробка linux (4.1.12-61.1.34.el6uek.x86_64) со службой slapd (slapd 2.4.40). Я пытаюсь прозрачно проксировать весь клиентский трафик, связанный с ldap, через этот экземпляр slapd на сервер Active Directory. Причина, по которой мне нужно это сделать, заключается в том, что трафик необходимо туннелировать через TLS 1.2, а мое клиентское приложение не поддерживает его. К сожалению, у меня нет контроля над клиентом, это данность.

Клиент должен пройти аутентификацию в AD, используя имя пользователя и пароль, предоставленные пользователем. А затем получить список групп, к которым принадлежит этот пользователь, довольно просто. Сервер требует простого связывания с пользователем связывания и паролем в виде обычного текста. Когда я пытаюсь запросить сервер AD через экземпляр slapd, я всегда получаю ошибку ниже (при запуске slapd -f slapd.conf -d 4 -d 16 -d 32)

send_ldap_result: err = 49 matched = "" text = ""

По сути, это означает, что аутентификация не удалась. Когда я обхожу свой прокси-сервер slapd и использую ldapsearch для прямого подключения к AD, все работает безупречно.

ldapsearch через slapd (выдает ошибку):

ldapsearch -H ldap://localhost -x -D cn=user,ou=bind,dc=domain,dc=com -W -s sub "(cn=VNA-*)" -v

ldapsearch direct (без ошибок, возвращает результаты из AD):

ldapsearch -H ldaps://ad.domain.com:636 -x -D cn=user,ou=bind,dc=domain,dc=com -W -s sub "(cn=VNA-*)" -v

Я пробовал поиграть со всеми различными опциями, в основном в idassert-bind, но, похоже, ни один из них не имеет никакого значения. Буду признателен за любую помощь, чтобы заставить это работать.

Мой файл slapd.conf

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/inetorgperson.schema


# Global options
loglevel 256
sizelimit unlimited
idletimeout             3600
writetimeout            600
pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args
allow bind_v2

# Modules
modulepath /usr/lib/openldap
modulepath /usr/lib64/openldap
moduleload back_ldap

TLSCACertificateFile    /etc/openldap/cacerts/cacert.pem

database ldap
readonly yes
uri "ldaps://ad.domain.com:636"
suffix "dc=domain,dc=com"
idassert-bind bindmethod=simple
        mode=self
        binddn="cn=user,ou=bind,dc=domain,dc=com"
        credentials=secret
        tls_reqcert=never
        tls_cacert=/etc/openldap/cacerts/cacert.pem
idassert-authzFrom      "*"

Я, наконец, отказался от этого и вместо этого использовал stunnel, работающий как шарм.