Настройте OpenLDAP, используя GnuTLS с TLS= требуется

У нас есть сервер openldap и мы не хотим разрешать незашифрованный обмен данными, поэтому приемлемым является либо tls через порт 389 (starttls) или больше 636 (ldaps).

Поскольку мы используем slapd.conf для конфигурации, olcSecurity не вариант

TLSCipherSuite кажется, способ сделать это с slapd.conf. Но при использовании этого slapd либо не запускается, либо игнорирует настройки (т.е. принимает незашифрованные запросы).

slapd не запускается (ошибка: сбой TLS init def ctx: -1) при использовании:

- TLSCipherSuite ALL
- TLSCipherSuite Default
- TLSCipherSuite ALL:!NULL
- TLSCipherSuite ALL:!aNULL
- TLSCipherSuite AES256-SHA #one of the ciphers offered by openssl

slapd запускается, но принимает незашифрованные запросы при использовании:

- TLSCipherSuite NORMAL
- TLSCipherSuite NORMAL:!NULL #would be acceptable
- TLSCipherSuite !NULL #would be acceptable

Мы тестируем с

ldapsearch -L -x -W -h [SERVER] -D [USER] - b [SEARCHBASE] uid=[USER] 

(В открытом виде)

а также

ldapsearch -L -x -W -ZZ -h [SERVER] -D [USER] - b [SEARCHBASE] uid=[USER]

(Зашифрованный)

ОС openldap работает на Debian 8.7. Версия openldap, кажется, использует gnutls, а не openssl, так что это может быть причиной проблем.

Но последние три TLSCipherSuite вариации кажутся верным синтаксисом, по крайней мере slapd запускается без ошибок. Почему не !NULL запретить slapd принимать незашифрованные запросы? Последние два (используйте любой доступный шифр, но не допускайте никакого шифра) будут приемлемыми.

Требуются ли дополнительные настройки / параметры?

Обратите внимание, что мы попробовали приведенные здесь предложения (как описано выше), но это не сработало.

2 ответа

Решение

Прекратить использование slapd.conf но это всего лишь общий совет. Большинство, если не все olc* директивы от slapd-config доступны как не-olc директивы для slapd.conf Конфигурация стиля.

За security что-то порядка security tls=1 должно быть достаточно, если вы также не делаете SASL не-TLS.


Ваши манипуляции TLSCipherSuite не будет работать, потому что они контролируют приемлемые шифры только после того, как TLS используется, не имеет значения при выборе, использовать или не использовать TLS. Для этого вы захотите использовать security, Тем не менее, вы должны использовать лучшие параметры TLS, например, по крайней мере, TLSCipherSuite HIGH:!aNull:!MD5:@STRENGTH а также olcTLSProtocolMin 3.1,


От slapd.conf(5):

security <factors>
Укажите набор факторов силы безопасности (разделенных пробелами), которые требуется (см. sasl-secprops's minssf опция для описания факторов силы безопасности). Директива может быть указана глобально и / или для каждой базы данных. ssf=<n> определяет общий коэффициент прочности безопасности. transport=<n> определяет коэффициент прочности транспортной безопасности. tls=<n> указывает коэффициент прочности безопасности TLS. sasl=<n> определяет коэффициент прочности безопасности SASL. update_ssf=<n> указывает общий коэффициент прочности безопасности, который требуется для обновления каталога. update_transport=<n> задает коэффициент прочности безопасности транспорта, который требуется для обновления каталога. update_tls=<n> задает коэффициент прочности безопасности TLS, который требуется для обновления каталога. update_sasl=<n> задает коэффициент прочности безопасности SASL, который требуется для обновления каталога. simple_bind=<n> определяет коэффициент безопасности, необходимый для простой аутентификации по имени пользователя и паролю. Обратите внимание, что транспортный фактор является мерой безопасности, обеспечиваемой базовым транспортом, например, ldapi:// (и, в конечном итоге, IPSEC). Это обычно не используется.

Если вы должны продолжать использовать slapd.conf, то этот поток содержит ответ, который вам нужен:

От человека slapd.conf

TLSVerifyClient <level>

demand | hard | true

Все эти ключевые слова эквивалентны по причинам совместимости. Сертификат клиента запрашивается. Если сертификат не предоставлен или предоставлен неверный сертификат, сеанс немедленно прекращается.

С точки зрения выбора шифров, LDAP Zytrax для Rocket Scientists предлагает несколько советов:

# Cipher-list contains only RSA based
# authentication and key-exchange suites 
# supported by TLSv1 (and SSLv3)
TLS_CIPHER_SUITE TLSv1+RSA

# Cipher-list contains only RSA based
# authentication and key-exchange suites 
# supported by TLSv1 (and SSLv3)
# excludes EXPORT and NULL suites
TLS_CIPHER_SUITE TLSv1+RSA:!EXPORT:!NULL

# Ordered list of RSA based
# authentication and key-exchange suites
TLS_CIPHER_SUITE DES-CBC-SHA:DES-CBC3-SHA:RC4-SHA:RC4-MD5

# All ciphers excluding NULL
TLS_CIPHER_SUITE ALL:!NULL

# Default equivalent value if not defined
TLS_CIPHER_SUITE ALL

Вам нужно изменить TLS_CIPHER_SUITE в TLSCipherSuiteи я подозреваю, что вы можете проверить, какие имена шифров будут работать (из руководства администратора):

Помимо отдельных имен шифров, могут быть полезны спецификаторы HIGH, MEDIUM, LOW, EXPORT и EXPORT40, а также TLSv1, SSLv3 и SSLv2.

Для получения списка шифров в GnuTLS используйте:

   `gnutls-cli -l`
Другие вопросы по тегам