我们的 OpenLDAP 服务器运行 EL6 版本。OpenLDAP 是针对 Mozilla 网络安全服务 (NSS) 库构建的。我们的 LDAP 客户端来自各种 Unix 和 Linux 系统。
当我们使用首选的 TLS 密码时,我们无法让 OpenLDAP 连接为客户端或复制工作。
例如,如果我们使用 Red Hat 的仅使用最强的可用密码列表,例如:
# /etc/openldap/slapd.conf
TLSProtocolMin 3.2
TLSCipherSuite ECDHE-RSA-AES256-SHA384:AES256-SHA256:!RC4:HIGH:!MD5:!EDH:!EXP:!SSLV2:!eNULL
客户端连接失败,因为它们不符合我们的 ACL 对最低安全强度因子 (SSF) 的要求:
slapd[22887]: conn=1022 fd=20 ACCEPT from IP=192.168.100.101:35936 (IP=192.168.100.100:636)
slapd[22887]: conn=1022 fd=20 TLS established tls_ssf=128 ssf=128
...
slapd[22887]: <= check a_authz.sai_ssf: ACL 256 > OP 128
我如何才能知道这个连接使用了哪种密码,以便可以将其从列表中删除?
如果我们禁用密码列表并使用 OpenLDAP + NSS 提供的默认值,它就可以起作用:
# /etc/openldap/slapd.conf
TLSProtocolMin 3.2
# TLSCipherSuite ECDHE-RSA-AES256-SHA384:AES256-SHA256:!RC4:HIGH:!MD5:!EDH:!EXP:!SSLV2:!eNULL
slapd[6020]: conn=1003 fd=20 ACCEPT from IP=192.168.100.101:35936 (IP=192.168.100.100:636)
slapd[6020]: conn=1003 fd=20 TLS established tls_ssf=256 ssf=256
但是,默认列表是不可接受的,因为它包含一些我们的安全团队不想要的弱密码,例如 RC4-SHA 和 RC4-MD5 密码。
我们知道 EL6 将于今年年底停止服务。这是另一个问题。
答案1
我无法直接在节点上执行此操作tcpdump
。tshark
我所要做的是tcpdump
在机器上捕获数据,将数据传输到我的笔记本电脑,然后运行现代版本的 Wiresharkhttps://security.stackexchange.com/questions/52150/identify-ssl-version-and-cipher-suite
另一个非常有用的命令是使用nmap
脚本来枚举密码:
$ nmap --script ssl-enum-ciphers -p 636 ldap.example.org -Pn
PORT STATE SERVICE
636/tcp open ldapssl
| ssl-enum-ciphers:
...
| TLSv1.2
| Ciphers (16)
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
| TLS_RSA_WITH_3DES_EDE_CBC_SHA
| TLS_RSA_WITH_AES_128_CBC_SHA
| TLS_RSA_WITH_AES_128_CBC_SHA256
| TLS_RSA_WITH_AES_128_GCM_SHA256
| TLS_RSA_WITH_AES_256_CBC_SHA
| TLS_RSA_WITH_AES_256_CBC_SHA256
| TLS_RSA_WITH_AES_256_GCM_SHA384
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
Nmap done: 1 IP address (1 host up) scanned in 0.34 seconds
这些AES_128
密码导致了我的问题,因此我通过将其添加到排除密码列表中来禁用它们:
TLSCipherSuite HIGH:!LOW:!MEDIUM:!RC4:HIGH:!MD5:!EDH:!EXP:!SSLV2:!eNULL:!AES128