В настоящее время OpenLDAP необходимо настроить с помощью ldapmodify cn = config, как описано здесь . Но нигде я не могу найти, как вы настраиваете его только для приема трафика TLS. Я только что подтвердил, что наш сервер принимает незашифрованный трафик (с помощью ldapsearch и tcpdump).
Обычно я просто закрывал бы не-SSL-порт с IP-таблицами, но использование 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
. Можно ли это изменить?
TLS confidentiality required
сообщением.Это достигается с помощью опции TLSCipherSuite . Пример документирован в главе о безопасности LDAP книги OpenLDAP Zytrax . С его помощью вы можете сообщить OpenLDAP наборы шифров, которые будет принимать ваш сервер. Например, вы можете сказать, что вам не нужен набор
NULL
шифров (т.е. сеанс без шифрования).Будьте осторожны, хотя OpenLDAP может быть связан с библиотеками OpenSSL или GnuTLS. Они используют разные списки шифров для описания своей поддержки шифрования. Список шифров OpenSSL можно получить с помощью команды like,
openssl ciphers -v
а список GnuTLS -gnutls-cli -l
.Самый простой способ отключить соединение без шифрования будет:
Более конкретное ограничение с использованием синтаксиса GnuTLS :
Более полный пример может быть (используя синтаксис OpenSSL ):
Существует обсуждение списка рассылки OpenLDAP, о котором стоит прочитать по аналогичному вопросу .
Стоит также отметить, что инструменты OpenLDAP cli, например
ldapsearch
, автоматически переключаются на использование TLS при подключении к серверу, запрещающему незашифрованные соединения. Это означает, что вам не нужно добавлять-Z
в список аргументов.источник
ALL:!NULL