Настройка Kerberos
Kerberos необходим для реализации функции единого входа (SSO), чтобы пользователи могли войти в десктоп-клиент или на портал администрирования и запускать приложения без ввода учетных данных.
Kerberos можно настроить отдельно для каждого каталога. Если он не настроен, будет использоваться аутентификация по имени пользователя и паролю.
Настройка Kerberos состоит из нескольких этапов.
|
Создание keytab-файла
AD
Чтобы сгенерировать keytab-файл, на контроллере домена:
-
Создайте сервисную учетную запись в домене, например
krb-trm. -
В свойствах учетной записи включите поддержу шифрования AES128 и AES256.
-
Сгенерируйте
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-файл, на контроллере домена:
-
Создайте сервисную учетную запись в домене, например
krb-trm:sudo samba-tool user create krb-trm --description=”Service account”Задайте пароль для сервисной учётной записи (будет запрошен интерактивно).
-
В свойствах учетной записи включите поддержу шифрования AES128 и AES256. Для этого:
-
Отредактируйте атрибуты пользователя:
sudo samba-tool user edit krb-trm -
В открывшемся текстовом редакторе добавьте или измените строку:
msDS-SupportedEncryptionTypes: 24Сохраните изменения и выйдите из редактора.
Значение 24 включает алгоритмы шифрования AES128 и AES256 и отключает устаревшие DES и RC4.
-
-
Добавьте SPN к сервисной учетной записи:
sudo samba-tool spn add HTTP/broker.termit.local krb-trm -
Сгенерируйте
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-файл, на сервере каталогов:
-
Создайте службу 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— доменное имя.
-
-
-
Сгенерируйте
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-файл:
-
На портале администрирования в левом меню выберите раздел Настройки.
-
Перейдите на вкладку LDAP-каталоги и наведите курсор на полное имя каталога.
-
Нажмите
. -
Чтобы включить использование Kerberos, активируйте опцию Включить.
-
Чтобы загрузить файл, нажмите на поле keytab-файл.
-
Нажмите Сохранить.
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.
3. Настройка клиентского устройства
Перед началом настройки убедитесь, что клиентское устройство, на которое установлен десктоп-клиент, и терминальный сервер/ВРМ введены в один домен.
3.1. Клиентское устройство Linux
Аутентификация на брокере Termit в десктоп-клиенте
Дополнительных настроек не требуется.
Аутентификация на брокере Termit в браузере
- Chrome
-
-
Создайте в каталоге /etc/chromium/policies/managed/ файл mydomain.json с повышенными правами root, если он не был создан ранее, и добавьте в него параметры:
{ "AuthServerAllowlist": "*.termit.local", "AuthNegotiateDelegateAllowlist": "*.termit.local" } -
Откройте в браузере Google Chrome страницу chrome://policy и проверьте, что настройки применились.
После успешной настройки авторизация в Termit будет выполнена без запроса ввода имени пользователя и пароля.
-
- Firefox
-
-
Откройте браузер Mozilla Firefox и перейдите на страницу конфигурации about:config.
-
Добавьте параметр .termit.local для опций:
-
network.negotiate-auth.trusted-uris;
-
network.automatic-ntlm-auth.trusted-uris;
-
network.negotiate-auth.delegation-uris;
-
-
Примените изменения и перезапустите браузер.
-
После успешной настройки авторизация в Termit будет выполнена без запроса ввода имени пользователя и пароля.
Аутентификация на Linux терминальном сервере/ВРМ Termit
|
Делегирование Kerberos тикета в сессию работает, начиная с версии 2.4.26. |
-
Убедитесь, что аутентификация на брокере Termit в десктоп-клиенте осуществляется без ввода учётных данных.
-
Проверьте, что Linux терминальный сервер/ВРМ Termit настроен по инструкции.
-
Убедитесь, что на клиентском устройстве Linux в /etc/krb5.conf в [libdefaults] секции задан параметр forwardable = true.
Аутентификация на Windows терминальном сервере/ВРМ Termit
|
На данный момент подключение десктоп-клиента на ОС Linux к терминальным серверам\ВРМ на ОС Windows через Kerberos не поддерживается. |
3.2. Клиентское устройство Windows
-
Добавьте адрес внутреннего балансировщика (при «High Availability» развертывании) или брокера (при «Standalone» развертывании) в надежные сайты. В качестве примера будем рассматривать адрес broker.termit.local. Это можно сделать через групповые политики или настройки системы.
-
Групповые политики:
-
Перейдите в .
-
Включите политику, нажмите Показать….
-
В поле Имя значения добавьте необходимый адрес, в нашем примере — https://broker.termit.local/.
-
В поле Значение укажите 2 (это «Зона надёжных сайтов»).
-
-
Настройки системы:
-
В выберите Надёжные сайты, нажмите Сайты и добавьте необходимый узел в зону. В нашем примере — запись https://broker.termit.local/.
-
-
-
Включите опцию Автоматический вход с текущим именем пользователя и паролем в параметрах безопасности доверенных сайтов. Это можно сделать через групповые политики или настройки системы.
-
Групповые политики:
-
Перейдите в .
-
Включите политику и выберите в Параметрах входа опцию Автоматический вход в сеть с текущим именем пользователя и паролем.
-
-
Настройки системы:
-
В выберите Надёжные сайты, нажмите Другой и выберите опцию .
-
-
-
Проверьте, что настройки применились и аутентификация без ввода учётных данных работает.
Аутентификация на Linux терминальном сервере/ВРМ Termit
|
Делегирование Kerberos тикета в сессию работает, начиная с версии 2.4.26. |
-
Убедитесь, что аутентификация на брокере Termit в десктоп-клиенте осуществляется без ввода учётных данных.
-
Проверьте, что Linux терминальный сервер/ВРМ Termit настроен по инструкции.
-
Убедитесь, что для доменных-объектах Linux ТС/ВРМ включено делегирование Kerberos.
|
При подключении по Kerberos, независимо от настроек Kerberos на терминальном сервере\ВРМ в krb5.conf (default_ccache_name) и sssd.conf (krb5_ccname_template), в Termit сессии будет использоваться файл кэша Kerberos. |
Аутентификация на Windows терминальном сервере/ВРМ Termit
-
Убедитесь, что аутентификация на брокере Termit в десктоп-клиенте осуществляется без ввода учётных данных.
-
В групповых политиках в разделе настройте параметры Разрешить передачу учетных данных, установленных по умолчанию и Разрешить передачу учетных данных, установленных по умолчанию, с проверкой подлинности сервера «только NTLM».
Укажите в них SPN для терминальных серверов. Например:
-
TERMSRV/terminal1.termit.local— для включения Kerberos при доступе на серверterminal1.termit.local. -
TERMSRV/*.termit.local— для включения Kerberos при доступе ко всем серверам из доменаtermit.local.
-