Назад | Перейти на главную страницу

Как увидеть TLS-шифр соединения openldap?

Наши серверы OpenLDAP работают с версией на EL6. OpenLDAP построен на основе библиотек Mozilla Network Security Services (NSS). Наши клиенты LDAP поступают из самых разных систем Unix и Linux.

Мы не можем заставить соединения OpenLDAP работать для клиентов или репликации, когда мы используем наши предпочтительные шифры TLS.

Например, если мы используем 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 станет EOL. Это другая проблема.

Я не смог сделать это напрямую с tcpdump или tshark на узле. Что мне нужно было сделать, так это захватить tcpdump на машине, перенесите данные на мой ноутбук, а затем запустите современную версию Wireshark для https://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