使用 TLS=required 配置 OpenLDAP

使用 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.

编辑2(几乎已修复):我可以通过加载来修复它:

# 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。可以更改吗?

答案1

我好像明白了:

我这样做了:

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

这似乎达到了预期的效果。我仍然可以运行以下命令:

ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config

但尝试在没有 SSL 的情况下绑定“ ldapsearch -xLLL -b ...”时,提示“需要 TLS 保密性”

答案2

这是通过TLS密码套件选项。示例记录在OpenLDAP Zytrax 书中的 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到参数列表中。

相关内容