Настройка аутентификации LDAPS в Zabbix

Настройка аутентификации LDAPS в Zabbix

Я пытаюсь настроить аутентификацию LDAPS на Zabbix 2.4, но она не работает. Вот информация о моей конфигурации:

  • ОС: Debian
  • Установленные пакеты 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: невозможно выполнить привязку по указанному Bind 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 невозможна)

решение1

Вот что работает в Ubuntu 14.04. Система на базе Debian должна быть такой же:

https://www.novell.com/coolsolutions/tip/5838.html

решение2

Я решил эту проблему, посетив веб-интерфейс Zabbix, а затем перейдя по ссылкеАдминистрация->Аутентификация->LDAPи изменениеLDAP-хостпараметр из имени хоста (например, ldap.example.com) на его IP-адрес (например, 10.6.10.10).

решение3

PHP LDAP, честно говоря, просто отстой. Некоторое время назад я тоже боролся с Zabbix и LDAPS. Вы можете сделать все на 100% правильно, но все равно будет падать. Так что не волнуйтесь, проблема не на вашей стороне.

Чтобы это заработало, вам нужно отключить проверку сертификата TLS/SSL в OpenLDAP. PHP LDAP использует библиотеки 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Это отлично сработало с использованием eg ldapsearch(использует ту же библиотеку, что и PHP), но все еще не удалось с функцией LDAP в PHP. Так что эта попытка, скорее всего, будет пустой тратой времени. Я не пытался разместить клиентский сертификат и использовать, TLS_KEY/TLS_CERTкак указано в ответе от @jouflux. Если это сработает, то это будет лучшим решением.

Связанный контент