Руководство по устранению неполадок с проверкой подлинности Kerberos
В этом руководстве представлены основные понятия, используемые при устранении неполадок с проверкой подлинности Kerberos.
Контрольный список для устранения неполадок
Ошибка, связанная с Kerberos, является симптомом сбоя другой службы. Протокол Kerberos использует множество служб, которые должны быть доступны и правильно функционируют для проверки подлинности.
Чтобы определить, возникает ли проблема с проверкой подлинности Kerberos, проверка журнал системных событий на наличие ошибок из любых служб (таких как Kerberos, kdc, LsaSrv или Netlogon) на клиенте, целевом сервере или контроллере домена, которые обеспечивают проверку подлинности. Если такие ошибки существуют, могут возникнуть ошибки, связанные с протоколом Kerberos.
Аудит сбоев в журнале событий безопасности целевого сервера может показать, что протокол Kerberos использовался при сбое входа.
Перед проверкой протокола Kerberos убедитесь, что следующие службы или условия работают правильно:
- Сетевая инфраструктура работает должным образом, и все компьютеры и службы могут взаимодействовать.
- Контроллер домена доступен. Команду (например,
nltest /dsgetdc:contoso.com /force /kdc
) можно выполнитьnltest /dsgetdc:<Domain Name> /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 настроена проверка подлинности Windows (согласование).
- Клиентское и серверное приложение, например SMB-клиент и сервер SMB. По умолчанию сервер SMB настраивается с помощью интерфейса поставщика поддержки безопасности (SSPI).
Пользователь открывает Microsoft Edge и просматривает внутренний веб-сайт http://webserver.contoso.com
. Веб-сайт настроен с помощью negotiate, и этот веб-сайт запрашивает проверку подлинности. После того как пользователь вручную введет имя пользователя и пароль, он получит проверку подлинности, и веб-сайт работает должным образом.
Примечание.
Этот сценарий является примером клиента и сервера. Метод устранения неполадок одинаков для любого клиента и сервера, настроенного с помощью интегрированной проверка подлинности Windows.
Встроенная проверка подлинности Windows нарушается на уровне пользователя или компьютера.
Методы устранения неполадок
Проверьте конфигурацию клиента на наличие встроенного параметра проверки подлинности, который можно включить на уровне приложения или компьютера. Например, все приложения на основе HTTP будут искать, чтобы сайт был в доверенной зоне при попытке выполнить встроенную проверку подлинности.
Откройте inetcpl.cpl (свойства браузера), которые используются всеми приложениями на основе HTTP для конфигураций Обозреватель Интернета, и проверьте, настроен ли веб-сайт как Локальная интрасеть.
Приложения также имеют конфигурацию для выполнения интегрированных проверка подлинности Windows.
Microsoft Edge или Интернет-Обозреватель имеет параметр Включить встроенную проверку подлинности 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, запущенная на контроллере домена, будет искать настроенные зоны, разрешать запись узла A и отвечать IP-адресом
IISServer.contoso.com
(шаг 2 на схеме выше). - Клиентский компьютер выполнит трехстороннее подтверждение TCP через TCP-порт 80 к
IISServer.contoso.com
. - Клиентский компьютер отправит анонимный HTTP-запрос по адресу
IISServer.contoso.com
. - Сервер IIS, прослушивающий порт 80, получит запрос от
Client1.contoso.com
, изучит конфигурацию проверки подлинности серверов IIS и отправит ответ на запрос HTTP 401 на клиентский компьютер с конфигурацией проверки подлинности Negotiate (шаг 3 на схеме выше). - Процесс Microsoft Edge, запущенный в
Client1.contoso.com
, будет знать, что сервер IIS настроен с помощью Negotiate, и проверит, является ли веб-сайт частью местной зоны интрасети. Если веб-сайт находится в зоне локальной интрасети, процесс 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
Теперь процесс Microsoft Edge переходит на
Client1.contoso.com
сервер 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
аудиты илиFailure
включены во всех операционных системах сервера Windows. Вы можете проверить, включен ли аудит, с помощью следующей команды.Если аудит не включен, включите аудит. Просмотрите категорию входа в список ниже. Как вы можете заметить, подкатегория входа включена с
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 администратора) в контексте пользователя, пытающегося получить доступ к веб-сайту.
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
. Просмотрите трассировку сети, чтобы узнать, какой шаг завершается ошибкой, чтобы можно было дополнительно сузить действия и устранить проблему.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по