Руководство по устранению неполадок проверки подлинности Kerberos
В этом руководстве приведены основные понятия, используемые при устранении неполадок проверки подлинности Kerberos.
Контрольный список по устранению неполадок
Ошибка, связанная с Kerberos, является симптомом сбоя другой службы. Протокол Kerberos использует множество служб, которые должны быть доступны и функционируют должным образом для любой проверки подлинности.
Чтобы определить, возникает ли проблема с проверкой подлинности Kerberos, проверьте журнал событий системы на наличие ошибок из любых служб (таких как Kerberos, kdc, LsaSrv или Netlogon) на клиенте, целевом сервере или контроллере домена, которые обеспечивают проверку подлинности. Если существуют такие ошибки, могут возникнуть ошибки, связанные с протоколом Kerberos.
Аудиты сбоев в журнале событий безопасности целевого сервера могут показать, что протокол Kerberos использовался при сбое входа.
Перед проверкой протокола Kerberos убедитесь, что следующие службы или условия работают правильно:
- Сетевая инфраструктура работает правильно, и все компьютеры и службы могут взаимодействовать.
- Контроллер домена доступен. Вы можете выполнить команду
nltest /dsgetdc:<Domain Name> /force /kdc
(например,nltest /dsgetdc:contoso.com /force /kdc
) на клиентском или целевом сервере. - Система доменных имен (DNS) настроена правильно и разрешает имена узлов и службы соответствующим образом.
- Часы синхронизируются по всему домену.
- Устанавливаются все критические обновления и обновления системы безопасности для Windows Server.
- Обновляется все программное обеспечение, включая программное обеспечение, отличное от Майкрософт.
- Компьютер перезагружается при запуске операционной системы сервера.
- Доступны необходимые службы и сервер. Протокол проверки подлинности Kerberos требует правильной работы работающего контроллера домена, инфраструктуры DNS и сети. Убедитесь, что вы можете получить доступ к этим ресурсам, прежде чем приступить к устранению неполадок протокола Kerberos.
Если вы изучили все эти условия и по-прежнему испытываете проблемы с проверкой подлинности или ошибки Kerberos, необходимо искать дальнейшее решение. Проблемы могут быть вызваны настройкой протокола Kerberos или способом настройки других технологий, работающих с протоколом Kerberos.
Распространенные проблемы и решения
Проблемы с делегированием Kerberos
В типичном сценарии учетная запись олицетворения будет учетной записью службы, назначенной веб-приложению или учетной записи компьютера веб-сервера. Учетная запись с олицетворением будет учетной записью пользователя, требующей доступа к ресурсам через веб-приложение.
Существует три типа делегирования с помощью Kerberos:
Полное делегирование (неограниченное делегирование)
Следует избегать полного делегирования как можно больше. Пользователь (интерфейсный пользователь и внутренний пользователь) может находиться в разных доменах, а также в разных лесах.
Ограниченное делегирование (только Kerberos и переход к протоколу)
Пользователь может быть из любого домена или леса, но интерфейсные и внутренние службы должны работать в одном домене.
Ограниченное делегирование на основе ресурсов (RBCD)
Пользователь может быть из любого домена, а внешние и внутренние ресурсы могут быть из любого домена или леса.
Наиболее распространенные устранение неполадок с делегированием Kerberos
- Имя субъекта-службы отсутствует или дублируется
- Сбои разрешения имен или неправильные ответы (неправильные IP-адреса, заданные для сервера)
- Большие билеты Kerberos (MaxTokenSize) и среда не настроены правильно
- Порты, заблокированные брандмауэрами или маршрутизаторами
- Учетная запись службы не предоставляет соответствующие привилегии (назначение прав пользователя)
- Интерфейсные или внутренние службы не в одном домене и настройка ограниченного делегирования
Дополнительные сведения см. в разделе:
- Ограниченное делегирование для CIFS завершается ошибкой ACCESS_DENIED
- Настройка ограниченного делегирования для пользовательской учетной записи службы
- Настройка ограниченного делегирования в учетной записи NetworkService
Единый вход (единый вход) нарушен и запрашивает проверку подлинности один раз
Рассмотрим следующие сценарии.
- Клиентское и серверное приложение, например Microsoft Edge и сервер службы IIS (IIS). Сервер IIS настроен с помощью проверки подлинности Windows (согласование).
- Клиентское и серверное приложение, например клиент SMB и сервер SMB. По умолчанию сервер SMB настроен с помощью интерфейса поставщика поддержки безопасности (SSPI).
Пользователь открывает Microsoft Edge и просматривает внутренний веб-сайт http://webserver.contoso.com
. Веб-сайт настроен с помощью "Согласование", и этот веб-сайт запрашивает проверку подлинности. После того как пользователь вручную вводит имя пользователя и пароль, пользователь получает проверку подлинности, а веб-сайт работает должным образом.
Примечание.
Этот сценарий является примером клиента и сервера. Метод устранения неполадок одинаков для любого клиента и сервера, настроенного с помощью интегрированной проверка подлинности Windows.
Интегрированные проверка подлинности Windows разбиваются на уровне пользователя или на уровне компьютера.
Методы устранения неполадок
Просмотрите конфигурацию клиента для встроенного параметра проверки подлинности, который можно включить на уровне приложения или компьютера. Например, все приложения на основе HTTP будут искать сайт в доверенной зоне при попытке выполнить встроенную проверку подлинности.
Откройте inetcpl.cpl (параметры интернета), которые используются всеми приложениями на основе HTTP для конфигураций Internet Explorer, и проверьте, настроен ли веб-сайт в качестве локальной интрасети.
Приложения также имеют конфигурацию для выполнения интегрированных проверка подлинности Windows.
Microsoft Edge или Internet Explorer имеет параметр включить встроенную проверку подлинности Windows.
Просмотрите конфигурацию приложения, а клиентский компьютер может получить билет Kerberos для заданного имени субъекта-службы (SPN). В этом примере используется
http/webserver.contoso.com
имя субъекта-службы.Сообщение об успешном выполнении, когда вы можете найти имя участника-службы:
C:>klist get http/webserver.contoso.com Current LogonId is 0:0x9bd1f A ticket to http/webserver.contoso.com has been retrieved successfully.
Сообщение об ошибке, если не удается найти имя участника-службы:
C:>klist get http/webserver.contoso.com klist failed with 0xc000018b/-1073741429: The SAM database on the Windows Server does not have a computer account for this workstation trust relationship.
Определите и добавьте соответствующие имена субъектов-служб в соответствующие учетные записи пользователей, служб или компьютеров.
Если вы определили, что имена субъектов-служб можно получить, можно проверить, зарегистрированы ли они в правильной учетной записи с помощью следующей команды:
setspn -F -Q */webserver.contoso.com
Проблемы обнаружения контроллера домена проверки подлинности
Для проверки подлинности пользователя или компьютера и службы серверы приложений, настроенные с помощью встроенной проверка подлинности Windows, требуют контроллеров домена (DCS).
Неспособность связаться с контроллером домена во время проверки подлинности приводит к ошибке 1355:
Указанный домен либо не существует, либо не удалось связаться
Не удается получить доступ к ресурсу, настроенном с помощью встроенного проверка подлинности Windows с ошибкой 1355
Примечание.
Сообщения об ошибках могут отличаться от точки зрения приложения, но смысл ошибки заключается в том, что клиент или сервер не может обнаружить контроллер домена.
Ниже приведены примеры таких сообщений об ошибках:
-
При попытке присоединиться к домену "Contoso" произошла следующая ошибка:
указанный домен не существует, либо к нему нет доступа. -
Не удалось найти контроллер домена для домена contoso.com.
-
Не удалось связаться с контроллером домена 1355
Основные причины проблемы
Неправильное настройка DNS на клиенте
Вы можете выполнить
ipconfig /all
команду и просмотреть список DNS-серверов.Неправильное настройка DNS на контроллерах домена в доверенном домене или лесу
Сетевые порты, заблокированные между клиентскими и контроллерами домена
Порты обнаружения контроллеров домена: UDP 389 (UDP LDAP) и UDP 53 (DNS)
Действия по устранению неполадок
nslookup
Выполните команду, чтобы определить какие-либо неправильные конфигурации DNS.- Откройте необходимые порты между клиентом и контроллером домена. Дополнительные сведения см. в статье "Настройка брандмауэра для доменов и доверия Active Directory".
Сценарий тестирования анализа журналов
Среда и конфигурация
Клиентский компьютер
Client1.contoso.com
(компьютер с Windows 11) присоединяется к доменуContoso.com
.Пользователь
John
Пользователь принадлежит
Contoso.com
и входит на клиентский компьютер.Параметры Интернета на клиентском компьютере
Все веб-сайты являются частью зоны локальной интрасети.
Сервер
IISServer.contoso.com
(Windows Server 2019) присоединяется к доменуContoso.com
.Конфигурация проверки подлинности
Проверка подлинности Windows включена.
Поставщики проверки подлинности: согласование
Включенные поставщики задаются следующим образом:
Поток аутентификации
- Пользователь
John
входит вClient1.contoso.com
систему, открывает браузер Microsoft Edge и подключается кIISServer.contoso.com
нему. - Клиентский компьютер выполнит следующие действия (шаг 1 на приведенной выше схеме):
- Сопоставитель DNS кэширует
IISServer.contoso.com
, чтобы проверить, уже ли эти сведения кэшируются. - Сопоставитель DNS проверяет файл HOSTS для любого сопоставления, расположенного
IISServer.contoso.com
в C:\Windows\System32\drivers\etc\Hosts. - Отправьте DNS-запрос на предпочтительный DNS-сервер (настроенный в параметрах конфигурации IP), который также является контроллером домена в среде.
- Сопоставитель DNS кэширует
- Служба DNS, запущенная на контроллере домена, будет рассматривать свои настроенные зоны, разрешать запись А узла и отвечать обратно с IP-адресом
IISServer.contoso.com
(шаг 2 на приведенной выше схеме). - Клиентский компьютер выполнит трехстороннее подтверждение TCP на TCP-порте 80.
IISServer.contoso.com
- Клиентский компьютер отправит анонимный HTTP-запрос
IISServer.contoso.com
. - Сервер IIS, прослушивающий порт 80, получит запрос от
Client1.contoso.com
, просмотрите конфигурацию проверки подлинности серверов IIS и отправьте ответ на запрос HTTP 401 на клиентский компьютер с согласованием в качестве конфигурации проверки подлинности (шаг 3 на приведенной выше схеме). - Процесс Microsoft Edge, на котором выполняется
Client1.contoso.com
, будет знать, что сервер IIS настроен с помощью "Согласование" и проверяет, является ли веб-сайт частью локальной зоны интрасети. Если веб-сайт находится в зоне локальной интрасети, процесс Microsoft Edge вызовет LSASS.exe , чтобы получить билет Kerberos с именем участника-службыHTTP\IISServer.contoso.com
(шаг 5 на приведенной выше схеме). - Контроллер домена (служба KDC) получит запрос,
Client1.contoso.com
выполните поиск в базе данныхHTTP\IISServer.contoso.com
субъекта-службы и найдитеIISServer.contoso.com
эту службу-службу. - Контроллер домена ответит на ответ TGS с билетом на сервер IIS (шаг 6 на приведенной выше схеме).
- Процесс Microsoft Edge на клиентском компьютере отправит запрос протокола приложений Kerberos (AP) на веб-сервер IIS с билетом Kerberos TGS, выданным контроллером домена.
- Процесс IIS вызовет LSASS.exe на веб-сервере для расшифровки билета и создания маркера с членством в группах SessionID и Users для авторизации.
- Процесс IIS получит дескриптор от LSASS.exe к маркеру, чтобы принять решения об авторизации и разрешить пользователю подключаться к ответу AP.
Анализ сетевого монитора рабочего процесса
Примечание.
Для выполнения следующих действий необходимо быть пользователем локальной группы администраторов.
Установите Microsoft Network Monitor на клиентском компьютере (
Client1.contoso.com
).Выполните следующую команду в окне командной строки с повышенными привилегиями (cmd.exe):
ipconfig /flushdns
Запустите сетевой монитор.
Откройте браузер Microsoft Edge и введите его.
http://iisserver.contoso.com
Анализ сетевой трассировки:
DNS-запрос к контроллеру домена для записи узла A:
IISServer.contoso.com
3005 00:59:30.0738430 Client1.contoso.com DCA.contoso.com DNS DNS:QueryId = 0x666A, QUERY (Standard query), Query for iisserver.contoso.com of type Host Addr on class Internet
Ответ DNS от службы DNS на контроллере домена.
3006 00:59:30.0743438 DCA.contoso.com Client1.contoso.com DNS DNS:QueryId = 0x666A, QUERY (Standard query), Response - Success, 192.168.2.104
Процесс Microsoft Edge при
Client1.contoso.com
подключении к веб-серверуIISServer.contoso.com
IIS (анонимное подключение).3027 00:59:30.1609409 Client1.contoso.com iisserver.contoso.com HTTP HTTP:Request, GET / Host: iisserver.contoso.com
Сервер IIS возвращает ответ HTTP 401: согласование и NTLM (конфигурация, выполненная на сервере IIS).
3028 00:59:30.1633647 iisserver.contoso.com Client1.contoso.com HTTP HTTP:Response, HTTP/1.1, Status: Unauthorized, URL: /favicon.ico Using Multiple Authetication Methods, see frame details WWWAuthenticate: Negotiate WWWAuthenticate: NTLM
Запрос Kerberos переходит
Client1.contoso.com
к контроллеруDCA.contoso.com
домена с помощью имени субъекта-службы:HTTP/iisserver.contoso.com
3034 00:59:30.1834048 Client1.contoso.com DCA.contoso.com KerberosV5 KerberosV5:TGS Request Realm: CONTOSO.COM Sname: HTTP/iisserver.contoso.com
Контроллер
DCA.contoso.com
домена отвечает обратно с запросом Kerberos, который имеет ответ TGS с билетом Kerberos.3036 00:59:30.1848687 DCA.contoso.com Client1.contoso.com KerberosV5 KerberosV5:TGS Response Cname: John Ticket: Realm: CONTOSO.COM, Sname: HTTP/iisserver.contoso.com Sname: HTTP/iisserver.contoso.com
Теперь процесс
Client1.contoso.com
Microsoft Edge переходит на сервер IIS с запросом AP Kerberos.3040 00:59:30.1853262 Client1.contoso.com iisserver.contoso.com HTTP HTTP:Request, GET /favicon.ico , Using GSS-API Authorization Authorization: Negotiate Authorization: Negotiate YIIHGwYGKwYBBQUCoIIHDzCCBwugMDAuBgkqhkiC9xIBAgIGCSqGSIb3EgECAgYKKwYBBAGCNwICHgYKKwYBBAGCNwICCqKCBtUEggbRYIIGzQYJKoZIhvcSAQICAQBugga8MIIGuKADAgEFoQMCAQ6iBwMFACAAAACjggTvYYIE6zCCBOegAwIBBaENGwtDT05UT1NPLkNPTaIoMCagAwIBAqEfMB0bBEhUVFAbF SpnegoToken: 0x1 NegTokenInit: ApReq: KRB_AP_REQ (14) Ticket: Realm: CONTOSO.COM, Sname: HTTP/iisserver.contoso.com
Сервер IIS отвечает обратно с ответом на то, что проверка подлинности завершена.
3044 00:59:30.1875763 iisserver.contoso.com Client1.contoso.com HTTP HTTP:Response, HTTP/1.1, Status: Not found, URL: / , Using GSS-API Authentication WWWAuthenticate: Negotiate oYG2MIGzoAMKAQChCwYJKoZIgvcSAQICooGeBIGbYIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARuIF62dHj2/qKDRV5XjGKmyFl2/z6b9OHTCTKigAatXS1vZTVC1dMvtNniSN8GpXJspqNvEfbETSinF0ee7KLaprxNgTYwTrMVMnd95SoqBkm/FuY7WbTAuPvyRmUuBY3EKZEy NegotiateAuthorization: GssAPI: 0x1 NegTokenResp: ApRep: KRB_AP_REP (15)
klist tickets
Выполните команду, чтобы просмотреть билет Kerberos в выходных данныхClient1.contoso.com
команды.Client: John @ CONTOSO.COM Server: HTTP/iisserver.contoso.com @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize Start Time: 11/28/2022 0:59:30 (local) End Time: 11/28/2022 10:58:56 (local) Renew Time: 12/5/2022 0:58:56 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0 Kdc Called: DCA.contoso.com
Проверьте идентификатор события 4624 на сервере IIS, где отображается
Success
аудит:
По умолчанию
Success
на всех серверах операционной системы Windows включена илиFailure
включена проверка. Вы можете проверить, включена ли аудит с помощью следующей команды.Если аудит не включен, включите аудит. Просмотрите категорию входа в приведенный ниже список. Как видно, подкатегорию входа включен
Success and Failure
.C:\>auditpol /get /Subcategory:"logon" System audit policy Category/Subcategory Setting Logon/Logoff Logon Success and Failure
Если вы не видите вход
Success and Failure
в систему, выполните команду, чтобы включить ее:C:\>auditpol /set /subcategory:"Logon" /Success:enable /Failure:enable The command was successfully executed.
Просмотрите идентификатор события безопасности успешного выполнения 4624 на IISServer.contoso.com
Обратите внимание на следующие поля:
Logon type
: 3 (вход в сеть)Security ID
вNew Logon
поле:Contoso\John
Source Network Address
: IP-адрес клиентского компьютераLogon Process
иAuthentication Package
:Kerberos
Log Name: Security
Source: Microsoft-Windows-Security-Auditing
Date: 11/28/2022 12:59:30 AM
Event ID: 4624
Task Category: Logon
Level: Information
Keywords: Audit Success
User: N/A
Computer: IISServer.contoso.com
Description:
An account was successfully logged on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Information:
Logon Type: 3
Restricted Admin Mode: -
Virtual Account: No
Elevated Token: No
Impersonation Level: Impersonation
New Logon:
Security ID: CONTOSO\John
Account Name: John
Account Domain: CONTOSO.COM
Logon ID: 0x1B64449
Linked Logon ID: 0x0
Network Account Name: -
Network Account Domain: -
Logon GUID: {<GUID>}
Process Information:
Process ID: 0x0
Process Name: -
Network Information:
Workstation Name: -
Source Network Address: 192.168.2.101
Source Port: 52655
Detailed Authentication Information:
Logon Process: Kerberos
Authentication Package: Kerberos
Устранение неполадок рабочего процесса проверки подлинности
Чтобы устранить проблему, используйте один из следующих методов.
Проверьте, можно ли разрешить имя веб-сервера IIS (
IISServer.contoso.com
изClient1.contoso.com
).Убедитесь, что DNS-сервер отвечает на правильный IP-адрес сервера IIS с помощью следующего командлета:
PS C:\> Resolve-DnsName -Name IISServer.contoso.com Name Type TTL Section IPAddress ---- ---- --- ------- --------- IISServer.contoso.com A 1200 Answer 192.168.2.104
Проверьте, открываются ли сетевые порты между клиентским компьютером и веб-сервером IIS (
IISServer.contoso.com
) с помощью следующего командлета:PS C:\> Test-NetConnection -Port 80 IISServer.contoso.com ComputerName : IISServer.contoso.com RemoteAddress : 192.168.2.104 RemotePort : 80 InterfaceAlias : Ethernet 2 SourceAddress : 192.168.2.101 TcpTestSucceeded : True
Убедитесь, что вы получаете билет Kerberos от контроллера домена.
Откройте обычную командную строку (а не командную строку администратора) в контексте пользователя, пытающегося получить доступ к веб-сайту.
Выполните команду
klist purge
.Выполните следующую
klist get http/iisserver.contoso.com
команду:PS C:\> klist get http/iisserver.contoso.com Current LogonId is 0:0xa8a98b A ticket to http/iisserver.contoso.com has been retrieved successfully. Cached Tickets: (2) #0> Client: John @ CONTOSO.COM Server: krbtgt/CONTOSO.COM @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize Start Time: 11/28/2022 1:28:11 (local) End Time: 11/28/2022 11:28:11 (local) Renew Time: 12/5/2022 1:28:11 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0x1 -> PRIMARY Kdc Called: DCA.contoso.com #1> Client: John @ CONTOSO.COM Server: http/iisserver.contoso.com @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize Start Time: 11/28/2022 1:28:11 (local) End Time: 11/28/2022 11:28:11 (local) Renew Time: 12/5/2022 1:28:11 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0 Kdc Called: DCA.contoso.com
Вы увидите, что вы получите билет Kerberos для имени
http/IISServer.contoso.com
участника-службы в столбцеCached Ticket (2)
.
Проверьте, запущена ли веб-служба IIS на сервере IIS с использованием учетных данных по умолчанию.
Откройте обычный запрос PowerShell (а не администратор PowerShell Prompt) в контексте пользователя, пытающегося получить доступ к веб-сайту.
PS C:\> invoke-webrequest -Uri http://IIsserver.contoso.com -UseDefaultCredentials PS C:\> invoke-webrequest -Uri http://IIsserver.contoso.com -UseDefaultCredentials StatusCode : 200 StatusDescription : OK Content : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" cont... RawContent : HTTP/1.1 200 OK Persistent-Auth: true Accept-Ranges: bytes Content-Length: 703 Content-Type: text/html Date: Mon, 28 Nov 2022 09:31:40 GMT ETag: "3275ea8a1d91:0" Last-Modified: Fri, 25 Nov 2022...
Просмотрите журнал событий безопасности на сервере IIS:
- Журнал событий успешного выполнения 4624
- Журнал событий ошибки 4625
Процесс изоляции. Чтобы проверить, могут ли другие службы на сервере IIS обрабатывать проверку подлинности Kerberos, можно использовать приведенные ниже действия по устранению неполадок.
Необходимые условия:
Сервер IIS должен работать под управлением версии сервера Windows.
Сервер IIS должен иметь порт, открытый для таких служб, как SMB (порт 445).
Создайте общую папку или предоставьте пользователю
John
разрешения на чтение одной из папок (например, Software$), которая уже предоставлена на компьютере.Выполните вход в
Client1.contoso.com
.Откройте проводник.
Введите \IISServer.contoso.com \Software$.
Откройте события безопасности и убедитесь, что вы видите идентификатор события
IISServer.contoso.com
4624.Откройте обычную командную строку
Client1.contoso.com
от имени пользователяJohn
.klist tickets
Выполните команду и проверьте запросCIFS/IISServer.contoso.com
.#1> Client: John @ CONTOSO.COM Server: cifs/iisserver.contoso.com @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize Start Time: 11/28/2022 1:40:22 (local) End Time: 11/28/2022 11:28:11 (local) Renew Time: 12/5/2022 1:28:11 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0 Kdc Called: DCA.contoso.com
Сбор сетевых трассировок в
Client1.contoso.com
. Просмотрите трассировки сети, чтобы увидеть, какой шаг завершается сбоем, чтобы можно было дополнительно сузить шаги и устранить проблему.