
NTLM (NT LAN Manager) — это устаревший протокол аутентификации Microsoft, который появился еще в Windows NT. Хотя Microsoft представила более безопасный Kerberos протокол аутентификации еще в Windows 2000, NTLM (в основном NTLMv2) все еще широко используется для аутентификации в доменных сетях Windows. В этой статье мы рассмотрим, как отключить протоколы NTLMv1 и NTLMv2 и переключиться на Kerberos в домене Active Directory.
Ключ NTLMv1 проблемы:
- слабое шифрование;
- хранение хэша пароля в памяти службы LSA, который может быть извлечен из памяти Windows в виде открытого текста с помощью различных инструментов (например, Mimikatz) и использован для дальнейших атак с помощью скриптов pass-the-has;
- отсутствие взаимной аутентификации между сервером и клиентом, что приводит к перехвату данных и несанкционированному доступу к ресурсам (некоторые инструменты, такие как Responder, могут перехватывать NTLM-данные, передаваемые по сети, и использовать их для доступа к сетевым ресурсам);
- и другие уязвимости.
Некоторые из них были внесены в следующую версию NTLMv2 , который использует более безопасные алгоритмы шифрования и позволяет предотвратить распространенные NTLM-атаки. Протоколы аутентификации NTLMv1 и LM отключены по умолчанию, начиная с Windows 7 и Windows Server 2008 R2.
Как включить ведение журнала аудита аутентификации NTLM?
Прежде чем полностью отключать NTLM в домене и переходить на Kerberos, следует убедиться, что в домене нет приложений, требующих и использующих NTLM-аутентификацию. В вашей сети могут быть устаревшие устройства или службы, которые все еще используют аутентификацию NTLMv1 вместо NTLMv2 (или Kerberos).
Чтобы отследить учетные записи или приложения, использующие аутентификацию NTLM, можно включить политики ведения журналов аудита на всех компьютерах с помощью GPO. Откройте Политика контроллера домена по умолчанию, перейдите в раздел Конфигурация компьютера -> Параметры Windows -> Параметры безопасности -> Локальные политики -> Параметры безопасности, найдите и включите опцию Сетевая безопасность: Ограничить NTLM: аудит проверки подлинности NTLM в этом домене политику и установите ее значение на Включить все.
Таким же образом включите следующие политики в политике домена по умолчанию:
- Сетевая безопасность: Ограничение NTLM: Аудит входящего NTLM-трафика — установите его значение на Включить аудит для учетных записей домена
- Сетевая безопасность: Ограничение NTLM: исходящий трафик NTLM на удаленных серверах: набор Аудит все
После включения этих политик события, связанные с использованием аутентификации NTLM, будут появляться в окне Журналы приложений и служб -> Microsoft -> Windows -> NTLM раздел Просмотрщик событий.
Вы можете анализировать события на каждом сервере или собирать их с центрального коллектора журнала событий Windows.
Вам необходимо найти события из источника Microsoft-Windows-Security-Auditing с идентификатором события 4624 — «An Account was successfully logged on
«. Обратите внимание на информацию в разделе «Подробная информация об аутентификации» раздел. Если есть NTLM в Пакет аутентификации значение, то для аутентификации этого пользователя был использован протокол NTLM.
Посмотрите на значение параметра Имя пакета (только NTLM). Эта строка показывает, какой протокол (LM, NTLMv1 или NTLMv2) был использован для аутентификации. Поэтому вам нужно определить все серверы/приложения, использующие устаревший протокол.
Также, если для аутентификации используется NTLM вместо Kerberos, идентификатор события 4776 появится в журнале:
The computer attempted to validate the credentials for an account Authentication Package: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
Например, для поиска всех событий аутентификации NTLMv1 на всех контроллерах домена можно использовать следующий сценарий PowerShell:
$ADDCs = Get-ADDomainController -filter
$Now = Get-Date
$Yesterday = $Now.AddDays(-1)
$NewOutputFile = "c:\Events\$($Yesterday.ToString('yyyyddMM'))_AD_NTLMv1_events.log"
function GetEvents($DC){
Write-Host "Searching log on " $DC.HostName
$Events = Get-EventLog "Security" -After $Yesterday.Date -Before $Now.Date -ComputerName $DC.HostName -Message "*NTLM V1*" -instanceid 4624
foreach($Event in $Events){
Write-Host $DC.HostName $Event.EventID $Event.TimeGenerated
Out-File -FilePath $NewOutputFile -InputObject "$($Event.EventID), $($Event.MachineName), $($Event.TimeGenerated), $($Event.ReplacementStrings),($Event.message)" -Append
}
}
foreach($DC in $ADDCs){GetEvents($DC)}
После того как вы определили пользователей и приложения, использующие NTLM в вашем домене, попробуйте переключить их на использование Kerberos (возможно, с помощью SPN). Чтобы использовать аутентификацию Kerberos, некоторые приложения нужно немного переконфигурировать (Kerberos Authentication in IIS, Configure different browsers for Kerberos authentication, Create a Keytab File Using Kerberos Auth). Из собственного опыта я вижу, что даже крупные коммерческие продукты все еще используют NTLM вместо Kerberos, некоторые продукты требуют обновления или изменения конфигурации. Идея заключается в том, чтобы определить, какие приложения используют аутентификацию NTLM, и теперь у вас есть способ идентифицировать это программное обеспечение и устройства.
Те приложения, которые не могут использовать Kerberos, можно добавить в исключения. Это позволит им использовать аутентификацию NTLM, даже если она отключена на уровне домена. Для этого необходимо Сетевая безопасность: Ограничение NTLM: добавление исключений сервера для аутентификации NTLM в этом домене используется политика. Добавьте имена серверов (имена NetBIOS, IP-адреса или FQDN), на которых может использоваться аутентификация NTLM, в список исключений. В идеале этот список исключений должен быть пустым. Вы можете использовать символ подстановки *
.
Настройка Active Directory на принудительное использование NTLMv2 с помощью GPO
Прежде чем полностью отключать NTLM в домене AD, рекомендуется сначала отключить его более уязвимую версию, NTLMv1. Администратор домена должен убедиться, что его сеть не разрешает использовать NTLM или LM для аутентификации, поскольку в некоторых случаях злоумышленник может использовать специальные запросы, чтобы получить ответ на запрос NTLM/LM.
Вы можете установить предпочтительный тип аутентификации с помощью GPO домена. Откройте редактор управления групповой политикой (gpmc.msc
) и отредактируйте политику Контроллеры домена по умолчанию. Перейдите в раздел GPO Конфигурации компьютера -> Политики -> Параметры Windows -> Параметры безопасности -> Локальные политики -> Параметры безопасности и найдите политику Сетевая безопасность: Уровень аутентификации LAN Manager.
В настройках политики можно выбрать 6 вариантов::
- Отправлять ответы LM & NTLM;
- Отправлять LM & NTLM ответы — использовать безопасность сеанса NTLMv2, если это согласовано;
- Отправлять только NTLM-ответы;
- Отправлять только ответ NTLMv2;
- Отправить только ответ NTLMv2. Отказаться от LM;
- Отправлять только ответ NTLMv2. Отказаться от LM& NTLM.
Опции аутентификации NTLM перечислены в порядке повышения их безопасности. По умолчанию в Windows 7 и более поздних операционных системах используется опция Отправлять только ответ NTLMv2. Если этот параметр включен, клиентские компьютеры используют аутентификацию NTLMv2, но контроллеры домена AD принимают запросы LM, NTLM и NTLMv2.
Вы можете изменить значение политики на наиболее безопасный вариант 6 : «Отправлять только ответ NTLMv2. Отказ от LM & NTLM«. Эта политика заставляет контроллеры домена отклонять запросы LM и NTLM.
Вы также можете отключить NTLMv1 через реестр. Для этого создайте параметр DWORD с именем LmCompatibilityLevel со значением от 0 до 5 в ключе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa. Значение 5 соответствует параметру политики «Отправлять только ответ NTLMv2. Отказаться от LM NTLM».
Убедившись, что вы не используете NTLMv1, вы можете пойти дальше и попытаться отключить NTLMv2. NTLMv2 является более безопасным протоколом аутентификации, но значительно проигрывает Kerberos по уровню безопасности (хотя уязвимостей в NTLMv2 меньше, чем в NTLMv1, но все же существует вероятность перехвата и повторного использования данных, а также не поддерживается взаимная аутентификация).
Основной риск отключения NTLM заключается в потенциальном использовании устаревших или неправильно настроенных приложений, которые все еще могут использовать аутентификацию NTLM. В этом случае их нужно будет обновить или специально настроить для перехода на Kerberos.
REG add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\TerminalServerGateway\Config\Core" /v EnforceChannelBinding /t REG_DWORD /d 1 /f
Полное ограничение NTLM и использование аутентификации Kerberos в AD
Чтобы проверить, как работает аутентификация в различных приложениях домена без использования NTLM, вы можете добавить учетные записи необходимых пользователей в Защищенные пользователи доменная группа (она доступна с момента выпуска Windows Server 2012 R2). Члены этой группы безопасности могут проходить аутентификацию только с помощью Kerberos (NTLM, Digest Authentication или CredSSP не разрешены). Это позволяет проверить правильность работы аутентификации Kerberos в различных приложениях.
Затем вы можете полностью отключить NTLM в домене Active Directory с помощью команды Network Security: Ограничить NTLM: аутентификация NTLM в этом домене политика.
Политика имеет 5 вариантов:
- Отключить: политика отключена (аутентификация NTLM разрешена в домене);
- Запрет для доменных учетных записей на серверах домена: контроллеры домена отклоняют попытки аутентификации NTLM для всех серверов под учетными записями домена, и отображается сообщение об ошибке «NTLM заблокирован»;
- Запретить для учетных записей домена: контроллеры домена предотвращают попытки аутентификации NTLM для всех учетных записей домена, и появляется ошибка «NTLM заблокирован»;
- Запретить для серверов домена: Запросы на аутентификацию NTLM отклоняются для всех серверов, если имя сервера не находится в списке исключений в политике «Сетевая безопасность: Ограничить NTLM: Добавить исключения серверов для аутентификации NTLM в этом домене»;
- Запретить все: контроллеры домена блокируют все запросы NTLM для всех серверов и учетных записей домена.
Хотя NTLM теперь отключена в домене, она все еще используется для обработки локальных входов на компьютеры (NTLM всегда используется для входов локальных пользователей).
Вы также можете отключить входящий и исходящий трафик NTLM на компьютерах домена, используя отдельные Политика домена по умолчанию опции:
- Сетевая безопасность: Ограничение NTLM: Входящий трафик NTLM = Запретить все учетные записи
- Сетевая безопасность: Ограничение NTLM: Исходящий трафик NTLM на удаленные серверы = Запретить все
После включения аудита Event Viewer также будет отображать EventID 6038 из источника LsaSRV при использовании NTLM для аутентификации:
Microsoft Windows Server has detected that NTLM authentication is presently being used between clients and this server. This event occurs once per boot of the server on the first time a client uses NTLM with this server. NTLM is a weaker authentication mechanism. Please check: Which applications are using NTLM authentication? Are there configuration issues preventing the use of stronger authentication such as Kerberos authentication? If NTLM must be supported, is Extended Protection configured?
Проверить, используется ли Kerberos для аутентификации пользователей, можно с помощью команды:
klist sessions
Эта команда показывает, что все пользователи аутентифицированы по протоколу Kerberos (кроме встроенного локального администратора, который всегда аутентифицируется по протоколу NTLM).
Kerberos pre-authentication failed
). Проверьте код отказа в описании ошибки. Это укажет на причину и источник блокировки.Для дальнейшего повышения безопасности Active Directory я рекомендую прочитать эти статьи:
- Защита учетных записей администраторов в Active Directory
- Как отключить LLMNR и NetBIOS через TCP/IP?