Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

LDAP-каталоги

LDAP (Lightweight Directory Access Protocol) — протокол, который используется для получения информации из служб каталогов (AD, FreeIPA, ALD Pro, SambaDC, Red ADM и так далее) о пользователях, группах и связях между ними. Эта информация в дальнейшем используется для аутентификации и авторизации пользователей в портале администратора, десктоп-клиенте и на терминальных серверах.

LDAP представляет информацию об этих сущностях в виде набора объектов (пользователь, группа), каждый из которых имеет определенный набор атрибутов (имя пользователя, имя группы, список членов группы, номер телефона пользователя).

Для работы пользователей с СТД «Термит» необходимо, чтобы система могла выполнять поиск пользователей в LDAP-каталоге, получать список групп, в которые входит пользователь, и т.д. Для этого администратору нужно указать имена классов и ряд атрибутов для объектов «Пользователь» и «Группа»:

Для работы пользователей с СТД «Термит» необходимо, чтобы система могла выполнять поиск пользователей в LDAP-каталоге, получать список групп, в которые входит пользователь, и т.д.

  • Общие атрибуты для классов объектов:

    • Атрибут для идентификации объектов — в значении этого атрибута хранится уникальный ID объекта.

    • Атрибут, содержащий имя объекта, указанное для списка членов групп — в значении этого атрибута описано имя объекта, который находится в списке членов групп.

  • Атрибуты для класса объекта «Пользователь»:

    • Атрибут для получения отображаемого имени пользователя — значение этого атрибута применяется при отображении пользователей в интерфейсе, например, при входе в систему.

    • Атрибут для поиска пользователя — атрибут применяется для поиска пользователя по его имени при аутентификации в портале администратора или десктоп-клиенте.

    • Атрибут для аутентификации на терминальном сервере Linux — в значении этого атрибута применяется имя, которое будет передаваться на сервер под управлением Linux.

    • Атрибут для аутентификации на терминальном сервере Windows — в значении этого атрибута применяется имя, которое будет передаваться на сервер под управлением Windows.

  • Атрибуты для класса объекта «Группа»:

    • Атрибут для получения отображаемого имени группы — значение этого атрибута применяется при отображении групп в интерфейсе. Например, при добавлении ролей или при настройке прав на запуск приложения.

    • Атрибут со списком членов групп — в значении этого атрибута находится информация о группе, в состав которой входят пользователи и другие группы.

В СТД «Термит» поддерживаются:

  • следующие LDAP-каталоги для аутентификации пользователей по паролю и получения информации о пользователях, группах и связях между ними:

    • AD

    • SambaDC

    • Red ADM

    • FreeIPA

    • ALD Pro

    • OpenLDAP

  • защищенные протоколы передачи данных LDAP over SSL и LDAP StartTLS.

На вкладке LDAP-каталоги при наведении курсора на полное имя каталога можно:

  • проверить соединение, нажав b  test connection;

  • удалить LDAP-каталог, нажав b  delete;

  • синхронизировать данные LDAP-каталога, нажав b  cached;

  • настроить Kerberos, нажав b  kerberos.

  • изменить настройки LDAP-каталога, нажав b  pencil.

Добавление LDAP-каталога

Чтобы добавить LDAP-каталог:

  1. В левом меню выберите раздел Настройки.

  2. Перейдите на вкладку LDAP-каталоги и нажмите Добавить LDAP.

  3. Задайте параметры для подключения службы каталогов:

    • Полное имя каталога — отображаемое имя в списке LDAP-каталогов и при входе в систему.

    • Базовое уникальное имя. Например, для домена example.com: «DC=example,DC=com».

    • Имя пользователя — уникальное имя пользователя в LDAP-каталоге. Например, для домена example.com: «CN=termitsvc,CN=users,DC=example,DC=com».

      Посмотреть уникальное имя пользователя можно в зависимости от выбранной реализации LDAP следующими способами:

      AD

      Выполните команду в PowerShell на AD контроллера домена:

      Get-ADUser %Имя_пользователя% | Select DistinguishedName

      Где %Имя_пользователя% - логин пользователя, которого нужно добавить.

      Samba

      Выполните команду с правами администратора на Samba контроллере домена:

      samba-tool user show %Имя_пользователя% | grep 'distinguishedName:'

      Где %Имя_пользователя% - логин пользователя, которого нужно добавить.

      FreeIpa

      Выполните команду с правами администратора на FreeIPA контроллере домена:

      ipa user-show %Имя_пользователя% --all | grep 'dn:'

      Где %Имя_пользователя% - логин пользователя, которого нужно добавить.

    • Пароль — пароль от сервисной учетной записи.

    • Период синхронизации (мин.)

  4. Нажмите Далее.

  5. Чтобы задать атрибуты используемого LDAP-каталога, укажите:

    • Тип LDAP-каталога — тип: AD, FreeIPA или Другой.

      Тип зависит от выбранной реализации LDAP:

      • Для Samba DC и Red ADM требуется выбрать тип каталога AD.

      • Для ALD Pro требуется выбрать тип каталога FreeIPA.

      • Для OpenLDAP и других реализаций LDAP-каталогов требуется выбрать тип Другой.

      AD
      • Класс объекта «Пользователь» — user

      • Класс объекта «Группа» — group

      • Атрибут для идентификации объектов — objectGUID

      • Атрибут для получения отображаемого имени пользователя — cn

      • Атрибут для получения отображаемого имени группы — cn

      • Атрибут для поиска пользователя — samAccountName

      • Атрибут со списком членов групп — member

      • Атрибут, содержащий имя объекта, указанное для списка членов групп — distinguishedName

      • Атрибут для аутентификации на терминальном сервере Linux — samAccountName

      • Атрибут для аутентификации на терминальном сервере Windows — msDS-PrincipalName

      • Для чтения большого количества пользователей в группе включите опцию Поддержка range для получения членов группы.

      FreeIPA
      • Класс объекта «Пользователь» — inetuser

      • Класс объекта «Группа» — ipausergroup

      • Атрибут для идентификации объектов — ipaUniqueID

      • Атрибут для получения отображаемого имени пользователя — cn

      • Атрибут для получения отображаемого имени группы — cn

      • Атрибут для поиска пользователя — uid

      • Атрибут со списком членов групп — member

      • Атрибут, содержащий имя объекта, указанное для списка членов групп — dn

      • Атрибут для аутентификации на терминальном сервере Linux — uid

      • Атрибут для аутентификации на терминальном сервере Windows — msDS-PrincipalName

      • Для чтения большого количества пользователей в группе включите опцию Поддержка range для получения членов группы.

      Другой (для OpenLDAP)
      • Класс объекта «Пользователь» — posixAccount

      • Класс объекта «Группа» — posixGroup

      • Атрибут для идентификации объектов — entryUUID

      • Атрибут для получения отображаемого имени пользователя — cn

      • Атрибут для получения отображаемого имени группы — cn

      • Атрибут для поиска пользователя — uid

      • Атрибут со списком членов групп — memberUid

      • Атрибут, содержащий имя объекта, указанное для списка членов групп — uid

      • Атрибут для аутентификации на терминальном сервере Linux — uid

      • Атрибут для аутентификации на терминальном сервере Windows — msDS-PrincipalName

      • Выключите опцию Поддержка range для получения членов группы.

  6. Нажмите Далее.

  7. Чтобы добавить адрес сервера LDAP, нажмите b  add.

    Система всегда работает с первым LDAP-сервером. Если сервер становится недоступен, система переходит к следующему.

  8. Укажите:

    • Адрес — IP-адрес или FQDN LDAP-сервера, например «termit-example-01.com».

    • Протокол — выберите из списка:

      Перед выбором протоколов LDAP over SSL и LDAP StartTLS добавьте доверенный сертификат.

      • LDAP — технология шифрования данных при подключении к LDAP-серверу не используется. Данные передаются в открытом виде по порту 389. Не рекомендуется использовать в продуктовых инсталляциях.

      • LDAP over SSL — защищенная версия протокола LDAP, которая использует технологию шифрования SSL/TLS при подключении к LDAP-серверу по порту 636.

      • LDAP StartTLS — защищенная версия протокола LDAP, при использовании которой сначала устанавливается незащищенное соединение по порту 389, а затем отправляется запрос на шифрование.

    • Порт — порт выбирается автоматически в зависимости от выбранного протокола. При необходимости параметр можно изменить.

  9. Нажмите Сохранить  Далее.

  10. На вкладке Подтверждение информации проверьте:

    • информацию о LDAP-сервере;

    • соединение. При успешном соединении появится сообщение «Проверка соединения прошла успешна».

      При необходимости вы можете вернуться на предыдущие шаги и изменить параметры.

  11. Нажмите Сохранить.

Состояние синхронизации LDAP и системы смотрите в разделе Журнал событий.

Изменение настроек LDAP-каталога

Чтобы изменить настройки LDAP-каталога:

  1. В левом меню выберите раздел Настройки.

  2. Перейдите на вкладку LDAP-каталоги и наведите курсор на полное имя каталога.

  3. Нажмите b  pencil.

  4. Активируйте/деактивируйте опцию LDAP используется, если необходимо включить/отключить LDAP-каталог.

  5. При включенном LDAP измените параметры:

    • Полное имя каталога — отображаемое имя в списке LDAP-каталогов и при входе в систему.

    • Базовое уникальное имя. Например, для домена example.com: «DC=example,DC=com».

    • Имя пользователя — уникальное имя пользователя в LDAP-каталоге. Например, для домена example.com: «CN=termitsvc,CN=users,DC=example,DC=com».

    • Пароль — пароль от сервисной учетной записи.

    • Период синхронизации (мин.).

  6. Нажмите Далее.

  7. Чтобы задать атрибуты используемого LDAP-каталога, укажите:

    • Тип LDAP-каталога — тип: AD, FreeIPA или Другой.

      Тип зависит от выбранной реализации LDAP:

      • Для Samba DC и Red ADM требуется выбрать тип каталога AD.

      • Для ALD Pro требуется выбрать тип каталога FreeIPA.

      • Для OpenLDAP и других реализаций LDAP-каталогов требуется выбрать тип Другой.

      AD
      • Класс объекта «Пользователь» — user

      • Класс объекта «Группа» — group

      • Атрибут для идентификации объектов — objectGUID

      • Атрибут для получения отображаемого имени пользователя — cn

      • Атрибут для получения отображаемого имени группы — cn

      • Атрибут для поиска пользователя — samAccountName

      • Атрибут со списком членов групп — member

      • Атрибут, содержащий имя объекта, указанное для списка членов групп — distinguishedName

      • Атрибут для аутентификации на терминальном сервере Linux — samAccountName

      • Атрибут для аутентификации на терминальном сервере Windows — msDS-PrincipalName

      • Для чтения большого количества пользователей в группе включите опцию Поддержка range для получения членов группы.

      FreeIPA
      • Класс объекта «Пользователь» — inetuser

      • Класс объекта «Группа» — ipausergroup

      • Атрибут для идентификации объектов — ipaUniqueID

      • Атрибут для получения отображаемого имени пользователя — cn

      • Атрибут для получения отображаемого имени группы — cn

      • Атрибут для поиска пользователя — uid

      • Атрибут со списком членов групп — member

      • Атрибут, содержащий имя объекта, указанное для списка членов групп — dn

      • Атрибут для аутентификации на терминальном сервере Linux — uid

      • Атрибут для аутентификации на терминальном сервере Windows — msDS-PrincipalName

      • Для чтения большого количества пользователей в группе включите опцию Поддержка range для получения членов группы.

      Другой (для OpenLDAP)
      • Класс объекта «Пользователь» — posixAccount

      • Класс объекта «Группа» — posixGroup

      • Атрибут для идентификации объектов — entryUUID

      • Атрибут для получения отображаемого имени пользователя — cn

      • Атрибут для получения отображаемого имени группы — cn

      • Атрибут для поиска пользователя — uid

      • Атрибут со списком членов групп — memberUid

      • Атрибут, содержащий имя объекта, указанное для списка членов групп — uid

      • Атрибут для аутентификации на терминальном сервере Linux — uid

      • Атрибут для аутентификации на терминальном сервере Windows — msDS-PrincipalName

      • Выключите опцию Поддержка range для получения членов группы.

  8. Нажмите Далее.

  9. На вкладке Список LDAP-серверов:

    Можно добавить адрес сервера LDAP
    1. Нажмите b  add.

    2. Укажите:

      • Адрес — IP-адрес или FQDN LDAP-сервера, например «termit-example-01.com».

      • Протокол — выберите из списка:

        Перед выбором протоколов LDAP over SSL и LDAP StartTLS добавьте доверенный сертификат.

        • LDAP — технология шифрования данных при подключении к LDAP-серверу не используется. Данные передаются в открытом виде по порту 389. Не рекомендуется использовать в продуктовых инсталляциях.

        • LDAP over SSL — защищенная версия протокола LDAP, которая использует технологию шифрования SSL/TLS при подключении к LDAP-серверу по порту 636.

        • LDAP StartTLS — защищенная версия протокола LDAP, при использовании которой сначала устанавливается незащищенное соединение по порту 389, а затем отправляется запрос на шифрование.

      • Порт — порт выбирается автоматически в зависимости от выбранного протокола. При необходимости параметр можно изменить.

    3. Нажмите Сохранить.

    Можно изменить адрес сервера LDAP
    1. Наведите курсор на адрес сервера и нажмите b  pencil.

    2. Измените:

      • Адрес — IP-адрес или FQDN LDAP-сервера, например «termit-example-01.com».

      • Протокол — выберите из списка:

        • LDAP — технология шифрования данных при подключении к LDAP-серверу не используется. Данные передаются в открытом виде по порту 389. Не рекомендуется использовать в продуктовых инсталляциях.

        • LDAP over SSL — защищенная версия протокола LDAP, которая использует технологию шифрования SSL/TLS при подключении к LDAP-серверу по порту 636.

        • LDAP StartTLS — защищенная версия протокола LDAP, при использовании которой сначала устанавливается незащищенное соединение по порту 389, а затем отправляется запрос на шифрование.

      • Порт — порт выбирается автоматически в зависимости от выбранного протокола. При необходимости параметр можно изменить.

    3. Нажмите Сохранить.

    Можно удалить адрес сервера LDAP
    1. Наведите курсор на адрес сервера и нажмите b  delete.

    2. Чтобы подтвердить удаление, нажмите Да.

Удаление LDAP-каталога

Чтобы удалить LDAP-каталог:

  1. В левом меню выберите раздел Настройки.

  2. Перейдите на вкладку LDAP-каталоги и наведите курсор на полное имя каталога.

  3. Нажмите b  delete.

  4. Нажмите Да.

После удаления LDAP-каталога пользователи не смогут:

  • войти в портал администрирования;

  • подключиться к десктоп-клиенту;

  • запускать приложения в десктоп-клиенте.

Настройка Kerberos

Kerberos необходим для реализации функции единого входа (SSO), чтобы пользователи могли войти в десктоп-клиент или на портал администрирования и запускать приложения без ввода учетных данных.

Kerberos можно настроить отдельно для каждого каталога. Если он не настроен, будет использоваться аутентификация по имени пользователя и паролю.

Настройка Kerberos состоит из нескольких этапов.

  1. Поддерживаются следующие подключения десктоп-клиента с терминальным сервером:

    • десктоп-клиент на ОС Linux с терминальным сервером на ОС Linux;

    • десктоп-клиент на ОС Windows с терминальным сервером на ОС Linux;

    • десктоп-клиент на ОС Windows с терминальным сервером на ОС Windows.

      Не поддерживаются подключения десктоп-клиента на ОС Linux с терминальным сервером на ОС Windows.

  2. При использовании сквозной Kerberos-аутентификации в сценарии, когда пользователи и терминальные серверы размещены в разных доверенных доменах одного леса, требуется выполнить дополнительные настройки:

    1. Добавьте все домены, в которых находятся пользователи и серверы, в раздел LDAP-каталоги Termit.

    2. Для каждого добавленного домена загрузите keytab-файл, выпущенный на том домене, где размещены терминальные серверы.

Создание keytab-файла

AD

Чтобы сгенерировать keytab-файл, на контроллере домена:

  1. Создайте сервисную учетную запись в домене, например krb-trm.

  2. В свойствах учетной записи включите поддержу шифрования AES128 и AES256.

  3. Сгенерируйте keytab-файл с помощью команды:

    • После символа @ доменное имя должно быть указано заглавными буквами.

    • Команда выполняется от имени администратора домена.

    ktpass /out krb-trm.keytab /princ HTTP/broker.example.com@EXAMPLE.COM /pass * /mapuser krb-trm@EXAMPLE.COM /ptype KRB5_NT_PRINCIPAL /crypto AES256-SHA1

    Где:

    • krb-trm — имя сервисной учетной записи, созданной на шаге 1.

    • krb-trm.keytab — целевой keytab-файл, сгенерированный на основе сервисной учетной записи krb-trm

    • broker.example.com — FQDN брокера

    • EXAMPLE.COM — доменное имя

Сгенерированный keytab-файл будет сохранен в текущей директории, из которой была выполнена команда, если не указан другой путь для вывода (например /out /path/to/directory/krb-trm.keytab). Далее полученный keytab-файл загрузите в настройках Kerberos.

FreeIPA/ALD Pro

Чтобы сгенерировать keytab-файл, на контроллере домена:

  1. Создайте службу FreeIPA с именем брокера с помощью команды:

     ipa service-add --force --skip-host-check HTTP/broker.termit.local

    Где:

    • ipa — утилита командной строки для работы с FreeIPA;

    • service-add — команда для добавления нового сервиса в FreeIPA;

    • --force — принудительное добавление сервиса в FreeIPA;

    • --skip-host-check — пропуск проверки наличия хоста в IPA при добавлении сервиса;

    • HTTP/broker.termit.local — имя сервиса в формате тип/хост, где:

      • HTTP – тип сервиса (в данном случае - для веб-приложений);

      • broker.termit.local — доменное имя.

  2. Сгенерируйте keytab-файл с помощью команды:

    ipa-getkeytab -p HTTP/broker.termit.local -k ~/krb_file.keytab

    Где:

    • ipa-getkeytab — утилита для получения (выгрузки) keytab-файла из FreeIPA;

    • -p HTTP/broker.termit.local — указывает principal (учетную запись Kerberos) в формате тип/хост, где:

      • HTTP – тип сервиса (для веб-приложений);

      • broker.termit.local – имя хоста, для которого создается keytab-файл;

      • -k ~/krb_file.keytab — путь к файлу, в который будет сохранен keytab.

Далее полученный keytab-файл загрузите в настройках Kerberos.

Загрузка keytab-файла

Чтобы загрузить keytab-файл:

  1. В левом меню выберите раздел Настройки.

  2. Перейдите на вкладку LDAP-каталоги и наведите курсор на полное имя каталога.

  3. Нажмите b  kerberos.

  4. Чтобы включить использование Kerberos, активируйте опцию Включить.

  5. Чтобы загрузить файл, нажмите на поле keytab-файл.

  6. Нажмите Сохранить.

Keytab-файл загружен.

Настройка терминального сервера

Для работы аутентификации по Kerberos на терминальных серверах под управлением Linux, включая поддерживаемые операционные системы (РЕД ОС, Astra Linux, Debian, ALT Linux, OpenSUSE):

  • В файле конфигурации sshd (/etc/ssh/sshd_config) в параметре GSSAPIAuthentication, укажите значение «yes».

    В ALT Linux файл конфигурации sshd находится по пути: /etc/openssh/sshd_config.

  • Перезагрузите sshd с помощью команды:

    sudo systemctl restart sshd

Дополнительно для систем Astra Linux и ALT Linux

Для корректной обработки имён пользователей с заглавными буквами:

  • В файле /etc/sssd/sssd.conf укажите:

    case_sensitive = Preserving
  • Перезагрузите sssd с помощью команды:

    sudo systemctl restart sssd

    Для серверов под управлением Windows настройка не требуется, аутентификация по Kerberos осуществляется по умолчанию через протоколы Windows.

Настройка десктоп-клиента

Перед началом настройки проверьте, что десктоп-клиент и терминальный сервер введены в один домен.

  • Для использования Kerberos на клиентском устройстве с ОС Windows настройте систему. Для этого:

    1. В разделе Конфигурация компьютера  Административные шаблоны  Система  Передача учетных данных настройте политики «Разрешить передачу учетных данных, установленных по умолчанию» и «Разрешить передачу учетных данных, установленных по умолчанию, с проверкой подлинности сервера 'только NTLM'». Укажите в них SPN для терминальных серверов. Настройки должны выполняться администратором домена.

      Например:

      • TERMSRV/terminal1.example.com — для включения Kerberos при доступе на сервер terminal1.example.com.

      • TERMSRV/*.example.com — для включения Kerberos при доступе ко всем серверам из домена example.com.

    2. Добавьте адрес broker.example.com в доверенные сайты.

    3. Включите опцию «Автоматический вход с текущим именем пользователя и паролем» в параметрах безопасности доверенных сайтов.

    4. Перейдите в другой браузер, например Edge, и проверьте, что настройки применились.

      После успешной настройки авторизация в СТД «Термит» будет выполнена без запроса ввода имени пользователя и пароля.

  • Для использования Kerberos на клиентском устройстве с ОС Linux настройте браузер. Ниже приведены инструкции по настройке для Google Chrome и Mozilla Firefox.

    • Для браузера Google Chrome:

      1. Создайте в каталоге /etc/chromium/policies/managed/ файл mydomain.json с повышенными правами root, если он не был создан ранее, и добавьте в него параметры:

        {
        "AuthServerAllowlist": "*.termit.local",
        "AuthNegotiateDelegateAllowlist": "*.termit.local"
        }
      2. Откройте в браузере Google Chrome страницу chrome://policy и проверьте, что настройки применились.

        s  browser5

        После успешной настройки авторизация в СТД «Термит» будет выполнена без запроса ввода имени пользователя и пароля.

    • Для браузера Mozilla Firefox:

      1. Откройте браузер Mozilla Firefox и перейдите на страницу конфигурации about:config.

      2. Добавьте параметр .termit.local для опций:

        • network.negotiate-auth.trusted-uris;

        • network.automatic-ntlm-auth.trusted-uris;

        • network.negotiate-auth.delegation-uris;

          s  browser6
      3. Примените изменения и перезапустите браузер.

        После успешной настройки авторизация в СТД «Термит» будет выполнена без запроса ввода имени пользователя и пароля.

        При включенной аутентификации по Kerberos запрашивается пароль для открытия RDP-сессии с клиентской машины под управлением Linux.