Автентифікація AD використовує два основні протоколи: Kerberos і NTLM
NTLM
Процес сертифікації виглядає так:
- Клієнт генерує хеш NTLM локально, і це значення є хеш-значенням пароля користувача.
- Клієнт надсилає ім'я користувача на сервер додатку.
- Сервер додатків генерує випадкове значення для клієнта, яке зазвичай називається nonce або challenge.
- клієнт шифрує NONCE за допомогою NTLM-хешу і надсилає його на сервер додатків.
- Після отримання його сервер додатків надсилає його на AD-сервер разом із ім'ям користувача та nonce.
- AD генерує хеш NTLM на основі пароля користувача, шифрує nonce і потім порівнює повідомлення клієнта.
- Якщо значення однакові, автентифікація проходить, а якщо вони різні — автентифікація не проходить.
Керберос
Ключові терміни:
- KDC: Центр розподілу ключів, який надає дві послуги: Сервіс автентифікації (AS) та Сервіс видачі квитків (TGS). Домен генерує доменний обліковий запис під назвою krbtgt для KDC, а TGT використовує пароль для шифрування та розшифрування. Коли користувач домену вперше отримує доступ, він хоче, щоб AS автентифікувався, а після проходження AS просить TGS надати заявку (TGT) користувачу домену.
- SPN:Service Principal Name。 Окрім облікових записів користувачів, акаунти AD також мають сервісні акаунти. Додаток також матиме сервісний акаунт, що полегшить доступ до серверних ресурсів, таких як exchange, SQL, IIS тощо. SPN — це сервіс, який використовується для пов'язування сервісу, увімкненого додатком, з обліковим записом у AD.
Процес сертифікації:
1. Коли користувач домену входить, до DC надсилається AS-запит (AS_REQ), який містить зашифровану часову мітку, зашифровану з хешем пароля користувача та ім'ям користувача.
2. Після отримання запиту DC використовує хеш користувача та пароль користувача для розшифрування. DC відповідає клієнту відповідь AS (AS_REP), яка містить сесійний ключ і TGT (Ticket Granting Ticket). Сесійний ключ шифрується хешом пароля користувача. TGT містить членство в групі, домен, часову мітку, IP-адресу клієнта та сесійний ключ. TGT також зашифрований, зашифрований паролем від облікового запису KDC, і клієнт не може його розшифрувати. (TGT за замовчуванням дійсний 10 годин, і оновлення, що відбуваються після цього, не вимагають від користувача повторного введення пароля)
3. Коли користувач запитує ресурс у домені, надсилається запит на сервіс надати квитки (TGS_REQ), включно з ім'ям користувача, часовою позначкою, TGT та SPN. Часові позначки та імена користувачів шифруються сесійним ключем.
4. Після отримання запиту KDC спочатку визначає, чи є SPN у запиті, потім розшифровує TGT, витягує сесійний ключ і часову мітку в TGT і використовує сесійний ключ у TGT для розшифрування зашифрованого імені користувача та часової позначки. Проведіть кілька перевірок:
(1) Часова мітка, розшифрована TGT, має бути дійсною. (Якщо відбувається повторна атака, часова мітка стає недійсною.) )
(2) Чи узгоджується ім'я користувача в TGT із ім'ям користувача у запиті.
(3) Чи збігається IP-адреса в TGT з IP-адресою у запиті.
Перевірка відповідатиме на запит клієнта Ticketing Granting ServiceReply(TGS_REP), який містить авторизований доступ SPN, новий сесійний ключ для доступу між клієнтом і SPN, а також новий сервісний квиток Service Ticket (включаючи новий сесійний ключ, ім'я користувача та групу користувачів). І авторизований SPN, і сесійний ключ, що отримує доступ до SPN, шифруються сесійним ключем у TGT. Сервісний квиток шифрується паролем відповідного облікового запису SPN.
1. Після наведеного вище процесу користувач отримує сесійний ключ і сервісний квиток, пов'язаний із сервісом додатку. Користувач надсилає запит до додатка (AP_REQ), який містить ім'я користувача та часову мітку, і шифрується сесійним ключем.
2. Сервіс додатку використовує хеш пароля облікового запису для розшифрування квитка та витягування користувача, групи користувачів і сесійного ключа. Розшифруйте ім'я користувача та часову мітку в AP_REQ за допомогою розшифрованого сесійного ключа. AP_REQ Якщо так, запит приймається, і сервіс додатку призначає дозволи на основі інформації про групу користувачів у сервісному тикеті, після чого користувач може отримати доступ до запитуваного сервісу.
Оригінальна адреса:Вхід за гіперпосиланням видно.
|