サーバーで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