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

我在服务器上使用此 ldif 强制进行 TLS

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

现在的问题是,即使使用 tls 强制,也可以从局域网中嗅探密码

我运行不带 -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 强制服务器并自动启用 -ZZ 的机制,但 localhost 或 ldapi 除外。

答案1

您可以尝试将 STARTTLS 的 LDAP 扩展操作添加到客户端 LDAP 配置文件(例如 ~/.ldaprc 或 /etc/ldap/ldap.conf)中的 URI。

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 相当于添加????1.3.6.1.4.1.1466.20037到URI
-ZZ 相当于添加????!1.3.6.1.4.1.1466.20037到URI
END UPDATE

带有一些提示的参考资料:

https://lists.openldap.org/hyperkitty/list/[电子邮件受保护]/线程/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

相关内容