Я пытаюсь настроить аутентификацию LDAPS на Zabbix 2.4, но это не работает. Вот информация о моей конфигурации:
Установленные пакеты PHP:
libapache2-mod-php5 php-pear
php5
php5-cli
php5-common
php5-curl
php5-gd
php5-imagick
php5-json
php5-ldap
php5-mysqlnd
php5-pgsql
php5-readline
php5-sasl
zabbix-frontend-php
Эта команда работает:
ldapsearch -H ldaps: //ldaps.mptest.be: 636 -D cn = reader, dc = antidot, dc = prv -W -b ou = people, dc = antidot, dc = prv
Тот же URI, OU, логин, пароль на странице настройки аутентификации LDAP на zabbix, у меня это:
ldap_bind (): невозможно выполнить привязку к серверу: невозможно связаться с сервером LDAP
[authentication.php: 120 → CLdapAuthValidator-> validate () → CLdap-> checkPass () → ldap_bind () в /usr/share/zabbix/include/classes/ldap/CLdap.php:112] LDAP: невозможно выполнить привязку по заданному Привязать DN. Логин или пароль неверны!
Вот содержимое /etc/ldap/ldap.conf:
TLS_REQCERT allow
BASE dc=antidot,dc=prv
URI ldaps://ldap.mptest.be
TLS_CACERTDIR /etc/ssl/mptest/wildcard_mptest_be.ca
(Аутентификация без SSL, на порт 386 невозможна)
Это то, что работает в Ubuntu 14.04. Система на основе Debian должна быть такой же:
Откровенно говоря, LDAP PHP - чистая чушь. Некоторое время назад я тоже боролся с Zabbix и LDAPS. Вы можете сделать все на 100% правильно, но все равно ничего не получится. Так что не беспокойтесь, проблема здесь не на вашей стороне.
Чтобы это заработало, вам нужно отключить проверку сертификатов TLS / SSL в OpenLDAP. LDAP PHP использует библиотеки OpenLDAP, и поэтому /etc/openldap/ldap.conf
или ~/.ldaprc
загружены и имеют значение. (Это можно увидеть, используя пример запроса PHP LDAP и запустив его с strace -e trace=open php example.php
). Проблема здесь, похоже, находится в области использования PHP библиотек OpenLDAP, некоторые отсутствующие / неправильные / не реализованные вызовы для успешной проверки сертификата TLS. Для исправления этого потребуется исправление PHP.
TLS_REQCERT never
должен быть параметром, необходимым для этого. Настройки URL и OU / DC в ldap.conf не должны иметь значения, поскольку они предоставляются из конфигурации Zabbix. Я настоятельно рекомендую изменить это в ~/.ldaprc
домашнего каталога вашего веб-сервера, чтобы не влиять на другие приложения, использующие LDAPS.
Это решение не очень хорошее, но все же лучше, чем возврат к незашифрованному LDAP. И чтобы уточнить, я попробовал вручную разместить CACerts для OpenLDAP, регенерировать кеш сертификатов и настроить TLS_REQCERT
к always
. Это отлично работало, например, ldapsearch
(использует ту же библиотеку, что и PHP), но по-прежнему не работает с функцией LDAP PHP. Так что эта попытка, скорее всего, будет пустой тратой времени. Ставить клиентский сертификат и пользоваться не пробовал TLS_KEY/TLS_CERT
как указано в ответе от @jouflux. Если это сработает, это будет лучшим решением.
Я решил эту проблему, посетив веб-интерфейс Zabbix, а затем перейдя в Администрация -> Аутентификация -> LDAP и изменение Хост LDAP параметр из имени хоста (например, ldap.example.com
) на свой IP-адрес (например, 10.6.10.10
).