使用 TLS=required 配置 OpenLDAP
如今,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 -v
GnuTLS 列表使用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 列表中。