Einrichten der LDAPS-Authentifizierung in Zabbix

Einrichten der LDAPS-Authentifizierung in Zabbix

Ich versuche, die LDAPS-Authentifizierung auf Zabbix 2.4 einzurichten, aber es funktioniert nicht. Hier sind die Informationen zu meiner Konfiguration:

  • Betriebssystem: Debian
  • Installierte PHP-Pakete: 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

  • Dieser Befehl funktioniert:

ldapsearch -H ldaps://ldaps.mptest.be:636 -D cn=reader,dc=antidot,dc=prv -W -b ou=people,dc=antidot,dc=prv

Dieselbe URI, OU, Anmeldung und dasselbe Passwort auf der Setup-Seite zur LDAP-Authentifizierung auf Zabbix, ich habe Folgendes:

ldap_bind(): Verbindung zum Server nicht möglich: LDAP-Server kann nicht kontaktiert werden

[authentication.php:120 → CLdapAuthValidator->validate() → CLdap->checkPass() → ldap_bind() in /usr/share/zabbix/include/classes/ldap/CLdap.php:112] LDAP: Bindung über angegebenen Bind-DN ​​nicht möglich. Anmeldename oder Passwort ist falsch!

Hier ist der Inhalt von /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

(Eine Authentifizierung ohne SSL ist auf Port 386 nicht möglich)

Antwort1

Dies funktioniert unter Ubuntu 14.04. Auf Debian basierende Systeme sollten gleich sein:

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

Antwort2

Ich habe dieses Problem gelöst, indem ich die Zabbix-Weboberfläche besucht und dann zuVerwaltung->Authentifizierung->LDAPund die Änderung derLDAP-HostParameter vom Hostnamen (z. B. ldap.example.com) zu seiner IP-Adresse (z. B. 10.6.10.10).

Antwort3

PHPs LDAP ist, um ehrlich zu sein, purer Mist. Vor einiger Zeit hatte ich auch Probleme mit Zabbix und LDAPS. Sie können alles 100 % richtig machen, aber es wird trotzdem fehlschlagen. Also keine Sorge, das Problem liegt hier nicht auf Ihrer Seite.

Damit das funktioniert, müssen Sie die TLS/SSL-Zertifikatsüberprüfung in OpenLDAP deaktivieren. PHPs LDAP verwendet die OpenLDAP-Bibliotheken, und daher sind /etc/openldap/ldap.confoder ~/.ldaprcgeladen und wichtig. (Dies kann man sehen, wenn man eine Beispiel-PHP-LDAP-Abfrage verwendet und diese mit ausführt strace -e trace=open php example.php.) Das Problem scheint hier im Bereich der Verwendung der OpenLDAP-Bibliotheken durch PHP zu liegen, einige fehlende/falsche/nicht implementierte Aufrufe für eine erfolgreiche TLS-Zertifikatsüberprüfung. Um das zu beheben, müsste PHP gepatcht werden.

TLS_REQCERT neversollte der Parameter sein, der benötigt wird, um das in Gang zu bringen. Die URL- und OU/DC-Einstellungen in ldap.conf sollten nicht relevant sein, da sie von der Zabbix-Konfiguration bereitgestellt werden. Ich empfehle dringend, dies im ~/.ldaprcStammverzeichnis Ihres Webservers zu ändern, um keine anderen Anwendungen zu beeinträchtigen, die LDAPS verwenden.

Diese Lösung ist nicht gut, aber immer noch besser als auf unverschlüsseltes LDAP zurückzugreifen. Und nur zur Klarstellung: Ich habe es versucht, indem ich CACerts für OpenLDAP manuell platziert, den Zertifikats-Cache neu generiert und TLS_REQCERTauf gesetzt habe always. Das hat mit eg gut funktioniert ldapsearch(verwendet dieselbe Bibliothek wie PHP), ist aber mit der LDAP-Funktion von PHP fehlgeschlagen. Dieser Versuch wird also wahrscheinlich Zeitverschwendung sein. Ich habe nicht versucht, das Client-Zertifikat zu platzieren und es TLS_KEY/TLS_CERTwie in der Antwort von @jouflux angegeben zu verwenden. Wenn das funktioniert, wäre es eine bessere Lösung.

verwandte Informationen