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

Введение
Если вы пропустили мою статью под названием; Kerberos в среде SharePoint, в котором объясняется настройка Kerberos и процесс входа в систему, прочтите это, чтобы лучше понять, что происходит при доступе к веб-сайту и базовой конфигурации.
После написания предыдущей статьи некоторые люди спрашивали меня, как устранять неполадки с различными сообщениями об ошибках, которые они получали. Может быть трудно точно определить, что означает ошибка, и повторная проверка всей конфигурации не всегда выявит проблему. В конечном итоге вы можете потратить много времени на поиск помощи в Интернете, хотя обычно вы найдете правильный ответ на свою проблему.
Это не руководство по всем ошибкам, связанным с Kerberos, но я настрою тестовую среду и создам различные проблемы, чтобы показать, какие сообщения об ошибках возникают из-за проблем с конфигурацией, которые я создаю. Сообщения об ошибках в журналах событий сервера иногда кажутся очевидными, в других случаях требуется более тщательное исследование нескольких журналов событий сервера и даже анализаторов сетевых пакетов.
Установка
В демо-лаборатории имеются следующие компьютеры:
Контроллер домена DC1 (KDC)
SQL1 SQL Server 2008
WSS1 Windows Sharepoint Services 3.0 SP1 (+обновление инфраструктуры)
ПК1 Windows Vista
фигура 1
Имена участников-служб (SPN) и делегирование настраиваются в соответствии со следующей таблицей.
фигура 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 очень удобно иметь следующую таблицу действий.
Рисунок 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.
Рисунок 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. Сначала я подытожу, как они используются между клиентом и сервером.
- Пользователь вводит URL-адрес в Internet Explorer (например, http://intranet.domain.local)
- Браузер клиента создает имя участника-службы, которое содержит имя хоста и тип службы.
(SPN: http/intranet.domain.local — Тип службы: HTTP-имя: intranet.domain.local) - Клиент отправляет запрос в KDC, чтобы получить билет для этого SPN.
- Сервер KDC шифрует билет с помощью открытого ключа зарегистрированной учетной записи (domainspcontentpoolacct) и отправляет билет клиенту.
- Клиент аутентифицируется с помощью веб-интерфейса SharePoint, отправляя билет
- Сервер SharePoint расшифровывает билет с помощью учетной записи пула приложений (ее удостоверения) и проверяет содержимое.
- Пользователь аутентифицирован или в клиентский браузер/журнал событий отправляется сообщение об ошибке.
- Если пользователь не проходит проверку подлинности 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, и я начинаю с его установки и запуска на клиенте. Я получаю этот вывод, когда фиксирую описанный выше процесс:
Рисунок 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 и получим доступ к веб-приложению.
Рисунок 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