RHEL 8.10 OpenLDAP TLS не удается запустить

Вопрос или проблема

У меня работает сервер Red Hat 8.10 с OpenLDAP Server 2.4.46, настроенный для TLS через порт 389 и с самоподписанным сертификатом. Я использую sssd для аутентификации.

На сервере LDAP работает команда id (username). Команда ldapsearch -x uid=(username) работает. Я могу входить с помощью SSH ключей. Я не могу войти с помощью пароля.

Когда я пытаюсь войти с паролем, мне отказывается в аутентификации. Сообщение об ошибке slapd:

slapd conn=1221 op=0 do_extended: unsupported operation “1.3.6.1.4.1.1466.20037”

sssd показывает схожую ошибку.

Кто-нибудь знает, как это исправить? Это связано с тем, что TLS не устанавливает безопасное соединение, и это всё, что мне известно. Я не понимаю, какие сертификаты необходимы и какие добавить в CA-Trust (и как это сделать).

Интернет оказался ужасно бесполезным.
P.S. Мне ничего не мешает использовать ldaps на порту 636, просто я не уверен, как его настроить.

Ответ или решение

По описанию вашей проблемы можно сделать вывод, что вы сталкиваетесь с трудностями, связанными с использованием TLS на сервере OpenLDAP, установленном на RHEL 8.10, для обеспечения безопасности аутентификации через sssd. Основной упор стоит сделать на настроек TLS и использовании самозаверяющего сертификата, а также на обработке ошибки, связанной с неподдерживаемой операцией.

Теория

TLS (Transport Layer Security) — это криптографический протокол, который обеспечивает безопасный обмен данными между клиентом и сервером. Для работы TLS вам необходимы корректные сертификаты, которые удостоверяют аутентичность сервера. В случае с OpenLDAP обычно используется самозаверяющий сертификат, что часто приводит к множеству проблем, связанных с доверием и правильной настройкой.

Ошибка unsupported operation "1.3.6.1.4.1.1466.20037" указывает на несовпадение ожиданий клиента и сервера в процессе установления защищенного соединения. Эта ошибка обычно связана с нехваткой поддержки StartTLS как расширенной операции на уровне OpenLDAP. А поскольку вы используете TLS, это может быть связано с тем, как и где ваш сертификат зарегистрирован.

Пример

Вы упоминаете, что можете использовать id (username) и ldapsearch -x uid=(username), что указывает на работоспособность базового уровня LDAP без TLS. Однако при попытке работы через TLS сервер не распознает операцию и отклоняет аутентификацию с паролем.

Пример успешного подключения без использования TLS:

ldapsearch -x -h ldap.example.com -b "dc=example,dc=com" "(uid=john)"

Аналогичный запрос с использованием TLS может выглядеть следующим образом:

ldapsearch -x -H ldaps://ldap.example.com -b "dc=example,dc=com" -D "uid=admin,dc=example,dc=com" -W

Для работы этого запроса требуется корректно настроенный сертификат.

Применение

  1. Проверка сертификатов:

    • Убедитесь, что самозаверяющий сертификат сервера правильно установлен. Обычно он должен находиться в /etc/openldap/certs.
    • Проверьте, что сертификаты клиента и сервера вы доверяете (establish trust).
  2. Добавление сертификата в CA-Trust:

    • Чтобы ваш самозаверяющий сертификат доверяли на уровне системы, вам необходимо добавить его в хранилище доверенных сертификатов:
      cp /etc/openldap/certs/my-selfsigned.crt /etc/pki/ca-trust/source/anchors/
      update-ca-trust
  3. Настройка OpenLDAP:

    • Убедитесь, что файл конфигурации LDAP (/etc/openldap/slapd.d/cn=config.ldif) содержит правильные указания на сертификат и ключ. Например:
      olcTLSCertificateFile: /etc/openldap/certs/my-selfsigned.crt
      olcTLSCertificateKeyFile: /etc/openldap/certs/my-private.key
  4. Конфигурация sssd:

    • Проверьте файл конфигурации sssd (/etc/sssd/sssd.conf), чтобы он был настроен на использование правильного ldaps URL и корректные опции для обеспечения поддержки TLS.
  5. Смена порта на 636:

    • Если используемая конфигурация на порту 389 вызывает проблемы из-за StartTLS, вы всегда можете переключиться на порт 636 (LDAPS):
      • Убедитесь, что slapd слушает порт 636:
        /usr/sbin/slapd -h "ldap://123.45.67.89:389/ ldaps://123.45.67.89:636/"
    • Настройте клиентские приложения на использование ldaps:// для соединений вместо отдельной команды StartTLS.
  6. Журнал и трассировка:

    • Используйте логирование для отслеживания подключения и ошибки. Включите детализированное логирование в slapd и sssd для лучшей диагностики.

Внедрение данных мер должно помочь устранить проблему, связанную с неподдерживаемой операцией и невозможностью аутентификации через TLS. Если после всех мероприятий проблема все еще сохраняется, рассмотрите обновление версии слеапд до более новой, а также обратитесь за поддержкой в RHEL, так как поддержка от производителя нередко включает специфические изменения и патчи, особенно связанных с безопасностью и интеграцией системных компонент.

Оцените материал
Добавить комментарий

Капча загружается...