Ldap

使用 TLS=required 配置 OpenLDAP

  • January 4, 2013

如今,OpenLDAP 需要使用 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. 那可以改變嗎?

我好像明白了:

我這樣做了:

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 機密性”

這是通過TLSCipherSuite選項實現的。OpenLDAP Zytrax book 的 LDAP 安全章節中記錄了一個範例。有了它,您可以告訴 OpenLDAP 您的伺服器將接受的密碼套件。例如,您可以告訴您不需要NULL密碼套件(即:非加密會話)。

請注意,儘管 OpenLDAP 可以連結到 OpenSSL 或 GnuTLS 庫。那些使用不同的密碼列表來描述他們的加密支持。OpenSSL 密碼列表可以使用類似命令獲得,openssl ciphers -vGnuTLS 列表使用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 郵件列表討論值得一讀。

還值得注意的是,OpenLDAP cli 工具(如ldapsearch)在連接到禁止未加密連接的伺服器時會自動切換到使用 TLS。這意味著您不需要添加-Z到 args 列表中。

引用自:https://serverfault.com/questions/459718