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

Настройка Kerberos

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

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

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

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

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

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

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

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

      2. Kerberos не работает на веб-клиентах.

  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.termit.local@TERMIT.LOCAL /pass * /mapuser krb-trm@TERMIT.LOCAL /ptype KRB5_NT_PRINCIPAL /crypto AES256-SHA1

    Где:

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

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

    • broker.termit.local — FQDN брокера

    • TERMIT.LOCAL — доменное имя

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

Samba DC

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

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

    sudo samba-tool user create krb-trm --description=”Service account”

    Задайте пароль для сервисной учётной записи (будет запрошен интерактивно).

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

    1. Отредактируйте атрибуты пользователя:

      sudo samba-tool user edit krb-trm
    2. В открывшемся текстовом редакторе добавьте или измените строку:

      msDS-SupportedEncryptionTypes: 24

      Сохраните изменения и выйдите из редактора.

      Значение 24 включает алгоритмы шифрования AES128 и AES256 и отключает устаревшие DES и RC4.

  3. Добавьте SPN к сервисной учетной записи:

    sudo samba-tool spn add HTTP/broker.termit.local krb-trm
  4. Сгенерируйте keytab-файл с помощью команды:

    sudo samba-tool domain exportkeytab krb-trm.keytab --principal=HTTP/broker.termit.local krb-trm

    Где:

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

    • broker.termit.local — FQDN брокера.

Сгенерированный 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.

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

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

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

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

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

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

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

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

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

2. Настройка терминального сервера/ВРМ

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

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

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

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

  • В файле конфигурации sshd (/etc/ssh/sshd_config) параметр AuthenticationMethods должен быть задан в соответсвии с рекомендациями.

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

    sudo systemctl restart sshd
  • В LDAP в свойствах объектов Linux терминальных серверов/ВРМ на вкладке Делегирование выберите Доверять компьютеру делегирование любых служб (только Kerberos).

    Только для подключения с клиентских устройств под управлением ОС Windows.

    ad samba

3. Настройка клиентского устройства

Перед началом настройки убедитесь, что клиентское устройство, на которое установлен десктоп-клиент, и терминальный сервер/ВРМ введены в один домен.

3.1. Клиентское устройство Linux

Аутентификация на брокере Termit в десктоп-клиенте

Дополнительных настроек не требуется.

Аутентификация на брокере Termit в браузере

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

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

    chrome rules

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

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;

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

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

Аутентификация на Linux терминальном сервере/ВРМ Termit

Делегирование Kerberos тикета в сессию работает, начиная с версии 2.4.26.

  1. Убедитесь, что аутентификация на брокере Termit в десктоп-клиенте осуществляется без ввода учётных данных.

  2. Проверьте, что Linux терминальный сервер/ВРМ Termit настроен по инструкции.

  3. Убедитесь, что на клиентском устройстве Linux в /etc/krb5.conf в [libdefaults] секции задан параметр forwardable = true.

Аутентификация на Windows терминальном сервере/ВРМ Termit

На данный момент подключение десктоп-клиента на ОС Linux к терминальным серверам\ВРМ на ОС Windows через Kerberos не поддерживается.

3.2. Клиентское устройство Windows

Аутентификация на брокере Termit в десктоп-клиенте и браузере

  1. Добавьте адрес внутреннего балансировщика (при «High Availability» развертывании) или брокера (при «Standalone» развертывании) в надежные сайты. В качестве примера будем рассматривать адрес broker.termit.local. Это можно сделать через групповые политики или настройки системы.

    • Групповые политики:

      1. Перейдите в Конфигурация пользователя  Административные шаблоны  Компоненты Windows  Internet Explorer  Панель управления браузером  Вкладка «Безопасность»  Список назначений зоны для веб-сайтов.

      2. Включите политику, нажмите Показать…​.

      3. В поле Имя значения добавьте необходимый адрес, в нашем примере — https://broker.termit.local/.

      4. В поле Значение укажите 2 (это «Зона надёжных сайтов»).

    • Настройки системы:

      1. В Панель управления  Сеть и Интернет  Свойства браузера  Безопасность выберите Надёжные сайты, нажмите Сайты и добавьте необходимый узел в зону. В нашем примере — запись https://broker.termit.local/.

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

    • Групповые политики:

      1. Перейдите в Конфигурация пользователя  Административные шаблоны  Компоненты Windows  Internet Explorer  Панель управления браузером  Вкладка «Безопасность»  Зона надежных сайтов  Параметры входа.

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

    • Настройки системы:

      1. В Панель управления  Сеть и Интернет  Свойства браузера  Безопасность выберите Надёжные сайты, нажмите Другой и выберите опцию Проверка подлинности  Ввод  Автоматический вход в сеть с текущим именем пользователя и паролем.

  3. Проверьте, что настройки применились и аутентификация без ввода учётных данных работает.

Аутентификация на Linux терминальном сервере/ВРМ Termit

Делегирование Kerberos тикета в сессию работает, начиная с версии 2.4.26.

  1. Убедитесь, что аутентификация на брокере Termit в десктоп-клиенте осуществляется без ввода учётных данных.

  2. Проверьте, что Linux терминальный сервер/ВРМ Termit настроен по инструкции.

  3. Убедитесь, что для доменных-объектах Linux ТС/ВРМ включено делегирование Kerberos.

При подключении по Kerberos, независимо от настроек Kerberos на терминальном сервере\ВРМ в krb5.conf (default_ccache_name) и sssd.conf (krb5_ccname_template), в Termit сессии будет использоваться файл кэша Kerberos.

Аутентификация на Windows терминальном сервере/ВРМ Termit

  1. Убедитесь, что аутентификация на брокере Termit в десктоп-клиенте осуществляется без ввода учётных данных.

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

    Укажите в них SPN для терминальных серверов. Например:

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

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