openldap:クライアントを強制的に起動することは可能ですか?

openldap:クライアントを強制的に起動することは可能ですか?

サーバーでtls-ldapを構成する方法については説明していません。Googleでこれを構成する方法はたくさんあります(tls証明書の生成、ldifの生成、ldifのインポート、ldapsearch -ZZの試みなど)。サーバーでTLSを強制的に実行するのも簡単なため、-Zまたは-ZZのない接続は拒否されます。

ldapsearch -LLL -D "cn=ldapadm,dc=ldap1,dc=mydom,dc=priv" -wPASSWORD -b dc=ldap1,dc=mydom,dc=priv uidNumber=10009 uidNumber
ldap_bind: Confidentiality required (13)
    additional info: TLS confidentiality required

ldapsearchでは-Zを使用してください。

ldapsearch -Z -LLL -D "cn=ldapadm,dc=ldap1,dc=mydom,dc=priv" -wPASSWORD -b dc=ldap1,dc=mydom,dc=priv uidNumber=10009 uidNumber
dn: sambaSID=S-1-5-21-38458588-165473958-13245875-1289,ou=idmap,dc=ldap1,dc=mydom,dc=priv
uidNumber: 10009

TLSを強制するために、サーバーはこのldifを使用します。

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

これで問題は、TLSを実行してもLANからパスワードをスニッフィングできることです。

-Zなしでコマンドを実行しましたが、接続が拒否されました。

ldapsearch -LLL -D "cn=ldapadm,dc=ldap1,dc=mydom,dc=priv" -wPASSWORD -b dc=ldap1,dc=mydom,dc=priv uidNumber=10009 uidNumber
ldap_bind: Confidentiality required (13)
    additional info: TLS confidentiality required

しかし、tcpdumpはパスワードを見ることができます!

tcpdump -i any port 389 -vvv -Xx|egrep --colour cn= -A 11
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
    blah blah blah blah blah blah blah blah blah blah  .`7...."cn=ldapa
    blah blah blah blah blah blah blah blah blah blah  dm,dc=ldap1,dc=m
    blah blah blah blah blah blah blah blah blah blah  ydom,dc=priv..PAS
    blah blah blah blah blah blah blah blah blah blah  SSWORDCLEAR!
....

質問は簡単です。 tlsがサーバーに強制されると、ldapsearchとすべてのLDAPクライアントが-Zを使用するように強制できますか?不可能に見える場合は、いくつかの「アイデア」を提案することができます。

1)クライアントに渡されるオプションを含むldapクライアントオプションを含むrcファイル。

LDAPSEARCH_OPTIONS="-ZZ"

2) TLS 強制サーバを認識し、localhost または ldapi を除いて -ZZ を自動的にイネーブルにするメカニズムです。

ベストアンサー1

クライアントの LDAP 構成ファイル (例: ~/.ldaprc または /etc/ldap/ldap.conf) の URI に STARTTLS の LDAP 拡張操作を追加してみることができます。

URI ldap://<ldap-server>/????1.3.6.1.4.1.1466.20037

私はこれである程度成功したようです。このオプションがTLS_REQCERT demand機能しなくなったか、STARTTLSがLDAP設定ファイルの証明書オプションとどのようにやり取りするのかよくわかりません。上記の拡張ジョブ構成を使用しても、STARTTLSをサポートしていないサーバーでSTARTTLSを試してからプレーンテキストに戻るセッションが表示され続けます。

更新:OIDの前に感嘆符(!)を追加すると、クライアントエラーがプレーンテキストに戻るのを防ぐことができるようです。例えば
URI ldap://<ldap-server>/????!1.3.6.1.4.1.1466.20037

したがって、クライアント(たとえばldapsearch)コマンドラインオプションのようです。 -Z は URI に
追加するのと同じです。 -ZZはURIに追加するのと同じです。 END UPDATE????1.3.6.1.4.1.1466.20037
????!1.3.6.1.4.1.1466.20037

いくつかのヒントを含む参考資料:

https://lists.openldap.org/hyperkitty/list/[Eメール保護]/スレッド/SXWOL5SVSLWSNX35QFPVP6BPSLSHWOYG/#SXWOL5SVSLWSNX35QFPVP6BPSLSHWOYG
https://www.openldap.org/lists/openldap-devel/200202/msg00070.html https://ldapwiki.com/wiki/StartTLS
https://www.rfc-editor.org/rfc/rfc4511#page-40
https://git.openldap.org/search?utf8=%E2%9C%93&snippets=false&scope=&repository_ref=master&search=LDAP_EXOP_START_TLS&group_id=13&project_id=1

おすすめ記事