现在,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
到参数列表中。