Механизм аутентификации безопасности Windows Аутентификация домена Kerberos
Механизм аутентификации безопасности Windows Аутентификация домена Kerberos

1. Введение в Kerberos

Kerberos — это протокол сетевой аутентификации, разработанный в Массачусетском технологическом институте (MIT), и его основными преимуществами являются стойкое шифрование и единый вход (SSO). В качестве доверенной сторонней службы аутентификации Kerberos использует традиционную технологию шифрования (например, общие ключи) для обеспечения аутентификации, не зависящей от операционной системы хоста. Он не требует доверия на основе адресов хоста и не требует физической безопасности. все хосты в сети и обеспечивают безопасность связи при условии, что пакеты данных, передаваемые по сети, могут быть прочитаны, изменены и вставлены произвольно.

2. Порт связи Kerberos

1) Порт TCP/UDP 88 (Kerberos): аутентификация и предоставление билетов.

2) Порт TCP/UDP 464: протокол Kerberos Kpaswd (сброс пароля).

3)LDAP:389。

4)LDAPS:636。

3. Существительные, специфичные для Kerberos.

существительное

Введение функции

AS

Служба аутентификации личности (проверка личности клиента).

KDC

Центр распространения ключей (самый важный сервер в домене, контроллер домена).

TGT

Билет, удостоверяющий личность пользователя (билет для доступа к сервисам TGS).

TGS

Сервис авторизации билетов.

ST

Билет для доступа к сервису.

Krbtgt

В каждом домене существует учетная запись krbtgt. Эта учетная запись шифруется учетной записью службы KDC при создании TGT, а ее пароль генерируется случайным образом.

Principal

Имя субъекта аутентификации[/Instance]@REALM.

PAC

Сертификат атрибута привилегий (SID пользователя, группа пользователя).

SPN

Имя субъекта службы.

Session Key

Временный сеансовый ключ a, известный только Клиенту и TGS, имеет решающее значение для аутентификации Kerberos.

Server Session Key

Временный сеансовый ключ b, известный только Клиенту и Серверу, имеет решающее значение для аутентификации Kerberos.

Authenticator

Зашифровано с помощью SessionKey и содержит имя и временную метку участника-клиента, действительные в течение 2 минут.

Replay Cache

Kerberos5 представляет кэш повторов. Служба кэширует полученный аутентификатор в течение 2 минут. Если аутентификатор тот же, что и в кеше, он будет отклонен.

4. Ролевой компонент Kerberos.

Как показано на рис. 1-1, компонент роли Kerberos включает следующие части.

1) KDC: KDC является частью ADDS (службы каталогов AD) и работает на каждом контроллере домена. Он предоставляет билеты сеансов и временные ключи сеансов пользователям и компьютерам в домене, а его сервисная учетная запись — krbtgt.

2) AS: Служба аутентификации, которая выполняет первоначальную аутентификацию и выдает пользователям билеты.

3) TGS: Служба авторизации билетов, которая выдает билеты на услуги на основе разрешений билетов, удостоверяющих личность пользователя.

4) Клиент. Под клиентом понимается пользователь, которому необходим доступ к ресурсам, например просмотр общих файлов, запросы к базам данных или удаленные подключения. Клиентам необходимо пройти аутентификацию перед доступом к ресурсам.

5) Сервер: соответствует определенным службам на компьютерах домена. Каждая служба имеет уникальный SPN.

Рис. 1-1 Компоненты роли Kerberos
Рис. 1-1 Компоненты роли Kerberos

5. Обзор процесса аутентификации Kerberos

Kerberos — это метод аутентификации на основе билетов. Когда клиенту необходимо получить доступ к службе на сервере, ему необходимо получить билет службы ST (Service Ticket). Другими словами, клиенту необходимо подготовить ST перед доступом к услуге, и он ждет, пока служба проверит ST перед доступом. Однако этот билет нельзя получить напрямую. Для подтверждения личности клиента требуется TGT (билет на получение билета). Другими словами, клиент должен сначала получить TGT, чтобы подтвердить свою личность, прежде чем получать ST. Как TGT, так и сервисный билет ST выдаются KDC (Центр распространения ключей). Поскольку KDC работает на контроллере домена, контроллер домена выдает как TGT, так и билет службы ST. Ниже приводится обзор процесса Kerberos.

1) Когда пользователь входит в систему, временная метка шифруется с использованием хэша NTLM, чтобы доказать KDC, что он знает пароль. Этот шаг называется «предварительной аутентификацией».

2) После завершения предварительной аутентификации сервер аутентификации предоставит пользователю билет на получение билета (TGT), действительный в течение ограниченного времени.

3) Когда пользователь желает пройти аутентификацию в службе, он представляет TGT службе TGS KDC. Если TGT действителен и у пользователя есть разрешение на использование службы, пользователь получает билет службы (ST) от Службы предоставления билетов (TGS).

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

6. Подробное объяснение процесса аутентификации Kerberos.

(1)AS_REQ & AS_REP (Взаимодействие между клиентом и AS)

1)АС_РЕQ. Когда пользователь в домене вводит учетную запись и пароль на клиенте и хочет получить доступ к службе в домене, клиент отправляет запрос аутентификации Authenticator в AS. Запрос аутентификации содержит шифрование NTLM-HASH клиента. , имя пользователя, IP-адрес хоста и некоторая другая информация о параметрах, такая как тип сообщения, номер версии, параметры согласования и т. д., служат учетными данными для запроса аутентификации. Поскольку необходимо проверить, является ли AS подлинной, для шифрования используется NTLM-HASH клиента. Если это подлинная AS, AS_REQ будет расшифрован обычным образом.

2)АС_РЕП. Когда служба аутентификации AS в KDC получает запрос AS_REQ клиента, KDC проверяет, находится ли пользователь клиента в белом списке AD. Если он находится в белом списке AD, используйте ключ пользователя клиента для расшифровки запроса предварительной аутентификации Authenticator. В случае успеха служба аутентификации AS генерирует случайный ключ сеанса (CT_SK), шифрует ключ сеанса (CT_SK) с использованием NTLM-хеша пароля пользователя и использует NTLM учетной записи по умолчанию krbtgt. Хэш шифрует sessionKey, информацию о клиенте, временную метку клиента и время истечения срока действия аутентификации для получения TGT (билета предоставления билета), а затем отправляет клиенту ответный пакет AS_REP.

(2)TGS_REQ & TGS_REP (Взаимодействие между клиентом и TGS)

1) ТГС_РЕQ. Когда клиент получает соответствующий пакет от службы аутентификации AS, клиент будет использовать свой собственный NTLM-хеш для расшифровки двух частей содержимого зашифрованного текста, чтобы получить ключ SessionKey (CT_SK), используемый для связи с TGS, и кэш TGT клиента SessionKey. (билет предоставления билета), а затем клиент использует SessionKey (CT_SK) для шифрования запроса аутентификации Аутентификатора и отправляет его в TGS в KDC для получения прав доступа к Серверу. Аутентификация аутентификатора включает имя участника-клиента, временную метку, имя принципала SS, отправленное клиентом, время жизни, аутентификатор и TGT.

2) ТГС_РЕП. Когда TGS получает запрос аутентификации аутентификатора, отправленный TGS_REQ, он проверяет свое имя участника SS. Если проверка существует, TGS использует NTLM учетной записи krbtgt. Хэш расшифровывает TGT и извлекает SessionKey. В то же время он также проверяет информацию о клиенте, такую ​​как срок действия TGT, имя клиента в аутентификации Authenticator и является ли TGT тем же самым. пройдет, TGS будет случайным. Создайте новую строку Sessionkey и верните клиенту следующие две части.

  • Имя участника SS, Timestamp (метка времени), Lifetime (время жизни) и новый SessionKey, зашифрованный старым SessionKey.
  • Билеты, созданные с помощью шифрования хэша сервера, в основном включают имя субъекта клиента, зашифрованное ключом SS, имя субъекта SS, IP_List, Timestamp, Lifetime и новый SessionKey.

(3)AP-REQ & AP-REP (Взаимодействие между клиентом и сервером)

1)AP-REQ. После получения ответа TGS клиент расшифровывает ключ сеанса сервера через SessionKey и использует его для шифрования в аутентификаторе. Аутентификатор включает в себя имя участника клиента, временную метку, ClientAuthenticator и служебный билет, которые отправляются на SS (сервер).

2)АП-РЕП. После получения запроса AP-REQ от клиента сервер расшифровывает билет службы ST с помощью ключа службы и извлекает информацию ключа сеанса службы. В то же время он также проверяет время истечения срока действия TGT и аутентификации аутентификатора. Убедитесь, что имя участника-клиента совпадает с TGT и другой информацией о клиенте. После успешной проверки сервер проверит, требуется ли для конфигурации опции согласования в пакете запроса AP-REQ проверка личности сервера. Если она настроена на проверку личности сервера, сервер будет использовать Service SessionKey. снова для расшифрованного аутентификатора. Шифрование отправляется клиенту через ответный пакет AP-REP. Клиент использует кэшированный ключ сеанса службы для расшифровки. Если содержимое точно такое же, как и раньше, он может доказать, что к серверу он обращается. имеет тот же ключ сеанса службы, что и он сам.


Я участвую в пятом выпуске специального учебного лагеря Tencent Technology Creation 2024 с эссе, получившими награды. Приходите и разделите приз со мной!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose