NTLM vs Kerberos. Аутентификация в системе Windows.
Различия между протоколами аутентификация NTLM и Kerberos. Алгоритмы работы протоколов аутентификация в среде Windows.
Недавний шаг Microsoft по постепенному отказу от аутентификации NTLM (New Technology LAN Manager) в пользу Kerberos является разумным выбором в области безопасности. Однако этот сдвиг добавляет дополнительную сложность, особенно при работе с несколькими устаревшими конечными точками, серверами и сетями.
В области аутентификации Windows выделяются два важных протокола: Kerberos и NTLM. Оба играют решающую роль в поддержании безопасных и эффективных сетевых операций, но отличаются в своем способе работы.
Данная статья поможет разобраться в алгоритме работы каждого протокола аутентификации и укажет на ключевые различия между ними в зависимости от различных вариантов использования.
Локальная аутентификация
Когда пользователь хочет войти непосредственно на рабочую станцию, не входящую в домен после того, как пользователь ввел свой логин и пароль — сразу после этого введенные данные передаются подсистеме локальной безопасности (LSA), которая сразу преобразует пароль в хэш.
Хэширование — это одностороннее криптографическое преобразование, делающее восстановление исходной последовательности невозможным. В открытом виде пароль нигде в системе не хранится и не фигурирует, пользователь — единственный кто его знает.
Алгоритм локальной аутентификации взят с сайта interface31.ru
Затем служба LSA обращается к диспетчеру учетных записей безопасности (SAM) и сообщает ему имя пользователя. Диспетчер обращается в базу SAM и извлекает оттуда хэш пароля указанного пользователя, сгенерированный при создании учетной записи (или в процессе смены пароля).
Затем LSA сравнивает хэш введенного пароля и хэш из базы SAM, в случае их совпадения аутентификация считается успешной, а хэш введенного пароля помещается в хранилище службы LSA и находится там до окончания сеанса пользователя.
В случае входа пользователя в домен, для аутентификации используются иные механизмы, прежде всего протокол Kerberos, однако, если одна из сторон не может его использовать, по согласованию могут быть использованы протоколы NTLM и даже устаревший LM.
NTLM
NTLM это аббревиатура протокола Windows NT LAN Manager, который использовался еще со времен Windows 3.11 для рабочих групп и назывался LAN Manager (LM).
Новый протокол аутентификации NTLM появился в Windows NT и дожил до наших дней с некоторыми изменениями. До появления Kerberos в Windows 2000 был единственным протоколом аутентификации в домене NT.
С выходом Windows 2000 Microsoft представила вторую версию протокола NTLMv2, который был серьезно доработан в плане улучшений криптографической стойкости и противодействия распространенным типам атак. Начиная с Windows 7 / Server 2008 R2 использование протоколов NTLM и LM по умолчанию выключено.
NTLM — это имя пакета, содержащего LAN Manager версии 1 и 2 и NTLM версии 1 и 2. Тем не менее, NTLM часто называют NTLM версии 2 (NTLMv2).
Алгоритм работы аутентификация NTLM
NTLM - это протокол аутентификации вызов-ответа. Основными сущностями, участвующими в протоколе NTLM, являются:
Клиент — Клиент действует от имени пользователя и инициирует запрос.
Сервер — Сервер размещает услуги, к которым пользователь хочет получить доступ.
Контроллер домена — Контроллер домена выполняет процесс аутентификации от имени сервера.
Алгоритм NTLM аутентификации взят с сайта Microsoft Tech Community
Процесс аутентификации NTLM работает следующим образом:
(1) Пользователь получает доступ к клиентскому компьютеру и предоставляет доменное имя, имя пользователя и пароль. Клиент вычисляет криптографический хэш пароля и отбрасывает фактический пароль. Клиент отправляет имя пользователя на сервер (в виде простого текста).
(2) Сервер генерирует 16-байтное случайное число, называемое вызовом, и отправляет его обратно клиенту.
(3) Клиент шифрует этот вызов с помощью хэша пароля пользователя и возвращает результат на сервер. Это называется ответом.
(4) Сервер отправляет следующие три элемента контроллеру домена:
- Имя пользователя
- Вызов отправлен клиенту
- Ответ, полученный от клиента
(5) Контроллер домена использует имя пользователя для получения хэша пароля пользователя. Он сравнивает зашифрованный вызов с ответом клиента (на шаге 4). Если они идентичны, аутентификация успешна, и контроллер домена уведомляет сервер.
(6) Затем сервер отправляет соответствующий ответ обратно клиенту.
Хэш NTLM — это криптографическое представление пароля пользователя, созданное с использованием алгоритма хеширования MD4. Этот хэш хранится и используется протоколом NTLM в процессе аутентификации для проверки учетных данных пользователя без раскрытия фактического пароля.
Как проверить версию NTLM?
Необходимо убедиться, что «Аудит безопасности» включен, и проверить идентификатор события Event ID 4624 для получения подробной информации об используемом протоколе. Ниже приведены подробные шаги.
- Включить аудит безопасности:
- На контроллере домена открыть редактор управления групповой политикой.
- Перейти в Конфигурация компьютера -> Политики -> Параметры Windows -> Параметры безопасности -> Конфигурация расширенной политики аудита -> Политики аудита -> Вход/выход.
- Включить аудит входа в систему.
- Убедиться, что аудит успехов и неудач включен.
- Проверить просмотр событий:
- После включения аудита выполнить вход в сеть или дождаться входа пользователя.
- Открыть Просмотр событий и перейти в Журналы Windows -> Безопасность.
- Найти событие с идентификатором Event ID 4624, которое регистрирует успешные входы в систему.
- В сведениях о событии проверить поле Пакет аутентификации; оно укажет, использовался ли NTLM или Kerberos. Если использовался NTLM, в разделе Подробная информация об аутентификации будет указана версия NTLM (например, NTLMv1, NTLMv2).
Как проверить, включена ли аутентификация NTLM?
Чтобы определить, включена ли аутентификация NTLM на сервере Windows:
- Получить доступ к локальной политике безопасности (secpol.msc).
- Перейти в раздел Локальные политики -> Параметры безопасности.
- Проверить политики в параметрах «Сетевая безопасность: уровень аутентификации LAN Manager» и «Сетевая безопасность: ограничение NTLM».
Безопасна ли аутентификация NTLM?
NTLM считается менее безопасным по сравнению с современными протоколами аутентификации, такими как Kerberos. Он уязвим для атак с ретрансляцией, атак методом подбора и других эксплойтов. Хотя NTLMv2 обеспечивает улучшения по сравнению с оригинальным NTLM, ему по-прежнему не хватает надежных функций безопасности Kerberos, таких как взаимная аутентификация и встроенная защита от атак с повторным воспроизведением.
Каковы недостатки NTLM?
Самым большим недостатком NTLM является слабая криптография, стоящая за ним. Кроме того, NTLM не имеет всех функций, которые есть у Kerberos.
- Простое извлечение хэша — Широко доступные хакерские инструменты могут легко извлекать кэшированные учетные данные учетной записи, такие как хеши NTLM.
- Слабый алгоритм хеширования — NTLM использует слабый алгоритм хеширования паролей MD4, что делает все 8-симнамольные пароли взломаемыми менее чем за 2,5 часа.
- Уязвимость Pass-the-hash — NTLM уязвима для атак pass-the-hash (PtH).
Почему NTLM все еще используется?
NTLM — это устаревший протокол. Он менее безопасен и имеет меньше функций, чем Kerberos. Вопрос в следующем: почему NTLM все еще используется? Вот несколько причин, по которым NTLM все еще используется:
- Опция резервного копирования — Если Kerberos не работает, клиент вернется к NTLM.
- Аутентификация рабочей группы — NTLM по-прежнему используется для аутентификации в системах, настроенных как член рабочей группы.
- Локальная аутентификация — NTLM работает во время аутентификации локального входа в систему на контроллерах, не принадлежащих домену.
- Обратной совместимости — Старые системы, такие как Windows 95, Windows 98 и Windows NT 4.0, не являются членами домена Active Directory, поэтому они используют NTLM для аутентификации локальных входов.
- Несуществующая SPN — Если клиент запрашивает имя принципала службы (SPN), которое не существует в Active Directory (AD), Kerberos не будет работать. Примерами могут быть использование IP вместо имени для доступа к ресурсу, а не регистрация SPN.
- Не удается подключиться к DNS или DC — NTLM будет использоваться, когда между клиентом и DNS/DC нет связи.
- Гибридные среды — NTLM все еще находит применение в гибридных средах, которые объединяют недоменные клиенты с доменными клиентами или доменные учетные записи с локальными учетными записями пользователей.
Как отключить NTLM-аутентификацию в домене Windows?
Отключение NTLM требует настройки политики Ограничить NTLM: NTLM-аутентификация в этом домене. Этот параметр позволяет контролировать использование NTLM-аутентификации в домене. Чтобы найти и настроить необходимую политику, выполните следующие действия:
- Открытыть редактора групповой политики.
- Перейти в Конфигурация компьютера -> Параметры Windows -> Параметры безопасности -> Локальные политики -> Параметры безопасности.
- Установить для параметра «Сетевая безопасность: Ограничить NTLM» значение «Запретить все» или настройте его на уровне, который соответствует требованиям безопасности, эффективно отключая NTLM там, где он не нужен.
Kerberos
Протокол Kerberos — это безопасный метод аутентификации запросов на обслуживание между доверенными хостами через недоверенную сеть. Он использует симметричную криптографию ключей и систему на основе билетов для аутентификации пользователей, гарантируя, что учетные данные пользователей не будут переданы по сети.
Название «Kerberos» происходит из греческой мифологии, где Цербер — трехглавый пес, охраняющий врата Подземного мира. Это название отражает роль протокола в надежной защите сетевых ресурсов.
Алгоритм работы Kerberos
Kerberos - это протокол аутентификации на основе билетов. Основными объектами, участвующими в протоколе Kerberos, являются:
Клиент — Клиент действует от имени пользователя и инициирует запрос.
Сервер — Сервер размещает услуги, к которым пользователь хочет получить доступ.
Сервер аутентификации (AS) — Этот сервер выполняет аутентификацию клиента и выдает клиенту билет на предоставление билета (TGT) в случае успешной аутентификации.
Ticket Granting Server (TGS) — это сервер приложений, который выдает сервисные билеты.
База данных (база данных) — Сервер аутентификации проверяет права доступа пользователей в базе данных.
Центр распределения ключей (KDC) — KDC предоставляет услуги по аутентификации и выдачу билетов. AS, TGS и db являются частью KDC.
Алгоритм Kerberos аутентификации взят с сайта Microsoft Tech Community
Kerberos работает в несколько этапов:
(1) Вход пользователя на клиентскую машину. Клиент выполняет запрос открытого текста (TGT). Сообщение содержит:
- идентификатор пользователя; идентификатор запрашиваемой службы (TGT);
- сетевой адрес клиента (IP);
- срок службы проверки
(2) Сервер аутентификации проверит, существует ли пользователь в базе данных KDC.
- Если пользователь найден, он случайным образом сгенерирует ключ (ключ сеанса) для использования между пользователем и сервером предоставления билетов (TGS).
- Затем сервер аутентификации отправит два сообщения обратно клиенту:
- Один зашифрован секретным ключом TGS.
- Один зашифрован секретным ключом клиента.
Примечание: Ключ сеанса TGS — это общий ключ между клиентом и TGS. Секретный ключ клиента - это хэш учетных данных пользователя (имя пользователя+пароль).
(3) Клиент расшифровывает ключ и может войти в систему, кэшируя его локально. Он также хранит зашифрованный TGT в его кэше. При доступе к сетевому ресурсу клиент отправляет запрос в TGS с именем ресурса, к которому он хочет получить доступ, идентификатором пользователя/меткой времени и кэшируемым TGT.
(4) TGS расшифровывает информацию о пользователе и предоставляет сервисный билет и ключ сеанса службы для доступа к службе и отправляет его обратно Клиенту после шифрования.
(5) Клиент отправляет запрос на сервер (зашифрованный сервисным билетом и ключом сеанса)
(6) Сервер расшифровывает запрос, и если он подлинный, он обеспечивает доступ к службе.
Какова цель билета при использовании Kerberos?
В Kerberos билет используется для безопасной аутентификации пользователя или идентичности сервиса для другого сервиса. Он служит доказательством идентичности клиента. Клиент может использовать его для запроса определенных билетов сервиса, которые он затем может переслать соответствующему поставщику услуг.
Как проверить, используется ли аутентификация NTLM или Kerberos?
Можно проверить использование NTLM или Kerberos, используя Event ID 4624 или команду klist. Ниже приведены подробные шаги. Просмотреть журналы безопасности:
- Открыть средство просмотра событий и перейти в раздел Журналы Windows -> Безопасность.
- Найти идентификатор события Event ID 4624 для событий входа в систему.
- Поле «Пакет аутентификации» укажет, использовался ли для аутентификации NTLM или Kerberos.
Использовать инструменты командной строки (для проверки в реальном времени):
- На клиентской машине использовать команду ‘klist’ для просмотра билетов Kerberos. Если билеты присутствуют, Kerberos используется.
- Для NTLM аналогичная проверка в реальном времени недоступна, но отсутствие билетов Kerberos (особенно при доступе к сетевым ресурсам) может указывать на использование NTLM.
Почему Kerberos лучше, чем NTLM?
Kerberos лучше, чем NTLM, потому что:
- Kerberos более безопасен — Kerberos не хранит и не отправляет пароль по сети и может использовать асимметричное шифрование для предотвращения повторного воспроизведения и атак Man-in-the-Middle (MiTM)
- Kerberos быстрее — NTLM замедляет контроллеры домена, в то время как Kerberos использует один билет для доступа к нескольким сетевым ресурсам
- Kerberos поддерживает делегирование аутентификации — В то время как NTLM поддерживает только олицеретворение, Kerberos также поддерживает делегирование аутентификации
- Kerberos поддерживает взаимную аутентификацию — Взаимная аутентификация может остановить некоторые атаки на перехват и несанкционированный доступ к сетевым ресурсам
Как принудительно использовать Kerberos вместо NTLM?
Принудительное использование Kerberos через NTLM можно осуществить следующими способами:
- Обеспечение корректных записей DNS для всех пользователей, клиентов и серверов и их синхронизации по времени.
- Правильная настройка имен участников службы (SPN) для всех служб.
- Установите для параметра «Сетевая безопасность: уровень аутентификации LAN Manager» значение «Отправлять только ответ NTLMv2. Отклонять LM и NTLM» в групповой политике, чтобы гарантировать, что NTLM не будет использоваться даже в случае сбоя аутентификации Kerberos.
Основные различия
После понимания работы в протоколах аутентификации Kerberos и NTLM, можно выделить ключевые различия между ними в зависимости от различных вариантов использования. Некоторые из случаев использования:
- Безопасность: Kerberos считается более безопасным, чем NTLM, потому что он использует взаимную аутентификацию и авторизацию на основе билетов. Kerberos полагается на доверенный сторонний центр распределения ключей (KDC) для выдачи билетов и установления безопасных сеансов связи. NTLM, с другой стороны, использует механизм вызова-ответ, который может быть подвержен определенным атакам, таким как атаки pass-the-hash.
- Единый вход (SSO): Kerberos поддерживает единый вход (SSO), позволяя пользователям аутентифицироваться один раз и получить доступ к нескольким службам без необходимости повторной аутентификации. NTLM по своей природе не поддерживает SSO, требуя от пользователей отдельной аутентификации для каждой услуги, к которой они обращаются.
- Масштабируемость: Kerberos более масштабируема, чем NTLM, особенно в больших и сложных сетевых средах. Kerberos использует билеты, которые могут быть кэшированы клиентами и повторно использованы для доступа к нескольким службам, что снижает потребность в частых запросах на аутентификацию к KDC. NTLM, с другой стороны, требует отдельного процесса аутентификации для каждой службы, что приводит к увеличению сетевого трафика и накладных расходов.
- Кроссплатформенная совместимость: Kerberos - это кроссплатформенный протокол аутентификации, поддерживаемый различными операционными системами и платформами, включая Windows, Linux и macOS. NTLM в основном используется в средах на базе Windows и может не так широко поддерживаться на различных платформах.
- Чувствительность к времени: Kerberos в значительной степени полагается на синхронизированное время между вовлеченными сторонами. Срок действия билетов имеет отметку времени, что означает, что сетевые часы должны быть синхронизированы, чтобы предотвратить сбои аутентификации. NTLM, с другой стороны, не требует интенсивного использования синхронизированного времени.
- Простота использования: NTLM может быть проще реализовать в небольших, менее сложных сетях, в то время как Kerberos требует тщательной настройки и синхронизации времени по всей сети.
Подводя итог, можно сказать, что в то время как NTLM, так и Kerberos являются протоколами аутентификации, используемыми в средах Windows, Kerberos предлагает превосходную безопасность, масштабируемость и поддержку единого входа по сравнению с NTLM. Организации, переходя с NTLM на Kerberos, могут извлечь выгоду из повышения безопасности и эффективности своих процессов аутентификации, что и сделала Microsoft!
Ссылки
Статья подготовлена на основе исходных материалов:
- All about Kerberos & NTLM Authentication on Windows Systems
- Difference between Kerberos and NTLM
- Explain NTLM vs. Kerberos vs. LDAP
- Kerberos Vs NTLM Authentication Protocol
- NTLM vs Kerberos
- NTLM vs. Kerberos: What’s the Difference?
- NTLM vs Kerberos: Understanding Authentication in Windows/Active Directory
- Аутентификация в системах Windows. Часть 1 - NTLM
- Аутентификация в системах Windows. Часть 2 - Kerberos