Устранение неполадок Kerberos в среде SharePoint (часть 1)

Опубликовано: 9 Апреля, 2023
Устранение неполадок Kerberos в среде SharePoint (часть 1)

Введение

Если вы пропустили мою статью под названием; Kerberos в среде SharePoint, в котором объясняется настройка Kerberos и процесс входа в систему, прочтите это, чтобы лучше понять, что происходит при доступе к веб-сайту и базовой конфигурации.

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

Это не руководство по всем ошибкам, связанным с Kerberos, но я настрою тестовую среду и создам различные проблемы, чтобы показать, какие сообщения об ошибках возникают из-за проблем с конфигурацией, которые я создаю. Сообщения об ошибках в журналах событий сервера иногда кажутся очевидными, в других случаях требуется более тщательное исследование нескольких журналов событий сервера и даже анализаторов сетевых пакетов.

Установка

В демо-лаборатории имеются следующие компьютеры:

Контроллер домена DC1 (KDC)
SQL1 SQL Server 2008
WSS1 Windows Sharepoint Services 3.0 SP1 (+обновление инфраструктуры)
ПК1 Windows Vista

Изображение 23914
фигура 1

Имена участников-служб (SPN) и делегирование настраиваются в соответствии со следующей таблицей.

Изображение 23915
фигура 2

Где ящик с инструментами?

Когда мы устраняем ошибки, у нас должен быть набор инструментов. В этой серии статей мы будем использовать только некоторые из них, но для вашего удобства вот мои предложения по инструментам устранения неполадок:

  • Журналы событий Windows на клиентах и серверах
  • Файлы журналов IIS на веб-интерфейсах, серверах SQL и контроллерах домена
  • Файлы журналов SharePoint
  • Инструменты командной строки
    setspn (из комплекта ресурсов Windows Server, в Windows Server 2008 он есть по умолчанию)
    - лдифде
    KList (из комплекта ресурсов Windows Server, в Windows Server 2008 он есть по умолчанию)
  • инструменты с графическим интерфейсом
    KerbTray (из комплекта ресурсов Windows 200 Server, работает на всех Windows)
    - ADSIПравить
    -
    Сетевой монитор
    Анализатор сетевых пакетов WireShark

Некоторыми полезными командами для использования во время тестирования являются команды очистки:

  • Кэш DNS: Ipconfig /flushdns
  • Кэш NetBIOS, который вы вводите: Nbtstat -R
  • Билеты Kerberos: очистка Klist
    (Мы также можем видеть интерактивные пользовательские билеты Kerberos, вошедшие в систему, с помощью KerbTray)

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

Изображение 23916
Рисунок 3

Проблемы для расследования

Есть некоторые проблемы, которые я вижу чаще, чем другие, на клиентских серверах, поэтому вот список проблем, которые будут рассмотрены в этой статье:

  • Дата и время
  • Учетные записи пула приложений
  • Конфигурация имени участника-службы

В этой части серии статей мы рассмотрим, что можно увидеть в файлах журнала событий Windows и анализаторе сетевых протоколов для каждой проблемы, которую мы создаем.

Дата и время

Дата и время являются важной частью проверки подлинности Kerberos, поскольку билеты, выданные центром распространения ключей (KDC), действительны только в течение ограниченного периода времени. Если клиенты и серверы не синхронизированы, проверка билетов завершится ошибкой, так как это часть структуры безопасности. Поэтому очень важно убедиться, что все клиенты и серверы имеют правильный часовой пояс и настройки. В этом упражнении мы рассмотрим проблемы с датой и временем.

Разница во времени на сервере SharePoint

Я настраиваю сервер SharePoint WSS1 так, чтобы разница во времени составляла 24 часа, и ошибки появляются в журнале событий системы Windows.

Предупреждение, W32Time, идентификатор события: 52, категория: нет
Служба времени установила время со смещением -86391 секунд.

Обычно серверы синхронизируют время автоматически, и ошибки исчезают. Так было и в моем тесте здесь, поэтому вмешательство администратора не требовалось.

Иногда контроллеры домена могут иметь проблемы с синхронизацией времени. Я проверяю это, изменяя время на контроллере домена, и Kerberos уведомляет меня с идентификатором события LSASRV 40960 в журнале системных событий.

Предупреждение, LSASRV, идентификатор события: 40960, категория: SPNEGO (переговорщик)
Система безопасности обнаружила ошибку аутентификации для сервера MSSQLSvc/sql1.domain.local:1433. Код ошибки от протокола проверки подлинности Kerberos: «Время на основном контроллере домена отличается от времени на резервном контроллере домена или рядовом сервере на слишком большую величину. (0xc0000133)».

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

Учетные записи пула приложений

Веб-сайты IIS для веб-приложений автоматически настраиваются SharePoint, и при их создании вы выбираете/добавляете пулы приложений. Веб-приложение запускается в этом пуле и с его настроенным идентификатором (пользователем).

Изменение учетной записи пула приложений вручную

Веб-сайты работают в пулах приложений IIS и не предназначены для ручной настройки. Если администратор изменит идентификатор пула приложений на неправильную учетную запись, это, конечно, может привести к тому, что веб-сайт станет недоступным. Это может быть необходимо настроить, если пользователь изменится.

Я попробую изменить учетную запись пула приложений на domainspwrongacct для нашего веб-сайта http://intranet.domain.local.

Изображение 23917
Рисунок 4

Это вызовет следующие ошибки в журнале системных событий Windows на сервере SharePoint:

Предупреждение, W3SVC, идентификатор события: 1012, категория: нет
Идентификатор пула приложений «SharePoint — intranet.domain.local — 80» недействителен. Если он остается недействительным при обработке первого запроса пула приложений, пул приложений будет отключен. Поле данных содержит номер ошибки.

Предупреждение, W3SVC, идентификатор события: 1057, категория: нет
Идентификатор пула приложений «SharePoint — intranet.domain.local — 80» недействителен, поэтому служба публикации в Интернете не может создать рабочий процесс для обслуживания пула приложений. Таким образом, пул приложений был отключен.

Ошибка, W3SVC, код события: 1059
Произошел сбой при запуске процесса, обслуживающего пул приложений «SharePoint — intranet.hendriksen.dk80». Пул приложений отключен.

- и ошибка на клиентском компьютере, обращающемся к веб-сайту, будет: Служба недоступна

Чтобы исправить ошибку, измените учетную запись на ту, которая настроена в конфигурации SharePoint, и снова запустите пул приложений из консоли управления IIS. Если вам нужно изменить пользователя/пароль в конфигурации SharePoint, выполните действия, описанные в следующей статье базы знаний Майкрософт.

Конфигурация имени участника службы (SPN)

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

  1. Пользователь вводит URL-адрес в Internet Explorer (например, http://intranet.domain.local)
  2. Браузер клиента создает имя участника-службы, которое содержит имя хоста и тип службы.
    (SPN: http/intranet.domain.local — Тип службы: HTTP-имя: intranet.domain.local)
  3. Клиент отправляет запрос в KDC, чтобы получить билет для этого SPN.
  4. Сервер KDC шифрует билет с помощью открытого ключа зарегистрированной учетной записи (domainspcontentpoolacct) и отправляет билет клиенту.
  5. Клиент аутентифицируется с помощью веб-интерфейса SharePoint, отправляя билет
  6. Сервер SharePoint расшифровывает билет с помощью учетной записи пула приложений (ее удостоверения) и проверяет содержимое.
  7. Пользователь аутентифицирован или в клиентский браузер/журнал событий отправляется сообщение об ошибке.
  8. Если пользователь не проходит проверку подлинности Kerberos, предпринимается попытка проверки подлинности NTLM.

Отсутствует SPN для веб-приложения

Я попытаюсь посмотреть, что произойдет, если клиент не сможет получить билет от KDC, удалив сопоставление имени участника-службы с учетной записью.

Удалите неправильную учетную запись: SETSPN -D HTTP/intranet.domain.local domainspwrongpoolacct

Затем мы получаем доступ к веб-сайту с ПК1, http://intranet.domain.local, и получаем страницу веб-сайта по умолчанию. -но как мы аутентифицировали?

Если мы проверим журнал событий Windows клиента, мы не увидим никаких записей. В журнале событий безопасности Windows на сервере SharePoint мы видим следующее:

Аудит выполнен успешно, идентификатор события: 4624, категория: вход в систему

Процесс входа в систему: NtLmSsp
Пакет аутентификации: NTLM

Таким образом, при входе в систему Kerberos произошел сбой, и проверка подлинности продолжалась с помощью NTLM, поскольку он согласовывается в этом порядке. Нам нужно выяснить, почему это произошло, и мы можем добавить больше журналов Kerberos к нашему клиенту и серверу или использовать анализатор пакетов. Большую часть времени я использую сниффер под названием Wireshark, и я начинаю с его установки и запуска на клиенте. Я получаю этот вывод, когда фиксирую описанный выше процесс:

Изображение 23918
Рисунок 5

Поскольку SPN отсутствует, Active Directory отправит KDC_ERR_S_PRINCIPAL_UNKNOWN. Это сообщение о том, что Active Directory не может найти соответствующий SPN для этого веб-сайта.

Настройка неправильной учетной записи в Active Directory для имени участника-службы

Если ключ дешифрования не соответствует шагу 6, это означает, что ключ шифрования исходит от другого аккаунта и где-то в конфигурации есть ошибка. Давайте настроим SPN для использования неправильной учетной записи и посмотрим результат.

Удалите правильную учетную запись: SETSPN -D HTTP/intranet.domain.local domainspcontentpoolacct
Добавьте неправильную учетную запись: SETSPN -A HTTP/intranet.domain.local domainspwrongpoolacct

Если мы проанализируем пакеты с сервера SharePoint, мы увидим это сообщение, когда выполним iisreset /noforce и получим доступ к веб-приложению.

Изображение 23919
Рисунок 6

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

В журнале системных событий Windows клиента мы видим эту ошибку:

Ошибка, идентификатор события: 4, категория: нет
Клиент Kerberos получил ошибку KRB_AP_ERR_MODIFIED от сервера wss1$. Используемое целевое имя было HTTP/intranet.domain.local. Это указывает на то, что целевому серверу не удалось расшифровать билет, предоставленный клиентом. Это может произойти, если основное имя целевого сервера (SPN) зарегистрировано в учетной записи, отличной от учетной записи, которую использует целевая служба. Убедитесь, что целевое имя участника-службы зарегистрировано и только зарегистрировано в учетной записи, используемой сервером. Эта ошибка также может произойти, если целевая служба использует пароль для целевой учетной записи службы, отличный от пароля, который есть у центра распространения ключей Kerberos (KDC) для целевой учетной записи службы. Убедитесь, что служба на сервере и KDC обновлены для использования текущего пароля. Если имя сервера не является полным, а целевой домен (DOMAIN.LOCAL) отличается от клиентского домена (DOMAIN.LOCAL), проверьте, есть ли учетные записи сервера с одинаковыми именами в этих двух доменах, или используйте полное имя. для идентификации сервера.

Когда веб-интерфейс пытается расшифровать билет службы, ключ оказывается неверным, так как он был зашифрован с помощью ключа учетных записей SPN (domainspcontentpoolacct) и расшифрован с помощью закрытого ключа учетных записей пула приложений (domainspwrongacct). Ошибка KRB_AP_ERR_MODIFIED будет отправлена клиенту и появится в журнале системных событий Windows.

Среда снова правильно перенастроена на учетную запись domainspcontentpoolacct:

Удалите неправильную учетную запись: SETSPN -D HTTP/intranet.domain.local domainspwrongpoolacct
Добавьте правильную учетную запись: SETSPN -A HTTP/intranet.domain.local domainspcontentpoolacct

Примечание. Ошибка KRB_AP_ERR_MODIFIED также может быть вызвана другими неправильными настройками.

Вывод

Теперь мы настроили тестовую среду, нашли несколько инструментов для использования и сгенерировали сообщения об ошибках, которые помогут нам найти некоторые ответы на вопросы о дате/времени, учетных записях пула приложений и конфигурации SPN, если они найдены в производственной среде.

В следующих частях статьи я расскажу о типичных проблемах, таких как

  • Повторяющиеся имена участников службы
  • Несоответствие конфигурации DNS
  • Делегирование, когда оно используется и как его проверить
  • Shared Service Provider (SSP), Kerborized?
  • Дополнительные исследования с помощью анализатора сетевых пакетов

Ссылки

  • База знаний Microsoft: как включить ведение журнала событий Kerberos (KB262177)
  • База знаний Майкрософт: как изменить учетные записи служб и пароли учетных записей служб в SharePoint Server 2007 и Windows SharePoint Services 3.0 (KB 934838)
  • Анализатор сетевых протоколов: www.Wireshark.org