Zabbix에서 LDAPS 인증 설정

Zabbix에서 LDAPS 인증 설정

Zabbix 2.4에서 LDAPS 인증을 설정하려고 시도했지만 작동하지 않습니다. 내 구성에 대한 정보는 다음과 같습니다.

  • OS : 데비안
  • 설치된 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

zabbix의 인증 LDAP 설정 페이지에 있는 동일한 URI, OU, 로그인, 비밀번호는 다음과 같습니다.

ldap_bind(): 서버에 바인딩할 수 없습니다. LDAP 서버에 연결할 수 없습니다.

[authentication.php:120 → CLdapAuthValidator->validate() → CLdap->checkPass() → /usr/share/zabbix/include/classes/ldap/CLdap.php:112의 ldap_bind()] 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번 포트에서는 인증이 불가능합니다.)

답변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% 정확하게 할 수 있지만 여전히 실패할 것입니다. 그러니 걱정하지 마세요. 여기서 문제는 귀하의 몫이 아닙니다.

이 작업을 수행하려면 OpenLDAP에서 TLS/SSL 인증서 유효성 검사를 비활성화해야 합니다. PHP의 LDAP는 OpenLDAP 라이브러리를 사용하므로 로드 /etc/openldap/ldap.conf되고 ~/.ldaprc중요합니다. (예제 PHP LDAP 쿼리를 사용하고 이를 와 함께 실행하면 볼 수 있습니다 strace -e trace=open php example.php.) 여기서 문제는 OpenLDAP 라이브러리의 PHP 사용 영역, 성공적인 TLS 인증서 유효성 검사에 대한 일부 누락/잘못/구현되지 않은 호출에 있는 것 같습니다. 이 문제를 해결하려면 PHP 패치가 필요합니다.

TLS_REQCERT never이를 실행하는 데 필요한 매개변수여야 합니다. ldap.conf의 URL 및 OU/DC 설정은 Zabbix 구성에서 제공되므로 관련이 없어야 합니다. ~/.ldaprcLDAPS를 사용하는 다른 응용 프로그램에 영향을 주지 않도록 웹 서버 홈 디렉토리를 수정하는 것이 좋습니다 .

이 솔루션은 좋은 솔루션은 아니지만 암호화되지 않은 LDAP로 대체하는 것보다는 낫습니다. 그리고 명확히 하기 위해 OpenLDAP용 CACert를 수동으로 배치하고 인증서 캐시를 다시 생성 TLS_REQCERT하고 always. 예를 들어 ldapsearch(PHP와 동일한 라이브러리 사용) 사용하면 제대로 작동했지만 PHP LDAP 기능에서는 여전히 실패했습니다. 따라서 이러한 시도는 시간낭비일 가능성이 높습니다. TLS_KEY/TLS_CERT@jouflux의 답변에 표시된 대로 클라이언트 인증서를 배치하고 사용하려고 시도하지 않았습니다 . 그것이 효과가 있다면 더 나은 해결책이 될 것입니다.

관련 정보