Я пытаюсь настроить сервер LDAP с некоторыми основными параметрами безопасности, включая TLS и обязательную привязку с проверкой подлинности.
Я запустил сервер и могу получить к нему доступ с localhost с помощью команды:
ldapsearch -x -b 'dc=server,dc=com' 'objectclass=*' -W -D 'cn=manager,dc=server,dc=com' -H ldaps://server.com:389
Когда я пытаюсь выполнить ту же команду удаленно со своего компьютера, я получаю следующее сообщение об ошибке:
ldap_sasl_bind (ПРОСТОЙ): не удается связаться с сервером LDAP (-1)
Я не знаю, почему это происходит, я могу пропинговать свой сервер, а брандмауэра в настоящее время нет.
slapd
запускается с -h ldaps://server.com:389/
DNS-сервер настраивается в основном на том же сервере, только с записью A.
Есть ли у вас какие-либо идеи ?
РЕДАКТИРОВАТЬ
Я тестировал с другой рабочей станции, на Arch-Linux, и это работает! На обоих компьютерах у меня TLS_REQCERT allow
в /etc/openldap/ldap.conf
, так что это не должно быть проблемой с сертификатом, нет?
Рабочая станция, на которой не работает запрос ldap, находится в Mac OS X, если это имеет какое-то значение.
Некоторый вывод:
Telnet:
telnet server.com 389
Trying w.x.y.z...
Connected to server.com.
Escape character is '^]'.
Iptables:
sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Netstat:
sudo netstat -lnt | grep 389
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN
tcp6 0 0 :::389 :::* LISTEN
Я тестировал без каких-либо параметров безопасности, и у меня такой же результат.
Я бы подумал об использовании стандартного порта. Начать с -h ldap:///
. LDAP поддерживает startTLS и может быть легко настроен так, чтобы требовать TLS перед передачей конфиденциальной информации.
Telnet можно использовать, чтобы определить, можете ли вы связаться с сервером. Попробуйте команду telnet server.com ldap
. Он должен подключиться, если адрес сервера правильный.
На сервере вы можете проверить, что LDAP привязан к внешнему адресу, используя команду netstat -lnt | grep 389
. Это покажет, какой адрес вы слушаете.
Если у вас LDAP работает без TLS, включите startTLS и / или добавьте ldaps:///
вашему стартапу.
Вы можете использовать опцию security update_ssf=16 simple_bind=16
требовать TLS для этих операций. После этого клиенты могут подключиться к LDAP
порт и переключение на TLS
с помощью операции startTLS.
РЕДАКТИРОВАТЬ: использование отладки на клиенте и / или сервере может быть полезно для определения того, где происходит сбой соединения. Добавить -d -1
в командную строку, чтобы все отладить. Переключатель отладки принимает битовую карту флагов отладки для различных подсистем. -d ?
перечислит их и их ценности. Как только вы узнаете, что подсистема работает, вы можете прекратить отладку и сосредоточиться на других подсистемах.
Начать отладку с помощью клиента проще всего, но может потребоваться отладка на сервере. Если вы ведете журнал через системный журнал, полезно иметь файл журнала отладки, в котором вы можете просматривать результаты отладки.
Когда вы используете LDAP URL в виде ldaps://server.com:389
, сервер будет ожидать, что SSL переговоры будут происходить, когда клиент подключается к порту 389
. StartTLS нельзя использовать в существующем SSL-соединении: StartTLS «конвертирует» (возможно, продвигает более подходящее слово) небезопасное соединение с безопасным соединением, поэтому, поскольку ldaps://server.com:389
уже является безопасным соединением, StartTLS использовать нельзя. Ваш сервер должен принимать соединения от клиентов с открытым текстом на ldap://server.com:389
и отклонять любые клиентские подключения, которые не продвигаются немедленно с помощью StartTLS - если ваш серверный продукт не может немедленно отклонить небезопасные клиентские подключения, вам следует выбрать продукт, который является кошкой. Если также требуется конечная точка SSL, сервер должен прослушивать безопасные клиентские соединения на ldap://server.com:636
.