openldap:可以從客戶端強制啟動 starttls 嗎?
我沒有解釋如何在伺服器上配置 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
使用 -Z 的 ldapsearch 可以
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 force 也可以從區域網路中嗅出密碼
我在沒有 -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?如果看起來不可能,我可以提出一些“想法”
- 帶有 ldap 客戶端選項的 rc 文件,其中包含傳遞給客戶端的選項,例如
LDAPSEARCH_OPTIONS="-ZZ"
- 一種辨識 tls 強制伺服器並自動啟用 -ZZ 的機制,但 localhost 或 ldapi 除外。
您可以嘗試將 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
到URIEND UPDATE
有一些提示的參考資料:
https://www.openldap.org/lists/openldap-devel/200202/msg00070.html https://ldapwiki.com/wiki/StartTLS