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() → ldap_bind() in /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での認証は不可能です)

答え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)。ここでの問題は、PHP による OpenLDAP ライブラリの使用領域にあるようで、TLS 証明書の検証を成功させるための呼び出しが欠落している、間違っている、または実装されていない可能性があります。これを修正するには、PHP にパッチを当てる必要があります。

TLS_REQCERT neverは、これを実行するために必要なパラメータです。ldap.conf の URL と OU/DC 設定は、Zabbix 構成から提供されるため、関係ありません。LDAPS を~/.ldaprc使用する他のアプリケーションに影響を与えないように、Web サーバーのホーム ディレクトリでこれを変更することを強くお勧めします。

この解決策は良いものではありませんが、暗号化されていない LDAP にフォールバックするよりはましです。念のため、OpenLDAP の CACerts を手動で配置し、証明書キャッシュを再生成してTLS_REQCERTに設定してみましたalways。これは、たとえば (PHP と同じライブラリを使用) を使用するとうまくいきましたldapsearchが、PHP の LDAP 機能では失敗しました。したがって、この試みはおそらく時間の無駄になるでしょう。@jouflux の回答に示されているように、クライアント証明書を配置して使用することは試みませんでしたTLS_KEY/TLS_CERT。それが機能する場合は、より良い解決策になります。

関連情報