Настройте OpenLDAP с помощью GnuTLS с TLS = required

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

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

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

slapd не делает ' t start (ошибка: сбой 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]

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

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

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

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

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

2
задан 13 April 2017 в 15:14
2 ответа

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

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


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


Из slapd.conf (5) :

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

1
ответ дан 3 December 2019 в 12:36

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

От man slapd.conf

TLSVerifyClient

требовать | жестко | true

Эти ключевые слова все эквивалентны, по соображениям совместимости. Запрашивается сертификат клиента. Если сертификат не предоставлен или предоставлен плохой сертификат, сессия немедленно прерывается.

Что касается выбора шифра, Zytrax's LDAP for 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, и я подозреваю, что вы захотите проверить, какие имена шифров будут работать (из Admin guide):

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

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

 `gnutls-cli -l`.
0
ответ дан 3 December 2019 в 12:36

Теги

Похожие вопросы