Відключення NTLM аутентифікації в домені Windows

NTLM (NT LAN Manager) - це досить старий протокол аутентифікації Microsoft, який з'явився ще в Windows NT. Незважаючи на те, що ще в Windows 2000 Майкрософт впровадила більш безпечний протокол аутентифікації Kerberos, NTLM (в основному це NTLMv2) широко використовується для аутентифікації в Windows мережах досі. У цьому статті ми розглянемо особливості процес відключення протоколу NTLMv1 і NTLMv2, і переходу на Kerberos в домені Active Directory.

Основні проблема NTLMv1 - слабке шифрування, зберігання хеша пароля в оперативній пам'яті в службі LSA, який може отримати різними утилітами (типу mimikatz) і використовувати хеш для подальших атак, відсутність взаємної перевірки автентичності клієнта і сервера, що робить цілком реальними атаки перехоплення даних і несанкціонованого доступу до ресурсів мережі (утиліти типу Responder можуть перехоплювати дані NTLM, що передаються по мережі і використовувати їх для доступу до мережевих ресурсів) і ряд інших вразливостей.

Частина цих недоліків виправлена ​​в більш нової версії NTLMv2, який використовує більш криптостійкі алгоритми шифрування і дозволяє запобігти популярні атаки на NTLM. Починаючи з Windows 7 / Windows Server 2008 R2 використання NTLMv1 і LM для авторизації за замовчуванням вимкнено.

зміст:

  • Перемикається на використання NTLMv2
  • Аудит подій NTLM аутентифікації в домені
  • Повне відключення NTLM в домені Active Directory

Перемикається на використання NTLMv2

Якщо ви задумалися повністю відмовитися від NTLM в своєму домені, спочатку потрібно переконатися, що у вас не використовується його більш вразлива версія-NTLMv1. Ймовірно у вашій мережі є ряд застарілих пристроїв або служб, які все ще використовують аутентифікацію NTLMv1 замість NTLMv2 (або Kerberos). Тому перш, ніж вдатися до його повного відключення прочитайте розділ цієї статті з аудиту подій авторизації за допомогою NTLM.

Потенційно проблеми при відключенні NTLMv1 можуть бути у невеликих опенсорсний продуктів, різних старих моделей мережевих сканерів (який складають скани в мережеві папки), деяких NAS пристроїв і іншого застарілого обладнання, ПЗ та ОС.

В першу чергу адміністратору домену потрібно переконатися, що в його мережі заборонено використовувати NTLM або LM для авторизації, тому що в деяких випадках атакуючий може за допомогою спеціальних запитів отримати відповідь на NTLM / LM запит.

Тип аутентифікації можна задати за допомогою доменної (або локальної) політики. Відкрийте консоль управління доменними політиками і відредагуйте Default Domain Policy. Перейдіть в розділ Computer Configurations -> Policies -> Windows Settings -> Security Settings -> Local Policies -> Security Options і знайдіть політику

Network Security: LAN Manager authentication level (Мережева безпека: рівень перевірки автентичності LAN Manager).

В налаштуваннях політики є 6 опцій:

  • Send LM & NTLM responses;
  • Send LM & NTLM responses - use NTLMv2 session security if negotiated;
  • Send NTLM response only;
  • Send NTLMv2 response only;
  • Send NTLMv2 response only. Refuse LM;
  • Send NTLMv2 response only. Refuse LM & NTLM.

Політики використання NTLM аутентифікації розташовані в порядку зростання їх безпеки. За замовчуванням в Windows 7 і вище використовується настройка Send NTLMv2 response only (Відправляти тільки NTLMv2-відповідь). Встановлений таким чином клієнтські комп'ютери використовують NTLMv2 аутентифікацію, але контролери домени приймають LM, NTLM, і NTLMv2 запити.

NTLMv2 може використовуватися, якщо не спрацював протокол Kerberos і при деяких операціях (наприклад, при керуванні локальними обліковими записами і групами на доменних комп'ютерах), або в робочих групах.

Ви можете змінити значення політики на більш безпечну 6 опцію - "Send NTLMv2 response only. Refuse LM & NTLM". При цій політиці контролери домену також будуть відкидати запити LM і NTLM.

Також ви можете відключити NTLMv1 через реєстр. Для цього в гілці

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Lsa потрібно створити параметр DWORD з ім'ям LmCompatibilityLevel і значенням від 0 до 5. Значення 5 відповідає значенню політики "Відправляти тільки NTLMv2-відповідь. Відмовляти LM і NTLM".

У цьому ж розділі GPO переконайтеся, що у вас включена політика Network security: Do mot store Lan Manager hash value on next password change (Мережева безпека: не зберігати хеш-значення LAN Manager при наступній зміні пароля). Ця політика включена за замовчуванням, починаючи з Windows Vista / Windows Server 2008 і забороняє створення LM-хеша.

Не забудьте застосувати цю політику для контролерів домену.

Якщо ви переконалися, що у вас не використовується NTLMv1, ви можете піти далі і спробувати відмовитися від NTLMv2. NTLMv2 хоча і більш захищений протокол аутентифікації, але все одно істотно програє Kerberos в плані безпеки (хоча вразливостей в NTLMv2 набагато менше, ніж в першій версії протоколу, все-таки існують можливості перехоплення і повторного використання даних, і відсутня взаємна аутентифікації).

Головна ризик відключення NTLM - можливе використання в домені застарілих або некоректно налаштованих додатків, які все ще можуть використовувати перевірку автентичності NTLM, і для переходу на Kerberos їх доведеться оновлювати або налаштовувати особливим чином.

Аудит подій NTLM аутентифікації в домені

Перед повним відключенням NTLM в домені і переході на Kerberos бажано переконатися, що в домені не залишилося додатків, які вимагають і використовують NTLM авторизацію.

Для відстеження облікових записів і додаток, які використовують NTLM аутентифікацію, ви можете включити політики аудиту на всіх комп'ютерах за допомогою GPO. У розділі Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options знайдіть і включіть політику Network Security: Restrict NTLM: Audit NTLM authentication in this domain, встановивши її значення на Enable all.

Аналогічним чином включите політику Network Security: Restrict NTLM: Audit Incoming NTLM Traffic, встановивши її значення на Enable auditing for domain accounts.

Після включення даних політик події використання NTLM аутентифікації записуватися в журнал подій Event Viewer в секцію Application and Services Logs-> Microsoft -> Windows -> NTLM.

Можна проаналізувати події на кожному сервері, або зібрати всі події в центральний Event Log.

Вам потрібно зібрати події від Microsoft-Windows-Security-Auditing c Event ID 4624 - An Account was successfully logged on. Зверніть увагу на інформацію в секції "Detailed Authentication Information". Якщо в рядку Authentication Package вказано NTLM, значить для аутентифікації цього користувача використовувався протокол NTLM.

Тепер зверніть увагу на значення Package Name (NTLM only). Тут має бути зазначено який протокол (LM, NTLMv1 або NTLMv2) використовувався для аутентифікації. Таким чином вам потрібно ідентифікувати всі сервера / додатки, які використовують застарілий протокол.

Наприклад, для пошуку всіх подій аутентифікації по NTLMv1 по всім контролерам домену можна використовувати такий PowerShell скрипт:

$ ADDCs = Get-ADDomainController -filter * -Server winitpro.ru
$ Now = Get-Date
$ Yesterday = $ Now.AddDays (-1)
$ NewOutputFile = "c: \ ps \ Events \ $ ($ Yesterday.ToString ( 'yyyyMMdd')) _ 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 "* 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 авторизація в IIS, використання Kerberos авторизація в браузерах). З особистого досвіду: навіть дійсно великі комерційні продукти іноді ще не перейшли з використання NTLM на Kerberos, деякі продукти вимагають поновлення або змін конфігурації. Все зводиться до визначення того, які програми використовують перевірку справжності NTLM, і тепер у вас є спосіб для з'ясування цього софта і пристроїв.

Для авторизації в Kerberos потрібно використовувати DNS ім'я сервера, а не IP адреса. Якщо ви вказуєте IP адреса при підключенні до ресурси, використовується NTLM аутентифікація.

Ті додатків, які не можна перемкнути на використання NTLM можна додати в виключення, дозволивши їм використовувати NTLM аутентифікацію, навіть якщо вона відключена на рівні домену. Для цього використовується політика Network security: Restrict NTLM: Add server exceptions for NTLM authentication in this domain. У список винятків потрібно додати імена серверів, щоб ідентифікувати себе на яких можна використовувати NTLM (звичайно, в ідеалі цей список виключень повинен бути порожнім). Можна використовувати знак підстановки *.

Повне відключення NTLM в домені Active Directory

Щоб перевірити, як буде працювати аутентифікація в різних додатках в домені без використання NTLM, ви можете додати облікові записи необхідних користувачів в доменну групу

Protected Users (група доступна, починаючи з Windows Server 2012 R2), членам якої можна аутентифицироваться тільки по протоколу Kerberos (не можна використовувати NTLM, Digest Authentication або CredSSP). Так ви можете перевірити коректність Kerberos аутентифікації користувача в різних додатках.

Тепер ви можете повністю відключити NTLM в домені за допомогою групової політики Network Security: Restrict NTLM: NTLM authentication in this domain.

У цій політиці є 5 опцій:

  • Disable: політика відключена (NTLM аутентифікація в домені дозволена);
  • Deny for domain accounts to domain servers: контролери домену забороняють спроби аутентифікації NTLM для всіх серверів під доменними акаунтами, повертається помилка "NTLM заблокований";
  • Deny for domain accounts: контролери домену забороняють спроби NTLM аутентифікації для всіх облікових записів домену, повертається помилка "NTLM заблокований";
  • Deny for domain servers: заборонені запити NTLM аутентифікації для всіх серверів;
  • Deny all: контролери домену блокують всі запити NTLM для всіх серверів і облікових записів.

Для подальшого ешелонування захисту в AD рекомендую познайомитися зі статтями "Захист від вилучення пароля з пам'яті утилітами а-ля mimikatz", "Захист облікових записів адміністраторів", відключення LLMNR і NetBIOS over TCP / IP.