
Intento configurar la autenticación LDAPS en Zabbix 2.4 pero no funciona. Aquí está la información sobre mi configuración:
- SO: Debian
Paquetes PHP instalados:
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
Este comando está funcionando:
ldapsearch -H ldaps://ldaps.mptest.be:636 -D cn=reader,dc=antidot,dc=prv -W -b ou=people,dc=antidot,dc=prv
El mismo URI, OU, inicio de sesión y contraseña en la página de configuración de Autenticación LDAP en zabbix, tengo esto:
ldap_bind(): No se puede vincular al servidor: No se puede contactar con el servidor LDAP
[authentication.php:120 → CLdapAuthValidator->validate() → CLdap->checkPass() → ldap_bind() en /usr/share/zabbix/include/classes/ldap/CLdap.php:112] LDAP: no se puede vincular según lo especificado Vincular DN. ¡El nombre de usuario o la contraseña son incorrectos!
Aquí está el contenido de /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
(La autenticación sin SSL, en el puerto 386 no es posible)
Respuesta1
Esto es lo que funciona en Ubuntu 14.04. El sistema basado en Debian debería ser el mismo:
Respuesta2
Resolví este problema visitando la interfaz web de Zabbix y luego yendo aAdministración->Autenticación->LDAPy cambiando elanfitrión LDAPparámetro desde el nombre de host (por ejemplo, ldap.example.com
) a su dirección IP (por ejemplo, 10.6.10.10
).
Respuesta3
LDAP de PHP es, para ser franco, pura basura. Hace algún tiempo también tuve problemas con Zabbix y LDAPS. Puedes hacer todo 100% correcto, pero aun así fallará. Entonces, no te preocupes, el problema aquí no está de tu lado.
Para que eso funcione, debe deshabilitar la validación de certificados TLS/SSL en OpenLDAP. LDAP de PHP utiliza las bibliotecas OpenLDAP y, por lo tanto /etc/openldap/ldap.conf
, ~/.ldaprc
se cargan y son importantes. (Esto se puede ver usando una consulta PHP LDAP de ejemplo y ejecutándola con strace -e trace=open php example.php
). El problema aquí parece estar ubicado en el área del uso de PHP de las bibliotecas OpenLDAP, algunas llamadas faltantes/incorrectas/no implementadas para una validación exitosa del certificado TLS. Arreglar eso implicaría parchear PHP.
TLS_REQCERT never
debería ser el parámetro necesario para que eso funcione. La configuración de URL y OU/DC en ldap.conf no debería ser relevante ya que se proporciona desde la configuración de Zabbix. Le recomiendo encarecidamente modificarlo en ~/.ldaprc
el directorio de inicio de su servidor web, para no afectar a ninguna otra aplicación que utilice LDAPS.
Esta solución no es buena, pero sigue siendo mejor que recurrir a LDAP no cifrado. Y solo para aclarar, lo probé colocando CACerts manualmente para OpenLDAP, regenerando el caché de certificados y configurándolo TLS_REQCERT
en always
. Esto funcionó bien usando, por ejemplo, ldapsearch
(usa la misma biblioteca que PHP), pero aún falló con la función LDAP de PHP. Por lo tanto, este intento probablemente será una pérdida de tiempo. No intenté colocar el certificado de cliente y usarlo TLS_KEY/TLS_CERT
como se indica en la respuesta de @jouflux. Si eso funciona, sería una mejor solución.