Короткий ответ

NTLM в contoso.example должен быть исключением, не транспортом по умолчанию. Kerberos не взлетает, когда клиент идёт на IP, нет SPN, время уехало, или приложение умеет только NTLM. Сначала аудит: 4624 (пакет NTLM) и 4776 на DC, политика Restrict NTLM в режиме Audit. Потом точечный Deny с allow-list серверов. Не ставьте «Network security: Restrict NTLM = Deny all» в пятницу на весь домен. Не отключайте firewall и Defender, чтобы «NTLM прошёл».

Связанные риски: NTLM кормит pass-the-hash. RDP в интернет усугубляет brute-force NTLM — закройте 3389.

Симптомы и как отличить

  • В Security на WS-042 или сервере 4624 с Authentication Package: NTLM при доступе к шарам/IIS/WinRM HTTP.
  • На DC01 пачка 4776 (проверка учётных данных NTLM).
  • Приложения с адресом http://10.0.10.10 вместо имени app.contoso.example.
  • После ужесточения Restrict NTLM отвалилась печать, старая CRM, NAS.
ВидноЭто не «лишний NTLM»
4624 Kerberos Type 10 с jumpнормальный RDP
Только локальный 4624 Type 2интерактив, не сеть
SMBv1 сессиисначала SMBv1
Lockout без NTLM в логепароль/Kerberos pre-auth, lockout

Возможные причины

  1. Клиенты ходят на IP или CNAME без SPN.
  2. SPN не зарегистрированы на учётках служб IIS/MSSQL.
  3. Локальные учётки и NAS без Kerberos.
  4. WinRM/HTTP, SQL auth, старые Java/Apache с NTLM.
  5. Доверие с рабочими группами, LDAP simple bind путают с NTLM — проверяйте пакет.
  6. Время/DNS сломаны — Kerberos падает, клиент откатывается на NTLM, если разрешён.

Диагностика

1. Выборка на DC01

Get-WinEvent -ComputerName DC01 -FilterHashtable @{ LogName = 'Security'; Id = 4776 } -MaxEvents 50 |
  Select-Object TimeCreated, Message

Смотрите имя компьютера/учётки, которые проверяются по NTLM. Не выгружайте логи с паролями — их там нет, но есть имена.

2. На прикладном сервере

Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = 4624 } -MaxEvents 100 |
  ForEach-Object {
    $xml = [xml]$_.ToXml()
    [pscustomobject]@{
      Time = $_.TimeCreated
      Target = ($xml.Event.EventData.Data | Where-Object Name -eq TargetUserName).'#text'
      Package = ($xml.Event.EventData.Data | Where-Object Name -eq AuthenticationPackageName).'#text'
      LmPackage = ($xml.Event.EventData.Data | Where-Object Name -eq LmPackageName).'#text'
      LogonType = ($xml.Event.EventData.Data | Where-Object Name -eq LogonType).'#text'
      Ip = ($xml.Event.EventData.Data | Where-Object Name -eq IpAddress).'#text'
    }
  } | Where-Object Package -eq 'NTLM'

Соберите уникальные Ip + Target за неделю.

3. Аудит Restrict NTLM (ещё не Deny)

GPO: Computer Configuration → Windows Settings → Security Settings → Local Policies → Security Options:

  • Network security: Restrict NTLM: Audit NTLM authentication in this domain
  • Network security: Restrict NTLM: Audit Incoming NTLM Traffic
  • Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers = Audit all

События аудита Restrict NTLM пишутся в журнал Microsoft-Windows-NTLM/Operational (смотрите фактические события на пилоте после включения Audit). Политика «Audit» не блокирует.

4. Почему не Kerberos

setspn -Q HTTP/app.contoso.example
setspn -Q HOST/WS-042.contoso.example
w32tm /query /status
Resolve-DnsName app.contoso.example

Нет SPN / дубли SPN / DNS в никуда — Kerberos не начнётся. Сначала чините это, потом режьте NTLM.

Решение

Сценарий A. Можно перевести на Kerberos

  1. Пользователи и приложения — только FQDN app.contoso.example.
  2. Корректные SPN на учётках служб, не на случайном компьютере.
  3. Время с DC, DNS домена, не публичный резолвер.
  4. Повторите выборку 4624: пакет Kerberos.

Для IIS: имя в URL = SPN HTTP/. Для SMB: имя шары = FQDN сервера.

Сценарий B. Легитимный NTLM (NAS, старое ПО)

Зафиксируйте хост в списке исключений после Audit. Restrict NTLM умеет add-list серверов, которым ещё можно. Держите список коротким, с владельцем и датой вывода.

Не оставляйте NTLM ради удобства RDP с улицы.

Сценарий C. Сужение после аудита

Порядок:

  1. Audit all / Audit incoming — недели, не часы.
  2. Исключения для подтверждённых серверов.
  3. Incoming: Deny all account / Deny all, начиная с пилотной OU рабочих станций, не с DC.
  4. Outgoing Deny на клиентах, когда список серверов NTLM пуст.

LmCompatibilityLevel / отказ LM: держите NTLMv2, LM не включайте. Это не то же самое, что Restrict NTLM, но в одном окне Security Options проверьте, что LM не ожил.

Как проверить, что проблема устранена

  • Количество 4776 на DC01 упало относительно базовой недели, остаток совпадает с allow-list.
  • Критичные приложения (почта, файлы, CRM) входят по Kerberos (4624 Authentication Package Kerberos).
  • Пилот Restrict Deny: пользователи WS-042 работают, исключения документированы.
  • Нет всплеска lockout из-за повторов NTLM с кривым сканером.

Сохраните до/после счётчики 4776 в заявке.

Если не помогло

  • После Deny отвалился только один киоск с IP в ярлыке — верните Kerberos-имя, не весь NTLM.
  • WinRM по HTTP 5985 с IP — переведите на HTTPS/имя, статья WinRM.
  • Двойные SPN (setspn -X) — Kerberos случайный, клиент падает на NTLM.
  • Локальная учётка на NAS — Kerberos не появится, это исключение или замена NAS.
  • Не путайте LDAP simple bind (пароль на проводе) с NTLM — разные протоколы, разные журналы.

Профилактика

  • Запрет в регламенте: новые системы только Kerberos/gMSA, NTLM — исключение с тикетом.
  • Мониторинг 4776 выше порога.
  • Шаблоны ярлыков и GPO drive maps — только FQDN.
  • Парольная политика не заменяет отказ от NTLM, но слабые пароли на фоне NTLM хуже: парольная политика.

FAQ

NTLM полностью запретить в 2026?

В чистом парке Windows 11 + Server 2022/2025 — часто да, после аудита. В реальности остаётся хвост NAS/МФУ. Цель — измеримый минимум, не лозунг.

LMCompatibilityLevel 5 достаточно?

Это отрезает LM/NTLMv1 в типичной схеме, но не убирает NTLMv2. Restrict NTLM — про сам факт NTLM.

Event 8004 в контексте NTLM

В журналах NTLM/Netlogon встречаются коды отказа при Restrict. Смотрите текст события и пару клиент–сервер, не гадайте. Если код на вашей сборке другой — ориентируйтесь на Operational NTLM и 4624.

Нужен ли NTLM для RDP?

RDP может идти через Kerberos при FQDN и NLA. IP в mstsc → NTLM. Пользователей учите на имя WS-042.contoso.example внутри VPN.

Отключение NTLM сломает локального Administrator по сети?

Сетевой вход локальным админом и так нежелателен. Для аварий — консоль. Это плюс к уникальным паролям.

Можно ли резать NTLM только на DC?

Часть проверок 4776 живёт на DC. Restrict Incoming на member-серверах убирает приём NTLM приложениями. Нужны оба контура по карте, не одна галка.