Квиточки, будь ласка ...
Kerberos Що це?
Active Directory використовує Kerberos, коли може
Відрізняється від LM / NTLM / NTLMv2, заснований на стандартах RFC 1510 та інших
Має власний словник термінів: клієнт, сервіс, пре-аутентифікатор, аутентифікатор, облікові дані, ключ сесії, квиток, Ticket Granting Ticket, Service Ticket, Key Distribution Center, Authentication Service, Ticket Granting Service
Kerberos Вид з космосу
Спрощено, це служби, що працюють на контролері домену
Розуміє дві речі ( "Principals"): користувачі та сервіси (такі як файлові служби на сервері)
Коли користувач хоче отримати сервіс, він запитує квиток на цей сервіс
Потім, користувач пред'являє сервісу цей квиток, коли хоче ним скористатися
голови Kerberos
Kerberos має три голови
- Клієнти або "User Principals": облікові записи користувачів; кожна має свій пароль і ім'я - "UPN"
- Сервіси або "Service Principals": щось до чого ми хочемо отримати доступ; це може бути просто сервер або його окремий сервіс (файли / друк, SQL, Exchange); кожен сервіс має своє ім'я - "SPN" і пароль
- Key Distribution Center (KDC) - контролер домену, сервер, який знає всі паролі користувачів і сервісів. Має власний пароль, відомий тільки йому самому (обліковий запис "krbtgt") і іншим контролерам в домені.
Відкладемо паролі на деякий час в сторону; а зараз…
Kerberos в картинках Зустрічайте наші голови ...
Kerberos в картинках Для виконання цього ...
Kerberos Два види квитків, дві служби
Спочатку, ми представляємо себе KDC, входячи в систему; щоб виконувати вхід тільки один раз, ми просимо KDC надати "квиток на KDC" ... і це Ticket Granting Ticket
Він надається частиною KDC, яка називається "Authentication Service" або AS
Отримавши TGT, ми можемо пред'явити його KDC і сказати: "Пам'ятаєш мене? Тепер мені потрібен Service Ticket до такого-то сервісу ... "
Service ticket видає інша частина KDC, яка називається "Ticket Granting Service" або TGS
Як це розміщується в DC?
Key Distribution Center = Authentication Service + Ticket Granting Service
KDC = AS + TGS
KDC, AS, TGS - всього лише частина ролей, які виконує контролер
Проте, ми не можемо побачити AS, TGS та інші служби в Task Manager; вони виконуються всередині процесу LSASS
Kerberos Чому два види квитків?
Ticket Granting Ticket як і Service Ticket аутентифікує нас сервісу
Але зазвичай, все закінчується всього одним TGT і безліччю ST
Причина наявності двох видів квитків: Kerberos захищає кожен квиток, шифруючи частина його даних за допомогою пароля або ключа
Kerberos Ключові причини чому Kerberos краще
Безліч квитків на увазі безліч шифрування інформації за допомогою нашого пароля - це значить, що зловмисник матиме безліч даних для обчислення пароля
Отже - і це дуже важливий момент - те, що надає Kerberos в TGT, по суті справи, є "паролем на день"
Інформація, що відноситься до Service ticket, шифрується за допомогою цього денного пароля; тільки що відноситься до TGT інформація шифрується за допомогою вашого пароля - одна транзакція в день!
Kerberos в картинках Спершу, Тому потрібен Ticket Granting Ticket
До слова про Vista і вище
Якщо поглянути на мережевий трафік, коли Vista намагається виконати вхід, ми побачимо, що запит TGT в перший раз завжди завершується невдало.
Vista свідомо відправляє "поганий" пакет, щоб визначити можливість використання AES замість RC4-HMAC - повертається повідомлення про помилку "KDC_ERR_PREAUTH_REQUIRED" містить в собі список можливих алгоритмів
Том натиснув Ctrl + Alt + Del, ввів свої ім'я та пароль і отримав TGT
Але він все ще не увійшов на свій комп'ютер
Йому потрібен доступ до його робочої станції
Він отримає його за допомогою Service Ticket
Отже, це наступна річ, яку йому потрібно попросити у Ticket Granting Service
Kerberos в картинках Далі, Том отримує Service Ticket
Том увійшов на свою робочу станцію
Він отримав TGT, який використовує для запиту Service Ticket у Ticket Granting Service
Він отримав Service Ticket до своєї робочої станції
Ці "квитки", насправді, всього лише дані в пам'яті комп'ютера TOMSPC
Том може подивитися їх за допомогою kerbtray або klist, що входять в Resource Kit
Висновок утиліти klist
C: \> klist tickets
Cached Tickets: (2)
Server: krbtgt/[email protected]
KerbTicket Encryption Type: RSADSI RC4-HMAC (NT)
Server: host/[email protected]
KerbTicket Encryption Type: RSADSI RC4-HMAC (NT)
На принт-сервер ...
Точно таким же чином, Том може отримати квиток до служби друку на PS (в klist це відображається, як cifs / ps.stanky.ru ...)
Він пред'являє TGS свій TGT
Контролер перевіряє TGT і видає Тому Service Ticket, який ідентифікує його на PS
Тепер у Тома три квитка
Том і його квитки
Звучить добре, але чи безпечно? Час зануритися в деталі
Все це звучить добре ... Але як ми це забезпечимо?
Чому зловмисник не може перехопити квитки, які говорять "Привіт служба друку PS, я Том"?
Ключ - це добре ... Ключі - це наступна частина нашого Марлезонського балету
безпечна ідентифікація
Ми хочемо мати можливість ідентифікувати один одного через небезпечну мережу; ми можемо зробити це, якщо:
- Домовимося про алгоритм шифрування
- Домовимося про секретний ключі
- Домовимося про дані для комунікації
Наприклад: я говорю, що ви можете дізнатися мене по вітального повідомленням, яке ви розшифровуєте DES'ом і 56-ти бітовим ключем, який знаємо тільки я і ви, і якщо воно говорить "Поточний час X", тоді я, дійсно, можу безпечно ідентифікувати себе перед вами, скажімо, через інтернет
Kerberos і AD ...
Ми домовляємося:
- Алгоритм шифрування: RC4-HMAC
- Загальний секретний ключ: ми дозволяємо KDC створити довільний 128-ми розрядний ключ і передати його тільки нам
- Дані розпізнавання: блок даних, званий "аутентифікатор"
Коли "аутентифікатор" розшифрований, він повинен доводити іншій стороні, що ми знаємо загальний секретний ключ
Загальні ключі так само корисні ...
Одного разу отримавши загальний ключ, який більше ні хто не знає, клієнт і сервер можуть виконувати інші речі, крім аутентифікації, такі як:
- підписування SMB
- Безпечні (шифровані) сесії
- Обмін ключами IPsec для AH або ESP (підписування або шифрування)
- Будь-які інші форми підписування або шифрування
Ще одна вимога до ключів
Було б чудово, якщо б ключ, який ми використовуємо, чи не був одним і тим же, кожен раз
Замість цього, при необхідності поговорити, було б краще, якщо б ми якимось чином домовилися про ключі, який би діяв лише кілька годин і ми б ніколи більше його не використали - ключ для сесії
Такий ключ називається ключем сесії ( "Session Key")
Призначення Kerberos Як отримати ключ без його перехоплення?
Ми домовилися про вміст аутентифікатора, який ми шифруємо, використовуючи узгоджений алгоритм
Все, що нам потрібно:
- Сервер, що генерує довільні ключі сесій, які використовуються лише кілька годин
- Метод, що дозволяє передати вам і мені ці ключі без перехоплення
Це і робить Kerberos. Періодично.
Видача ключів - частина I: Ключ сесії в Ticket Granting Ticket
Пам'ятайте квитки - спершу TGT, потім Service Ticket? Тепер розглянемо частину ключів
Коли Том просить TGT у AS, він, насправді. просить дві речі:
- TGT, який він пред'являє TGS, коли йому потрібен Service Ticket і
- Спеціальний ключ сесії "тільки на сьогодні", відомий тільки Тому і KDC
Ось як це працює (вже детальніше, але все ще трохи спрощено)
AS створює ключ сесії
Том отримує TGT і ключ сесії
Чого ми цим досягли?
По-перше - отримали загальний ключ сесії ( "на сьогодні") між KDC і Томом
По-друге - отримали структуру даних (TGT), яку може розшифрувати тільки KDC
Так як тільки KDC міг створити TGT, і TGT містить "сьогоднішній ключ" Tom-KDC, Том може пред'явити TGT щоразу, коли захоче нагадати KDC, що вони вже спілкувалися
І для KDC НІ необхідності запам'ятовувати, що Том сьогодні вже аутентифицироваться
Видача ключів - частина II: Отримання Service Ticket на робочу станцію
Далі, згадуємо, що Тому потрібен Service Ticket на його робочу станцію, тому, він пред'являє TGT на Ticket Granting Service
Але як TGS може переконатися в тому, що хто-небудь не перехопив TGT Тома і не відправив його на TGS?
Це досягається за допомогою аутентифікатора ( "Authenticator") - структури даних, що містить в собі, серед інших речей, штамп часу, зашифрований ключем Tom-KDC
Том запитує ST
TGS перевіряє запит Тома
TGS створює ST для TOMSPC
Том отримує новий ключ
Том аутентифицирующей на TOMSPC
Том увійшов в систему
Так само, як AS і TGS, служба Workstation на TOMSPC відкриває квиток, так як він зашифрований особистим паролем TOMSPC
TOMSPC знаходить всередині ключ TPC-Tom, який використовує, щоб відкрити аутентифікатор
Потім, TOMSPC перевіряє штамп часу, бачить що він в порядку
Ще один момент про квитки - пам'ятайте аутентифікатор? Він доводить сервісу, що користувач, справді, той за кого себе видає
У Kerberos, ми можемо додатково попросити сервіс відправити назад наш штамп часу, зашифрований ключем сесії - це взаємна аутентифікація ( "Mutual Authentication")
Ці ключі надаються користувачам у формі квитків
Користувачі доводять, що вони є законними власниками квитків, використовуючи аутентифікатор
Kerberos працює тільки в AD; сучасні системи до цих пір використовують LM, NTLM або NTLMv2 для аутентифікації
Додаткові матеріали
How the Kerberos V5 Authentication Protocol Works
Блог команди Ask the Directory Services
IIS and Kerberos від Ken Schaefer
Сподіваюся, це було корисно і цікаво
[email protected]
Центр ігровий підтримки дитини ГБОУ дитячий сад №1492
Будь ласка, не сваріть дитину за те, що у вашому розумінні представляється помилкою, а замість цього хваліть за удачі! Бесіди з іншими.
Туризм - це сучасне подорож Туризм - це сучасне подорож
Подорож слово старе, ємне, призивне. Словник В. І. Даля визначає його як «мандрування, страннічанье, ходьба або їзда.
А ви знаєте, що маєте право на податкові відрахування? Що це?
У коробці була залишена записка такого змісту: «Будь ласка, подбайте про мене!». Міліція звернулася по радіо з пропозицією.
Будь ласка, виберіть одну з опцій: Будь ласка, виберіть одну з опцій
Кадрове діловодство і адміністрування пільг часто віддаються на аутсорсинг сторонньому провайдеру
«Подорож по Астраханській губернії». грамота
Грамота, ця підтверджує, що направляється лазутчик Галина Володимирівна в XXI століття на урок в 8 клас, щоб відправитися з хлопцями.