Диагностика проблем Kerberos-аутентификации при настройке технологии единого входа, протокола LDAP и Squid в Kaspersky Web Traffic Security
Статья относится к Kaspersky Web Traffic Security 6.1 (версия 6.1.0.4762).
Если у вас возникли ошибки Kerberos-аутентификации при работе с Kaspersky Web Traffic Security, перед обращением в техническую поддержку «Лаборатории Касперского» вы можете выполнить диагностику проблемы и попробовать решить ее самостоятельно.
Механизм Kerberos-аутентификации на основе keytab-файлов используется в следующих функциональных областях приложения:
- Аутентификация с помощью технологии единого входа (SSO) — для подключения пользователей и администраторов к веб-интерфейсу приложения.
- Соединение с LDAP-сервером — для синхронизации кеша LDAP с контроллерами домена. Кеш используется при создании правил, и если Kaspersky Web Traffic Security имеет информацию для входа пользователя для данного сеанса, предоставленную прокси-сервером, трафик может быть сопоставлен с теми правилами, которые определены, например, группами в Active Directory.
- Настройка интеграции сервиса Squid с Active Directory — для автоматического прохождения пользователями аутентификации на прокси-сервере без запроса на вход.
Если появляется приглашение для входа, значит проверка подлинности протокола Kerberos не удалась.
Создание keytab-файла
Keytab-файл создается на сервере контроллера домена или на компьютере под управлением Windows Server, входящем в домен, под учетной записью с правами доменного администратора.
Учитывайте следующие особенности при создании keytab-файла:
- Keytab-файлы для технологии единого входа и LDAP — это разные файлы, и создаются они для разных служебных учетных записей по своим отдельным инструкциям.
- Для корректной работы технологии единого входа и интеграции сервиса Squid Proxy все адреса узлов кластера приложения должны быть настроены в DNS. Для каждого узла кластера системное имя хоста (hostname) должно соответствовать имени в DNS.
- Keytab-файл для соединения с LDAP-сервером необходимо создать без привязки Service Principal Name (SPN).
- Для корректной работы соединения с LDAP-сервером у всех контроллеров домена Active Directory должны быть настроены прямые и обратные записи в DNS, которые должны соответствовать друг другу.
Подробнее о создании keytab-файлов:
- для аутентификации через соединение с LDAP-сервером;
- для аутентификации через технологию единого входа и прокси-сервер.
При создании keytab-файла обратите внимание на регистр символов, используемый для ввода команды в каждой конкретной инструкции для единого входа или LDAP.
Корректные значения выглядят следующим образом:
Настройка браузера
Для корректной аутентификации с помощью технологии единого входа выполните предварительную настройку в браузере операционной системы.
Для Internet Explorer и Chrome
- Откройте Internet Explorer и нажмите в правом верхнем углу.
- Выберите Свойства обозревателя.
- Выберите вкладку Безопасность.
- Выберите локальную зону интрасети и нажмите Сайты.
- Убедитесь, что установлены первые два параметра: Включить все локальные (интранет) сайты, не перечисленные в других зонах и Включить все сайты, которые обходят прокси-сервер.
- Нажмите Дополнительно и добавьте адреса Kaspersky Web Traffic Security в список веб-сайтов. В этом примере добавьте https://kwts1.example.com и https://kwts2.example.com.
- Нажмите Закрыть.
- Нажмите ОК, чтобы сохранить изменения конфигурации.
Для аутентификации через технологию единого входа в браузере используйте ссылки https://kwts1.example.com и https://kwts2.example.com, а не IP-адрес. Добавляйте https://kwts1.example.com и https://kwts2.example.com в локальные зоны интрасети в настройках.
Для Firefox
- Откройте новую вкладку Firefox и в адресной строке перейдите по адресу about:config.
- В текстовом поле поиска введите: network.negotiate-auth.trusted-uri.
- Дважды нажмите на параметр network.negotiate-auth.trusted-uris и введите адрес Kaspersky Web Traffic Security. Разделите несколько адресов запятой.
- Нажмите ОК.
Как Kaspersky Web Traffic Security подключается к LDAP-серверам с помощью keytab-файла
В Kaspersky Web Traffic Security отсутствует поле для указания адреса LDAP-сервера. Для подключения к LDAP-серверу приложение считывает из keytab-файла REALM (имя realm-домена), например EXAMPLE.COM, а затем отправляет следующие DNS-запросы к адресам с типом SRV-записи:
_kerberos._tcp.example.com
В консоли SSH на узле кластера приложения такие запросы могут быть воспроизведены следующим образом:
dig srv _kerberos._tcp.example.com
В результатах выполнения команд вы можете увидеть список контроллеров домена, порты, вес и приоритет.
LDAP-серверы перечислены в _ldap._tcp.example.com, порт по умолчанию 389.
Запрос _kerberos._tcp.example.com необходим для протокола Kerberos, порт по умолчанию 88.
Попытка соединения выполняется с каждым адресом из списка по очереди и с задержкой до тех пор, пока соединение не будет успешно установлено или список не будет исчерпан.
Диагностика протоколов LDAP и Kerberos
Чтобы диагностировать проблемы синхронизации с LDAP-сервером:
- Включите трассировку Kaspersky Web Traffic Security с уровнем отладки по инструкции.
- Воспроизведите проблему, нажав кнопку Синхронизировать в параметрах соединения с LDAP-сервером по инструкции.
Примерно через 10-20 минут, в зависимости от размера доменов и их количества, вы можете:
- проверить файл лога на узле с помощью команды:
- сохранить архив диагностики с узла на рабочее место администратора для просмотра файлов логов другими способами. Инструкция в справке.
Если вы увидите ошибки ниже, проверьте, что вы можете подключиться к server.local на порт 389 с помощью telnet:
Также убедитесь, что:
- На данном узле выполняется разрешение имени server.local по FQDN и разрешение PTR-записи server.local в его IP-адрес.
PTR-запись контроллера домена должна соответствовать A-записи, в противном случае протокол Kerberos не будет работать, ошибка будет аналогичной примеру выше. - На сервере server.local выполняется разрешение имени данного узла Kaspersky Web Traffic Security по FQDN и разрешение PTR-записи узла в его IP-адрес.
- Время на узлах с установленным приложением синхронизируется с сервером NTP.
Диагностика аутентификации с помощью технологии единого входа
Файлы логов, которые могут помочь в диагностике ошибок с использованием технологии единого входа, находятся по путям ниже:
- /var/log/kaspersky/kwts/extra/webapi.log
- /var/log/kaspersky/kwts/extra/celery.log
Примеры ошибок в webapi.log
-
ERROR:root:GSSError: (('Unspecified GSS failure. Minor code may provide more information', 851968), ('Request ticket server HTTP/kwts.example.com@EXAMPLE.COM found in keytab but does not match server principal HTTP/dpc-kwts-01.example.com@', 100005)) [pid: 14648|app: 0|req: 701/53178] 10.199.5.19 () {50 vars in 4127 bytes} [Wed Oct 14 14:12:46 2020] GET /web/api/get-session-info?cb=1602673966446 => generated 224 bytes in 12 msecs (HTTP/1.1 403) 3 headers in 93 bytes (1 switches on core 0)Ошибка означает, что в DNS-запросе есть две PTR-записи для IP-адреса Kaspersky Web Traffic Security.
Удалите тот адрес, который не подходит для полного доменного имени (FQDN), используемого для доступа к веб-интерфейсу Kaspersky Web Traffic Security. -
ERROR:root:GSSError: (('Unspecified GSS failure. Minor code may provide more information', 851968), ('Request ticket server HTTP/kwts.example.com@EXAMPLE.COM kvno 6 found in keytab but not with enctype rc4-hmac', 100005))Ошибка означает, что keytab-файл был создан с помощью алгоритма шифрования AES128 или AES256, но этот алгоритм не был включен в свойствах служебной учетной записи в Active Directory.
Для решения проблемы проверьте параметры учетной записи, которая используется для создания keytab-файла. -
ERROR:root:GSSError: (('Unspecified GSS failure. Minor code may provide more information', 851968), ('Request ticket server HTTP/kwts.example.com@EXAMPLE.COM kvno 8 not found in keytab; keytab is likely out of date', 100005))Ошибка означает, что keytab-файл был создан с неправильным паролем служебной учетной записи или пароль был изменен после создания keytab-файла. Для решения проблемы проверьте параметры учетной записи, которая используется для создания keytab-файла.
Пример ошибки в celery.log и webapi.log
./webapi.log:ERROR:root:there are no valid principal for HTTP service on kwts.example.com host in keytab data; : ('Principal not found in keytab', -1)
Ошибка означает, что в keytab-файле нет SPN-записи для FQDN, который используется для доступа к веб-интерфейсу приложения.
Примеры ошибок в webapi.log, связанных с синхронизацией системного времени
-
ERROR:root:GSSError: (('Unspecified GSS failure. Minor code may provide more information', 851968), ('Ticket not yet valid', 100005))Ошибка означает, что на узле с приложением системное время значительно отстает от времени на контроллере домена.
-
ERROR:root:GSSError: (('Unspecified GSS failure. Minor code may provide more information', 851968), ('Ticket expired', 100005))Ошибка означает, что на узле с приложением системное время значительно опережает время на контроллере домена.
-
ERROR:root:GSSError: (('Unspecified GSS failure. Minor code may provide more information', 851968), ('Clock skew too great', 100006))Ошибка означает, что на узле с приложением системное время немного опережает время на контроллере домена.
Диагностика интеграции Squid Proxy
Файлы логов, которые могут помочь в диагностике ошибок интеграции Squid Proxy, находятся по пути:
- /var/log/squid/cache.log
- /var/log/squid/access.log
Пример ошибки в cache.log
Ошибка означает, что keytab-файл был создан с помощью алгоритма шифрования AES128 или AES256, но этот алгоритм не был включен в свойствах служебной учетной записи в Active Directory.
Для решения проблемы проверьте параметры учетной записи, которая используется для создания keytab.
Полезные команды
- Чтобы просмотреть список всех пользователей, для которых были созданы keytab-файлы с помощью SPN-записи, начинающейся с HTTP/, выполните команду в PowerShell на контроллере домена:
Get-ADUser -Filter 'UserPrincipalName -like "HTTP/*"'
Вы увидите все неудачные попытки, предпринятые клиентом ранее при создании keytab-файла. В выводе команды дублирующихся SPN-записей быть не должно.
- Чтобы быстро определить, имеются ли дубликаты SPN-записей, выполните:
setspn -X
- Чтобы удалить SPN-запись для служебной учетной записи пользователя с именем control-user, выполните:
setspn -D HTTP/FQDN kaspersky
- Чтобы получить текущий список протоколов Kerberos, выполните:
klist
- Чтобы очистить список протоколов Kerberos, выполните:
klist purge
- Чтобы вручную запросить определенный протокол, выполните:
klist get HTTP/kwts.example.com