web-dev-qa-db-ja.com

TLSでOpenLDAPを構成する=必須

現在、OpenLDAPは here の説明のように、ldapmodify cn = configで構成する必要があります。しかし、TLSトラフィックをのみ受け入れるように構成する方法はどこにもありません。私たちのサーバーが暗号化されていないトラフィックを受け入れることを確認しました(ldapsearchおよびtcpdumpを使用)。

通常、私はIPテーブルで非SSLポートを閉じるだけですが、SSLポートの使用は明らかに非推奨であるため、そのオプションはありません。

したがって、次のようなSSL構成コマンドを使用します。

dn: cn=config
changetype:modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/bla.key
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/bla.crt
-
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/ca.pem

TLSを強制するためのパラメーターはありますか?

編集:olcTLSCipherSuiteを試しましたが、機能しません。デバッグ出力:

TLS: could not set cipher list TLSv1+RSA:!NULL.
main: TLS init def ctx failed: -1
slapd destroy: freeing system resources.
slapd stopped.
connections_destroy: nothing to destroy.

Edit2(ほぼ修正済み):読み込むことで修正できました:

# cat force-ssl.tx 
dn: cn=config
changetype:  modify
add: olcSecurity
olcSecurity: tls=1

しかし、次のようなコマンド

ldapmodify -v -Y EXTERNAL -H ldapi:/// -f /etc/ssl/tls-required.ldif

もう働かないで...そしてそれを次のように変更します:

ldapmodify -v -x -D "cn=admin,dc=domain,dc=com" -H ldap://ldap.bla.tld/ -ZZ -W -f force-ssl.txt

「ldap_bind:無効な資格情報(49)」をくれます。どうやら、このbinddnはrootdnとして指定されていますが、cn=configを変更するために使用することはできません。変更できますか?

16
Halfgaar

私はそれを得たようです:

これは私がしました:

dn: olcDatabase={1}hdb,cn=config
changetype:  modify
add: olcSecurity
olcSecurity: tls=1

そして、それは望ましい効果を持っているようです。私はまだ次のようなコマンドを実行できます:

ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config

しかし、「ldapsearch -xLLL -b ... "SSLなしの場合:" TLS機密性が必要です "

16
Halfgaar

これは TLSCipherSuite オプションで実現されます。例は OpenLDAP ZytraxブックのLDAPセキュリティの章 に記載されています。これを使用して、サーバーが受け入れる暗号スイートをOpenLDAPに通知できます。たとえば、NULL暗号スイート(つまり、非暗号化セッション)が不要であることを伝えることができます。

ただし、OpenLDAPはOpenSSLまたはGnuTLSライブラリーにリンクできることに注意してください。それらは暗号化サポートを記述するために異なる暗号リストを使用します。 OpenSSL暗号リストはopenssl ciphers -vのようなコマンドで取得でき、GnuTLSリストはgnutls-cli -lで取得できます。

暗号化せずに接続を無効にする最も簡単な方法は、次のようになります。

dn: cn=config
changetype: modify
replace: olcTLSCipherSuite
olcTLSCipherSuite: ALL:!NULL

GnuTLS構文を使用したより具体的な制限

dn: cn=config
changetype: modify
replace: olcTLSCipherSuite
olcTLSCipherSuite: TLS_RSA_CAMELLIA_128_CBC_SHA1:TLS_RSA_CAMELLIA_256_CBC_SHA1:!NULL

より完全な例は、(OpenSSL構文を使用)です。

dn: cn=config
changetype: modify
replace: olcTLSCipherSuite
olcTLSCipherSuite: HIGH:+SSLv3:+TLSv1:MEDIUM:+SSLv2:@STRENGTH:+SHA:+MD5:!NULL

読む価値のあるOpenLDAPメーリングリストのディスカッションがあります 同様の質問について

暗号化されていない接続を禁止するサーバーに接続すると、ldapsearchなどのOpenLDAP cliツールが自動的にTLSの使用に切り替わることにも注意してください。これは、引数リストに-Zを追加する必要がないではないことを意味します。

3
Tonin