Подпись SMB и привязка канала LDAP — как на практике закрыть «вторую половину» защиты от NTLM
· Обновлено: · Го Комура · NTLM, Kerberos, Windows, Active Directory, Безопасность, Информационные системы, SMB, LDAP, PowerShell
«Мы уже начали аудит NTLM и исправляем подключения, где IP-адрес прописан напрямую. Как же подготовиться к атакам ретрансляции за те месяцы, пока мы убираем все зависимости?»
Защитой на этот период служат подпись SMB, а также подпись LDAP и привязка канала LDAP. Это не настройки, которые останавливают сам NTLM, а настройки, которые блокируют на каждом узле назначения атаки, перенаправляющие аутентификацию в другое подключение. Выполняйте их параллельно со снижением зависимости от NTLM и рассматривайте как меры усиления, которые остаются и после отказа от NTLM.12
Порядок действий общий для обоих случаев: провести аудит → исправить подключающиеся приложения и устройства → применить принудительно. Правда, у SMB и LDAP различаются и проверяемые настройки, и события, которые нужно читать. В этой статье мы сначала разделим их роли, а затем опишем для каждого процедуру проверки, исправления и развёртывания.
Это третья статья серии об NTLM. Процедура аудита NTLM описана в статье «Остановит ли отказ от NTLM работу бизнес-приложений?», а устройство протоколов аутентификации — в статье «NTLM и Kerberos на схемах».
1. Сначала вывод: разделяем три защиты по узлу назначения
| Защита | Какие подключения защищает и в чём её роль | Что проверить перед принудительным применением |
|---|---|---|
| Подпись SMB | Обнаруживает изменение и подмену сообщений SMB, например при общем доступе к файлам | Поддерживают ли подпись узел назначения и источник, и не используется ли гостевой доступ |
| Подпись LDAP | Отклоняет SASL-привязки, не требующие подписи, и простые привязки по незашифрованным подключениям | Приложения и устройства, выполняющие подключения без подписи |
| Привязка канала LDAP | Связывает аутентификацию Windows (SASL-привязку) поверх LDAPS с этим TLS-каналом | Умеет ли клиент работать с токеном привязки канала (CBT) |
Подпись LDAP — это проверка целостности, LDAPS — TLS-шифрование всего подключения, а привязка канала — связь между аутентификацией и TLS-каналом. «Перешли на LDAPS» и «проверяем CBT» — не одно и то же. Кроме того, у простой привязки нет CBT, и она выпадает из проверки привязки канала. Подробно это разобрано в главах 5 и 6.34
Для SMB в выпусках Windows 11 24H2 Enterprise, Pro и Education подпись требуется по умолчанию и при отправке, и при приёме, а в Windows Server 2025 — по умолчанию на стороне отправки. Home в область этого изменения не входит, поэтому проверяйте не только версию ОС, но и выпуск.5
Для LDAP, напротив, серия обновлений KB4520412, на которую ссылается эта статья, не меняет политику по умолчанию для подписи и привязки канала. Нужно различать установку обновления и настройку принудительного применения. Не превращайте описание из этого обновления в значение по умолчанию для любой ОС и любых условий внедрения — проверяйте конфигурацию той среды, которая перед вами.4
| Что вы хотите узнать или с чем столкнулись | Где читать |
|---|---|
| Хочу понять, как снижение зависимости от NTLM связано с обязательной подписью | Глава 2: почему подпись работает против атак ретрансляции |
| Хочу проверить влияние на SMB до обновления ОС | Глава 3: значения по умолчанию и устройство подписи, Глава 4: от аудита до развёртывания |
| NAS или МФУ не подключается к общей папке | Раздел 4.3: ошибки подписи и блокировка гостевого доступа |
| Хочу сделать подпись обязательной, не ломая интеграции по LDAP | Глава 5: виды привязок, события и порядок принудительного применения |
| Хочу подготовиться к ретрансляции аутентификации поверх LDAPS | Глава 6: что охватывает CBT и как это настроить |
| Хочу починить устройства и .NET-приложения, найденные аудитом | Глава 7: таблица решений по исправлениям и примеры кода |
На схеме сплошная линия обозначает отношение, которое выполняется всегда, а пунктирная — условное отношение (условия указаны в пояснении к каждому отношению на странице сведений). Полный список отношений (всего 28, с доказательствами и степенью уверенности) и определения основных понятий собраны на странице сведений карты знаний (на японском). Данные: JSON-LD / Turtle
2. Зачем нужна подпись: защита параллельно со снижением зависимости от NTLM
2.1. Аутентификацию перенаправить можно, а правильную подпись создать нельзя
Коренной недостаток NTLM — отсутствие взаимной аутентификации. Клиент не может проверить подлинность сервера, поэтому злоумышленник может выдать себя за настоящий сервер, заставить клиента пройти аутентификацию и перенаправить этот ответ аутентификации настоящему серверу. Это и есть атака ретрансляции. Microsoft также описывает уязвимость аутентификации NTLM и NTLMv2 к SMB-ретрансляции и атакам «человек посередине».2
Если полностью отказаться от NTLM, такая ретрансляция NTLM становится невозможной. Однако инвентаризация и исправление зависимостей, о которых говорится в первой статье, занимают месяцы. Именно подпись защищает узлы назначения в это время.
flowchart LR
CL["Клиент"]
AT["Злоумышленник<br/>(поддельный сервер)"]
SV["Настоящий сервер"]
CL -->|"1. Ответ аутентификации"| AT
AT -->|"2. Перенаправляет как есть"| SV
SV -.->|"3. Если подпись обязательна:<br/>у злоумышленника нет сеансового ключа,<br/>и правильную подпись он создать не может, поэтому попытка не удаётся"| AT
Рис. 1: Злоумышленник, который лишь перенаправил ответ аутентификации, не может создать правильную подпись с помощью сеансового ключа
В результате аутентификации сеансовый ключ, используемый для подписи, есть у клиента и у настоящего сервера. Злоумышленник, лишь перенаправивший ответ аутентификации, этого ключа не имеет и не может подделать последующие сообщения в подключении, где подпись обязательна. Распределение ролей получается таким: для ретрансляции в SMB — подпись SMB, для ретрансляции в LDAP/LDAPS контроллера домена — подпись LDAP и привязка канала.
2.2. Даже сделав подпись обязательной, продолжайте переход на Kerberos
Чтобы усилить эффект подписи, проверьте и способ аутентификации. Сеансовый ключ происходит из пароля, поэтому рекомендуется использовать Kerberos, а не NTLMv2, чтобы начинать с более сильного ключа. Microsoft также указывает на недопустимость подключения к общей папке по IP-адресу или по CNAME.1
Причина в том, что подключение по IP-адресу или по псевдониму, для которого не зарегистрирован соответствующий SPN, приводит к использованию NTLM, а не Kerberos. Регистрация SPN для псевдонимов, которые вы намерены использовать и дальше, разобрана в первой статье.
Снижение зависимости от NTLM и обязательная подпись — меры, которые выполняются одновременно. И обнаружение изменений с помощью подписи, и привязка канала действуют и для сеансов, аутентифицированных по Kerberos, поэтому это не настройки, которые снимают после отказа от NTLM.1
3. Подпись SMB: проверяем устройство и значения по умолчанию
3.1. Разделяем «поддерживает» и «требует»
Подпись SMB добавляет подпись к каждому сообщению, используя сеансовый ключ и набор шифров. Подпись в заголовке SMB содержит хэш всего сообщения, а также идентификаторы отправителя и получателя, поэтому при изменении по пути она перестаёт совпадать. Это и есть обнаружение изменений, и именно оно защищает от подмены и ретрансляции.1
Ось, по которой нужно смотреть на настройки, — не просто «включено или отключено», а требуется ли подпись. Начиная с SMB 2.x параметр EnableSecuritySignature игнорируется, и значение имеет только RequireSecuritySignature. Если подпись требует хотя бы одна из сторон — клиент или сервер, — это подключение подписывается. Без подписи подключение остаётся только тогда, когда её не требует ни одна из сторон.1
Подпись действительно требует вычислений, но алгоритм прошёл путь от MD5 в SMB1 к HMAC-SHA-256 в SMB 2.02 и AES-CMAC в SMB 3.0, а в Windows Server 2022 и Windows 11 появилось ускорение на основе AES-128-GMAC. Не отказывайтесь от неё из-за старого впечатления, что подпись медленная: измерьте на пилотном компьютере и решайте по результату.1
3.2. Проверяем ОС, выпуск и направления отправки и приёма
Сначала посмотрите выпуск и версию ОС в разделе «Параметры > Система > О системе». В таблице ниже «отправка» — это сторона, где компьютер подключается как клиент SMB, а «приём» — сторона, где он принимает подключения как сервер SMB. Найдите строку, к которой относятся ваши компьютеры и серверы.
| ОС / выпуск | Отправка (клиент) | Приём (сервер) |
|---|---|---|
| Windows 11 24H2 Enterprise / Pro / Education | Требуется | Требуется |
| Windows Server 2025 | Требуется | Не требуется |
| Windows 11 24H2 Home | Не требуется | Не требуется |
| Более ранние Windows / Windows Server | Не требуется | Не требуется |
| Контроллер домена (так было и раньше) | — | Требуется (для подключений к SYSVOL и NETLOGON) |
Первые три строки — значения по умолчанию, которые Microsoft указывает явно.5 Последняя строка, контроллер домена, — отдельное давнее условие: он требует подпись SMB от всех, кто подключается к SYSVOL и NETLOGON. Распространение групповых политик и сценариев входа давно работает в расчёте на подпись.1
Даже в Windows 11 24H2 выпуск Home не требует подписи ни при отправке, ни при приёме и в область этого изменения не входит. Объяснение «достаточно обновить машину с Home, и подпись станет обязательной» к нему не относится. Таблица не гарантирует будущих изменений и отдельных настроек, поэтому при сбое подключения проверьте выпуск, а затем и фактические значения настроек из раздела 4.1.5
В выпусках Enterprise, Pro и Education обновление до 24H2 делает подпись обязательной по умолчанию для SMB-подключений с этого компьютера. Сама Windows подпись поддерживает, поэтому сначала нужно инвентаризировать сторонние устройства, которые её не поддерживают или отключили. Проверьте старые NAS, настройки, связанные со сканированием в папку на МФУ, Samba на встраиваемом Linux и подобное.
4. Подпись SMB: проводим аудит, исправляем устройства, делаем подпись обязательной
4.1. Проверяем текущее требование подписи и управляющие им политики
# Требование подписи на стороне клиента (отправка)
Get-SmbClientConfiguration | FL RequireSecuritySignature
# Требование подписи на стороне сервера (приём)
Get-SmbServerConfiguration | FL RequireSecuritySignature
True означает, что подпись требуется, False — что не требуется. Проверять нужно сторону отправки и сторону приёма отдельно.5
В групповой политике эти параметры находятся в разделе Конфигурация компьютера\Конфигурация Windows\Параметры безопасности\Локальные политики\Параметры безопасности. Используйте следующие два параметра по их назначению.1
| Роль | Политика |
|---|---|
| Клиент (отправка) | Клиент сети Microsoft: цифровая подпись связи (всегда) |
| Сервер (приём) | Сервер сети Microsoft: цифровая подпись связи (всегда) |
Слово «всегда» (always) в названии политики и означает «обязательно». Если вы ещё не знаете, какие устройства не поддерживают подпись, не применяйте её принудительно ко всем сразу — переходите к аудиту ниже.
4.2. Находим собеседников без поддержки подписи с помощью аудита
Начиная с Windows 11 24H2 доступен аудит, который обнаруживает сторонние клиенты и серверы, не поддерживающие подпись или шифрование. Следующие команды включают его для подписи.1
# Сторона сервера: обнаружить клиентов, не поддерживающих подпись
Set-SmbServerConfiguration -AuditClientDoesNotSupportSigning $true
# Сторона клиента: обнаружить серверы, не поддерживающих подпись
Set-SmbClientConfiguration -AuditServerDoesNotSupportSigning $true
Сторона сервера изучает подключающиеся к ней клиенты, сторона клиента — серверы, к которым она подключается. В групповой политике им соответствуют параметры вроде «Audit client does not support signing» в разделах Lanman Server и Lanman Workstation по пути Конфигурация компьютера\Административные шаблоны\Сеть.1
У той же функции аудита есть -AuditClientDoesNotSupportEncryption / -AuditServerDoesNotSupportEncryption для поиска собеседников, не поддерживающих шифрование. Однако это подготовка к тому, чтобы в будущем сделать обязательным шифрование SMB. Есть устройства, которые поддерживают подпись, но не поддерживают шифрование, поэтому не примешивайте результаты аудита шифрования к решению о готовности обязательной подписи.1
Журналы и идентификаторы событий, которые используют аудит подписи и шифрования, приведены ниже. Читайте и текст каждого события, чтобы убедиться, что это именно проблема подписи, которую мы здесь разбираем.1
| Журнал | Идентификатор события |
|---|---|
| Applications and Services Logs\Microsoft\Windows\SMBClient\Audit | 31998, 31999 |
| Applications and Services Logs\Microsoft\Windows\SMBServer\Audit | 3021, 3022 |
В «Просмотре событий» это проверяется так.
- Откройте
eventvwr.mscи перейдите в Журналы приложений и служб > Microsoft > Windows > SMBClient > Audit. Для стороны сервера откройте SMBServer > Audit на том же уровне. - В правой панели выберите «Фильтр текущего журнала» и укажите идентификаторы событий
31998,31999, а для стороны сервера —3021,3022. - Откройте события, посмотрите тип проблемы и сведения о собеседнике и составьте список устройств, которые подписывать не могут.
Чтобы собрать их массово с помощью PowerShell, используйте следующий пример.
# Сторона клиента: события аудита, обнаружившие серверы без поддержки подписи
Get-WinEvent -FilterHashtable @{ LogName='Microsoft-Windows-SMBClient/Audit'; Id=31998,31999 } -ErrorAction SilentlyContinue |
Select-Object TimeCreated, Id, Message
# Сторона сервера: события аудита, обнаружившие клиентов без поддержки подписи
Get-WinEvent -FilterHashtable @{ LogName='Microsoft-Windows-SMBServer/Audit'; Id=3021,3022 } -ErrorAction SilentlyContinue |
Select-Object TimeCreated, Id, Message
Этот пример получает идентификаторы аудита подписи и шифрования вместе. Не считайте все показанные события случаями отсутствия поддержки подписи; разделяйте подпись и шифрование по Message.
Если подходящих событий нет — например, сразу после включения аудита, — Get-WinEvent вернёт ошибку «события не найдены». -ErrorAction SilentlyContinue в примере нужен, чтобы её подавить. О том, как писать фильтры, смотрите также «Разбираем журнал событий на практике с Get-WinEvent».
Период аудита, как и при аудите NTLM, нужно выдержать до полного оборота бизнес-цикла. Журналов сразу после включения недостаточно, чтобы считать, что проверены все узлы назначения.
4.3. Исправляем ошибки подписи и блокировку гостевого доступа по отдельности
При подключении из среды, где подпись обязательна, к устройству, которое подписывать не может, возникает следующая ошибка.5
0xc000a000
STATUS_INVALID_SIGNATURE
The cryptographic signature is invalid.
Второй случай — отказ в гостевом доступе. На подключении, где подпись обязательна, гостевой доступ тоже невозможен, поэтому NAS, используемый без аутентификации, выдаёт ошибку такого вида.5
You can't access this shared folder because your organization's security policies
block unauthenticated guest access.
Первое средство — включить подпись SMB на самом устройстве и подключаться с учётными данными, а не как гость. При необходимости рассмотрите обновление прошивки или изменение пути подключения.
Обходной путь с Set-SmbClientConfiguration -RequireSecuritySignature $false на клиенте ослабляет только сторону ошибки подписи. Блокировка гостевого доступа управляется ещё и отдельной клиентской настройкой, запрещающей небезопасные гостевые входы, поэтому снятие требования подписи само по себе не устраняет отказ в гостевых подключениях.
Microsoft не рекомендует ни отключать подпись как обходной путь для сторонних устройств, ни пытаться использовать подпись с гостевыми учётными записями.5 Даже если ослабить что-то действительно нужно, не делайте это обычной практикой: ведите это как временное исключение до замены устройства.
4.4. Переходим от пилота к полному развёртыванию
| Этап | Что делать | Как понять, что готово |
|---|---|---|
| 1. Аудит | Включить аудит из раздела 4.2 и собрать события за один полный бизнес-цикл | Есть список собеседников, не поддерживающих подпись |
| 2. Исправление устройств | Включить подпись в настройках SMB у NAS, МФУ и машин с Linux. Заменить гостевой режим на учётные данные | Новые события аудита подписи не появляются |
| 3. Пилот | Применить RequireSecuritySignature $true раньше всех на нескольких машинах, например на компьютерах отдела ИС |
Один бизнес-цикл прошёл без проблем |
| 4. Развёртывание | Распространить через групповую политику на всех. Устройства, которые не удаётся исправить, вести в реестре как временные исключения | Исключений достаточно мало, чтобы ими управлять |
Чем больше выпусков попадает под 24H2 и более поздние версии, тем чаще подпись становится обязательной на стороне клиента по умолчанию. Фактический срок задаёт ваш план обновления ОС, поэтому включите этот аудит и исправление устройств в подготовительные работы к переходу на Windows 11. О стратегии перехода с Windows 10 рассказано в статье «Варианты после окончания поддержки Windows 10».
5. Подпись LDAP: сначала проверяем виды привязок, потом применяем принудительно
После SMB идут LDAP-подключения к контроллерам домена и AD LDS. Трафик LDAP без подписи уязвим к атакам воспроизведения и атакам «человек посередине», и сервер рискует принимать решения на основе перехваченных и изменённых запросов.3
Сначала разделим виды «привязки» (bind), используемой для аутентификации.
| Термин | Значение |
|---|---|
| SASL-привязка | Привязка, использующая SASL (Simple Authentication and Security Layer) — механизм, который переносит аутентификацию Windows (Negotiate, Kerberos, NTLM, Digest) поверх LDAP. Может требовать подписи (проверки целостности) |
| Простая привязка | Привязка, которая помещает идентификатор пользователя и пароль прямо в запрос LDAP. Механизма подписи у неё нет, поэтому по незашифрованному подключению пароль передаётся как есть |
Обязательная подпись LDAP отклоняет SASL-привязки, не требующие подписи, и простые привязки по незашифрованным (не SSL/TLS) подключениям. Подпись — это проверка целостности, отдельная от шифрования. У простой привязки механизма подписи нет, поэтому для всего, что должно продолжать использовать простые привязки, решение — перевести это на LDAPS.3
5.1. События читаем раздельно: «количество» и «источник»
И подпись LDAP, и привязка канала из следующей главы используют журнал Directory Service контроллера домена. В «Просмотре событий» откройте Журналы приложений и служб > Directory Service.
| Событие | Что показывает | К чему относится | Когда записывается |
|---|---|---|---|
| 2886 | Напоминание о том, что требование подписи не настроено | Подпись LDAP | Записывается по умолчанию (при запуске службы каталогов)3 |
| 2887 | Сводка за последние 24 часа: количество SASL-привязок без подписи и простых привязок по открытому тексту | Подпись LDAP | Записывается по умолчанию (каждые 24 часа)3 |
| 2888 | Сводка количества проблемных привязок, отклонённых за последние 24 часа | Подпись LDAP | Каждые 24 часа после настройки отклонения3 |
| 2889 | IP-адрес источника проблемной привязки и идентификатор, использованный для аутентификации | Подпись LDAP | По умолчанию не записывается. Задайте диагностическому параметру «16 LDAP Interface Events» значение 23 |
| 3039 | Клиент, у которого проверка CBT не прошла | Привязка канала | Обновления от 10 марта 2020 года4 |
| 3040 | Сводка количества незащищённых привязок LDAPS за последние 24 часа | Привязка канала | Обновления от 10 марта 2020 года4 |
| 3041 | Напоминание с рекомендацией принудительного применения | Привязка канала | Обновления от 10 марта 2020 года4 |
| 3074 / 3075 | Аудит клиентов, которые не могут поддерживать CBT | Привязка канала | Добавлены обновлениями с августа по ноябрь 2023 года. В Windows Server 2019 доступны с января 2024 года без ручного включения4 |
Различие, которое нужно проводить, — между сводными событиями, показывающими, сколько ещё осталось (2887 и 3040), и отдельными событиями, по которым определяется источник (2889, 3039, 3074 и 3075). Пока проблемные подключения остаются, их исправляют, а не переходят к принудительному применению.
Фраза «доступны без ручного включения» в таблице описывает, что обновление делает функцию аудита пригодной к использованию. Не читайте её так, будто события всегда появляются при любой конфигурации: сверяйте ОС, установленные обновления и диагностические параметры с KB4520412. То, что простые привязки выпадают из проверки CBT, тоже разбирается в главе 6.4
5.2. По 2887 смотрим, сколько осталось, по 2889 находим источник
Для подписи LDAP используются 2886, 2887, 2888 и 2889. 2886 — напоминание, побуждающее настроить подпись, 2887 — сводка проблемных привязок за 24 часа, 2888 — сводка после настройки отклонения. Только 2889, по которому узнают источник, по умолчанию отсутствует.3
Сначала проверьте по 2887, остались ли привязки без подписи. Если количество ненулевое, задайте диагностическому параметру «16 LDAP Interface Events» значение 2 (Basic), чтобы событие 2889 записывалось, и выясните IP-адрес источника и идентификатор, использованный для аутентификации.3
2889 — это не сводка, а запись по каждой затронутой привязке. В среде, где остаются высокочастотные подключения, он быстро заполняет журнал Directory Service, поэтому после определения источников верните диагностический параметр на прежний уровень (по умолчанию 0). Если вы намерены записывать его постоянно, сначала обеспечьте пересылку и хранение журналов.
Искать нужно среди аутентификации AD и интеграции с кадровыми системами в бизнес-системах, поиска по адресной книге LDAP на МФУ, аутентификации LDAP на сетевом оборудовании и подобного. Особенно часто устройства настроены на простую привязку по открытому тексту, поэтому проверьте их настройки LDAP. Исправление — переход на LDAPS (порт 636) или на SASL-привязку с подписью. Конкретные примеры собраны в главе 7.
5.3. После исправлений требуем подпись и проверяем поведение при отклонении
Когда источники исправлены, настройте следующее в групповой политике.3
| Что настраиваем | Что задаём |
|---|---|
| Контроллер домена | В «Параметрах безопасности» политики Default Domain Controller Policy задайте для «Контроллер домена: требования к подписыванию сервера LDAP» значение Требовать подпись |
| Клиент | Задайте для «Безопасность сети: требования к подписыванию клиента LDAP» значение Требовать подпись |
Для проверки конфигурации используйте ldp.exe. Подключитесь к порту 389 без TLS и попробуйте простую привязку: если получите следующую ошибку, настройка отклонения действует. Это проверка поведения при отклонении, а не процедура использования привязок по открытому тексту в рабочей среде. Выполняйте её с тестовыми учётными данными.3
Ldap_simple_bind_s() failed: Strong Authentication Required
6. Привязка канала LDAP: проверяем и аутентификацию поверх LDAPS
6.1. TLS-шифрование и привязка аутентификации к каналу — разные вещи
LDAPS шифрует трафик с помощью TLS. Однако одной лишь шифровки недостаточно против ретрансляции, при которой клиента заставляют аутентифицироваться, а затем перенаправляют эту аутентификацию в отдельное TLS-подключение самого злоумышленника. Токен привязки канала (CBT) — это значение, которое связывает аутентификацию с самим этим TLS-каналом и делает обнаруживаемой ретрансляцию в другой канал.4
Он охватывает подключения, выполняющие аутентификацию Windows (SASL-привязку), например NTLM или Kerberos, поверх LDAPS. У простой привязки нет CBT, и она выпадает из этой проверки. Простую привязку поверх LDAPS защищают TLS-шифрование и управление учётными данными; установка значения Always не приведёт к тому, что клиенты с простой привязкой появятся в событиях аудита CBT.
6.2. Сопоставляем значения 0, 1 и 2 с параметрами политики
Управление выполняется через реестр контроллера домена или через соответствующий параметр групповой политики.4
| Настройка | Расположение / значение |
|---|---|
| Реестр | LdapEnforceChannelBinding (REG_DWORD) в HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters |
| Значение параметров | 0 = не проверять / 1 = проверять, если клиент поддерживает / 2 = проверять всегда |
| Групповая политика | «Контроллер домена: требования к токену привязки канала сервера LDAP» (Never / When supported / Always соответствуют 0/1/2 выше) |
When supported и Always — не одно и то же. Отделяйте этап, на котором проверяются поддерживающие клиенты, от этапа, на котором проверка всегда требуется для охваченных подключений, и переходите к Always только после того, как убедитесь в состоянии поддержки.
6.3. Находим источники по 3039, 3040, 3074 и 3075
Если разобрать события привязки канала из сводной таблицы раздела 5.1 подробнее, получится следующее. Обновление от 10 марта 2020 года добавило связанные события, а обновления с 2023 года расширили аудит.4
| Событие | Значение |
|---|---|
| 3039 | Клиент, выполнивший привязку LDAP поверх SSL/TLS, не прошёл проверку токена привязки канала |
| 3040 | Сводка количества незащищённых привязок LDAPS, выполненных за последние 24 часа |
| 3041 | Напоминание с рекомендацией применять проверку привязки канала принудительно |
| 3074 / 3075 | События аудита клиентов, которые не могут поддерживать привязку канала (добавлены обновлениями с августа по ноябрь 2023 года; в Windows Server 2019 доступны с января 2024 года без ручного включения) |
Процедура развёртывания у Microsoft такая же по порядку: следить в журнале Directory Service на каждом контроллере домена за событиями 2889, 3039 и 3074/3075, определять проблемные устройства, уточнять их состояние у поставщика и применять принудительно только после того, как они обработаны.4
Не считайте работу законченной уже потому, что используется LDAPS: смотрите и на способ аутентификации, и на поддержку CBT. Различие, проведённое в разделе 6.1, говорит и о том, что простые привязки, не входящие в область охвата, не нужно искать только по событиям CBT.
6.4. Не заключайте, что установка обновления уже означает принудительное применение
KB4520412 указывает, что обновление от 10 марта 2020 года и серия обновлений, которую рассматривает этот документ, не меняют политику по умолчанию для подписи LDAP и привязки канала.4
Поэтому в среде, где обновление только установлено и ничего не применено принудительно, работа по настройке остаётся за администратором. Не путайте это с изменением значений по умолчанию для SMB в 24H2: отдельно проверяйте, что функция аудита доступна и что защита применяется принудительно. Пока время применения ещё можно выбирать, планируйте и выполняйте исправления на стороне источников.
7. Исправляем бизнес-приложения и устройства по причинам
7.1. Сопоставляем собеседников из событий со способом исправления
| Что обнаружено | Причина | Как исправить |
|---|---|---|
| Сканирование в SMB на МФУ или сканере (ошибка подписи) | Устройство не поддерживает подпись SMB или отключило её | Включите подпись на устройстве. Обновите прошивку. Если это невозможно, переведите путь доставки с SMB на что-то другое (например, отправку по электронной почте) |
| Гостевые подключения к NAS | Работа без аутентификации | Переведите на подключение с учётными данными. Отключите гостевой доступ на стороне общей папки |
| Поиск по адресной книге LDAP на МФУ (2889) | Простая привязка по открытому тексту | Измените настройки LDAP устройства на LDAPS (порт 636) и установите на устройстве сертификат CA |
| Интеграция аутентификации AD в бизнес-системе (2889) | Настроена простая привязка по открытому тексту | Переведите на LDAPS в настройках продукта или на SASL (Negotiate) с подписью. Уточните состояние поддержки у поставщика |
| Собственное .NET-приложение (2889) | В коде AuthType.Basic и порт 389 |
Исправление кода ниже |
| 3039 появляется, хотя используется LDAPS | Клиентская библиотека не поддерживает CBT | Обновите ОС и библиотеку. Приложения, использующие стандартный стек LDAP Windows, часто закрываются обновлением ОС, но библиотеки с собственной реализацией нужно проверять отдельно |
Отсутствие поддержки подписи, гостевой режим, простые привязки по открытому тексту и отсутствие поддержки CBT исправляются в разных местах. Даже если симптом один и тот же — «не подключается», не ослабляйте настройки огульно: выбирайте действие по событию и способу подключения.
7.2. В .NET-приложениях проверяем способ аутентификации и настройки TLS
В собственном .NET-приложении сначала проверьте, не отправляет ли оно простую привязку с AuthType.Basic на порт 389 по открытому тексту. Ниже — плохой пример, который будет отклонён после того, как подпись LDAP станет обязательной. Это не пример для запуска с реальными учётными данными.
// Плохой пример: простая привязка на порт 389 по открытому тексту. Будет отклонена после включения обязательной подписи LDAP
var conn = new LdapConnection("dc01.corp.example.com");
conn.AuthType = AuthType.Basic;
conn.Bind(new NetworkCredential(user, password));
Для исправления, если в доменной среде есть выбор, за основу берут Negotiate вместе с требованием подписи и шифрования. Если простая привязка необходима, используют LDAPS. Два примера ниже — выдержки, противопоставляющие эти варианты. Они не предназначены для выполнения подряд после плохого примера выше.
// Хороший пример 1: требуем Negotiate вместе с подписью и шифрованием (Kerberos выбирается, когда сходятся SPN и разрешение имён)
var conn = new LdapConnection("dc01.corp.example.com");
conn.AuthType = AuthType.Negotiate;
conn.SessionOptions.Signing = true;
conn.SessionOptions.Sealing = true;
conn.Bind(); // Аутентификация под учётной записью, от имени которой выполняется процесс
// Хороший пример 2: если используете простую привязку, всегда переходите на LDAPS
var id = new LdapDirectoryIdentifier("dc01.corp.example.com", 636);
var conn2 = new LdapConnection(id);
conn2.SessionOptions.SecureSocketLayer = true;
conn2.AuthType = AuthType.Basic;
conn2.Bind(new NetworkCredential(user, password));
Negotiate в хорошем примере 1 предпочитает Kerberos, но не заставляет его использовать. При таких условиях, как подключение по IP-адресу или незарегистрированный либо дублирующийся SPN, он откатывается к NTLM. Даже в этом случае требование подписи и шифрования, заданное в коде, продолжает действовать.
Чтобы убедиться, что аутентификация проходит по Kerberos, проверьте с помощью klist, что билет для нужной службы получен. Если в первой статье исходящий аудит NTLM настроен на «Аудит всех», отсутствие события 8001 тоже служит косвенным подтверждением. Однако судить по «нет 8001», пока политика аудита отключена, бессмысленно.
Простая привязка в хорошем примере 2 шифруется TLS, но не подпадает под проверку CBT. Важно не рассматривать её как ту же защиту, что и хороший пример 1. Если используется DirectoryEntry (ADSI), явно задайте AuthenticationTypes.Secure | AuthenticationTypes.Signing | AuthenticationTypes.Sealing.
Принцип записывать узел назначения как FQDN, а не как IP-адрес, относится и к SASL-привязкам с Kerberos. Исправляйте вместе с ним разрешение имён и SPN, а не заканчивайте на смене только способа аутентификации в коде.
8. Итог: аудит, исправление и принудительное применение доводим до конца на каждом пути
Подпись SMB, подпись LDAP и привязка канала LDAP — не замена настройкам, которые останавливают NTLM. Это защиты, предотвращающие ретрансляцию, пока вы снижаете зависимость от NTLM, и постоянные меры усиления, которые остаются и после перехода на Kerberos.12
Для SMB проверьте ОС, выпуск и значения по умолчанию для отправки и приёма, а сначала исправьте устройства без поддержки подписи и схемы с гостевым доступом. План обновления до затронутых выпусков Windows 11 24H2 становится сроком для этой подготовки. Для LDAP исследуйте привязки без подписи по 2887 и 2889, а проблемы, связанные с CBT, — по 3039, 3040, 3074 и 3075, и применяйте принудительно только после исправления источников.534
Установка обновления, включение функции аудита и принудительное применение защиты — разные этапы. В частности, не делайте вывода, что принудительное применение выполнено, только потому, что установлены обновления LDAP из KB4520412. Проверяйте это с учётом того, что простые привязки выпадают из проверки CBT.4
В собственных приложениях уже одно устранение простых привязок по открытому тексту и жёстко прописанных IP-адресов даёт большое улучшение. Судите о финише не по «мы изменили настройку», а по тому, завершили ли вы полный бизнес-цикл аудита и исправлений, подтвердили поведение на пилоте и после этого перешли к принудительному применению.
Похожие статьи
- Остановит ли отказ от NTLM работу бизнес-приложений? — как собрать журналы аудита и в каком порядке убирать зависимости
- NTLM и Kerberos на схемах — почему аутентификация «падает» на NTLM
- Подводные камни сетевых дисков и путей UNC — работа с файловым сервером (общими папками) из бизнес-приложения
- Разбираем журнал событий на практике с Get-WinEvent — скорость фильтрации определяет, сколько займёт расследование
- Реальные варианты после окончания поддержки Windows 10 — таблица решений по ESU, LTSC и замене
- Минимальный чек-лист безопасности для разработки приложений Windows
Смежные области консультаций
Komura Software LLC занимается доработкой бизнес-приложений, связанной с введением обязательной подписи SMB и LDAP, а также расследованием сбоев подключения в области аутентификации и общего доступа к файлам.
- Разработка приложений для Windows
- Исследование ошибок и анализ первопричин
- Повторное использование и перенос существующих активов
- Контакты
Справочные материалы
-
Microsoft Learn, Overview of Server Message Block signing in Windows. О том, что подпись SMB добавляет подпись к каждому сообщению с использованием сеансового ключа и набора шифров и что подпись содержит хэш всего сообщения в заголовке SMB вместе с идентификаторами отправителя и получателя, благодаря чему служит защитой от атак ретрансляции и подмены; о том, что SMB1 подписывает с помощью MD5, SMB 2.02 — HMAC-SHA-256, SMB 3.0 — AES-CMAC, а в Windows Server 2022 и Windows 11 появилось ускорение подписи на основе AES-128-GMAC; о том, что начиная с SMB 2.x параметр EnableSecuritySignature игнорируется и значение имеет только RequireSecuritySignature, что подпись ставится, если её требует хотя бы одна из сторон — клиент или сервер, и не ставится только тогда, когда её не требует ни одна из сторон; о том, что контроллер домена по умолчанию требует подпись SMB от всех, кто к нему подключается (SYSVOL и NETLOGON); о том, что сеансовый ключ происходит из пароля, поэтому рекомендуются длинные сложные пароли и Kerberos, а подключение по IP-адресу или CNAME приводит к использованию NTLM вместо Kerberos; о том, что политика называется «Клиент/сервер сети Microsoft: цифровая подпись связи (всегда)», а значения реестра — RequireSecuritySignature в LanManWorkstation/LanManServer; и о том, что начиная с Windows 11 версии 24H2 добавлен аудит (Set-SmbServerConfiguration -AuditClientDoesNotSupportSigning и подобные), обнаруживающий сторонние клиенты и серверы, не поддерживающие подпись или шифрование, и записывающий их в SMBClient/Audit под идентификаторами событий 31998 и 31999, а в SMBServer/Audit — под идентификаторами 3021 и 3022. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13
-
Microsoft Learn, Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers. О том, что аутентификация NTLM и NTLMv2 уязвима к различным вредоносным атакам, включая SMB-ретрансляцию, атаки «человек посередине» и атаки перебором. ↩ ↩2 ↩3
-
Microsoft Learn, How to enable LDAP signing in Windows Server. О том, что настройка сервера каталогов на отклонение SASL-привязок LDAP (Negotiate, Kerberos, NTLM, Digest), не требующих подписи (проверки целостности), и простых привязок LDAP по незашифрованным (не SSL/TLS) подключениям значительно повышает безопасность; что трафик без подписи уязвим к атакам воспроизведения и атакам «человек посередине», из-за чего LDAP-сервер может быть вынужден действовать по подделанному запросу; что такое изменение конфигурации ломает клиентов, зависящих от этих привязок, поэтому проверку нужно проводить по событию 2887 (сводка за 24 часа), а событие 2889 (с IP-адресом клиента и идентификатором, использованным для аутентификации) записывается, когда диагностическому параметру «16 LDAP Interface Events» задано значение 2 (Basic); что событие 2888 сводится каждые 24 часа после настройки отклонения; что событие 2886 записывается при запуске службы каталогов, побуждая настроить параметр; что для принудительного применения нужно задать «Контроллер домена: требования к подписыванию сервера LDAP» в Default Domain Controller Policy значение «Требовать подпись», а на стороне клиента соответствующим образом — «Безопасность сети: требования к подписыванию клиента LDAP»; и о том, что при подключении к порту 389 с помощью ldp.exe и попытке простой привязки сообщение «Ldap_simple_bind_s() failed: Strong Authentication Required» означает, что настройка действует. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12
-
Microsoft Support, 2020, 2023, and 2024 LDAP channel binding and LDAP signing requirements for Windows (KB4520412). О том, что привязка канала LDAP и подпись LDAP — средства повышения безопасности обмена между LDAP-клиентами и контроллерами домена Active Directory; о значении значения реестра LdapEnforceChannelBinding (HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters, DWORD) — 0 = не проверять, 1 = проверять, если клиент поддерживает, 2 = проверять всегда — и о соответствующем параметре групповой политики «Контроллер домена: требования к токену привязки канала сервера LDAP»; о том, что обновление от 10 марта 2020 года добавило новые события, связанные с привязкой канала (3039 = клиент, у которого не прошла проверка токена привязки канала при привязке LDAP поверх SSL/TLS, 3040 = количество незащищённых привязок LDAPS за последние 24 часа, 3041 = рекомендация применить принудительно); о том, что обновления с августа по ноябрь 2023 года добавили события аудита 3074 и 3075 для клиентов, которые не могут поддерживать привязку канала, и что в Windows Server 2019 они стали доступны с января 2024 года без ручного включения; о том, что обновление от 10 марта 2020 года и ближайшие обновления не меняют политику по умолчанию для подписи LDAP и привязки канала LDAP; и о процедуре развёртывания: следить за событиями 2889, 3039, 3074 и 3075 на всех контроллерах домена, определять проблемные устройства, уточнять их состояние у поставщиков и применять принудительно только после этого. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14
-
Microsoft Learn, Control SMB signing behavior. О том, что Windows 11 версии 24H2 в выпусках Enterprise, Pro и Education требует подпись SMB и при отправке, и при приёме; что Windows Server 2025 требует подпись SMB только при отправке; что Windows 11 версии 24H2 Home не требует подписи ни при отправке, ни при приёме; что при подключении к стороннему SMB-серверу, не разрешающему подпись, возникает ошибка 0xc000a000 (STATUS_INVALID_SIGNATURE, «The cryptographic signature is invalid»); что при подключении к сторонним устройствам, использующим гостевые учётные записи, возникает ошибка вида «You can’t access this shared folder because your organization’s security policies block unauthenticated guest access»; что обязательная подпись сопровождается и отключением гостевого доступа; что Microsoft не рекомендует в качестве обходного пути для сторонних серверов ни отключать подпись SMB, ни пытаться подписывать с гостевыми учётными записями; и о настройке через параметр -RequireSecuritySignature команд Set-SmbClientConfiguration / Set-SmbServerConfiguration и проверке через Get-SmbClientConfiguration / Get-SmbServerConfiguration. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
Похожие статьи
Недавние статьи с теми же тегами помогут подробнее изучить близкие темы.
Остановит ли отказ от NTLM ваши бизнес-приложения? — Как собирать журналы аудита и в каком порядке устранять зависимости
Разбираем, как найти места, где Windows и бизнес-приложения зависят от NTLM: политики аудита, события 8001–8004 журнала NTLM/Operational,...
NTLM и Kerberos на схемах — почему аутентификация «падает» на NTLM
Схемы сравнивают NTLM и Kerberos: схему «вызов — ответ», TGT и билеты служб, откат Negotiate на NTLM при отсутствии SPN, атаки ретрансляц...
Windows LAPS на практике — больше не используем один локальный пароль администратора на всех ПК
Один локальный пароль администратора на всех ПК — благодатная почва для Pass-the-Hash: компрометация одной машины открывает остальные. Ра...
Почему общая папка Windows то открывается, то нет — разбор Kerberos, NTLM и учётных данных
Диагностируйте прерывистый доступ к общей папке Windows по симптомам и журналам. Проверяйте имена и IP, сбои только в приложении, пустые ...
Политика аудита безопасности Windows и расследование журнала событий на практике — как стать ИТ-службой, которая умеет читать 4625
Практическое руководство, чтобы ответить на просьбу «посмотрите журналы неудачных входов». Разбирает связь базовой и расширенной политики...
Связанные темы
Эти страницы показывают тему статьи в более широком контексте услуг и решений.
Технические темы Windows
Раздел о разработке Windows, расследовании сбоев и использовании существующих активов.
Услуги по этой теме
Статья напрямую связана со следующими услугами.
Разработка приложений для Windows
Бизнес-приложения, интеграция оборудования и средства связи — от требований до разработки.
Частые вопросы
Вопросы, которые часто возникают при консультациях по теме статьи.
- Если сделать подпись SMB обязательной, файловый сервер не станет медленнее?
- Вычислительные затраты на подпись не нулевые, но алгоритм улучшается с каждым поколением. Вместо MD5 в SMB1 в SMB 2.02 используется HMAC-SHA-256, а в SMB 3.0 — AES-CMAC, и в Windows Server 2022 и Windows 11 появилось ускорение подписи на основе AES-128-GMAC. Кроме того, контроллеры домена уже давно требуют подпись SMB от всех, кто подключается к SYSVOL и NETLOGON, поэтому распространение групповых политик всегда работало в расчёте на подпись. Прежде чем отказываться от неё из соображений производительности, рекомендуем сначала сделать подпись обязательной на пилотном компьютере и измерить результат. Заметная разница возникает лишь в отдельных сценариях, например при непрерывной передаче больших файлов.
- После перехода на Windows 11 24H2 перестал подключаться NAS. Причина в подписи SMB?
- Как правило, да. В выпусках Windows 11 версии 24H2 Enterprise, Pro и Education подпись SMB требуется по умолчанию и при отправке, и при приёме, поэтому подключение к стороннему NAS, который подпись не поддерживает (или отключил её), завершается ошибкой 0xc000a000 (STATUS_INVALID_SIGNATURE). Поскольку обязательная подпись сопровождается и отключением гостевого доступа, NAS, настроенный на работу без аутентификации, выдаёт ошибку «Не удаётся получить доступ к этой общей папке, так как политики безопасности организации блокируют неаутентифицированный гостевой доступ». Первое средство — включить подпись SMB на стороне NAS и подключаться не как гость, а с учётными данными. Есть и обходной путь на стороне клиента, отключающий требование подписи, но он снимает только часть, связанную с ошибкой подписи. Блокировка гостевых подключений управляется отдельной клиентской настройкой — запретом небезопасных гостевых входов, — а не подписью, поэтому без её ослабления подключения продолжат падать. Microsoft не рекомендует ни отключать подпись, ни работать с гостевыми учётными записями.
- Чем отличается подпись LDAP от LDAPS (LDAP over SSL/TLS)?
- Это разные вещи. Подпись LDAP требует проверки целостности (подписи) для SASL-привязок (Negotiate, Kerberos, NTLM, Digest), выполняемых поверх LDAP-подключения на порту 389, и не шифрует трафик. LDAPS шифрует всё подключение по SSL/TLS. А привязка канала LDAP — это ещё один уровень поверх LDAPS: связывая аутентификацию с TLS-каналом, она предотвращает атаки, в которых на другое TLS-подключение переносится только аутентификация. Чтобы защитить контроллер домена, рассматривайте это как три меры вместе: отказ от простых привязок по открытому тексту, требование подписи для SASL-привязок и требование проверки токена привязки канала для аутентификации Windows (SASL-привязок) поверх LDAPS. Учтите, что у простой привязки нет CBT, и она выпадает из проверки привязки канала; простую привязку поверх LDAPS защищает само TLS-шифрование.
- В каком порядке всё это ужесточать?
- Порядок тот же, что и при ограничении NTLM: аудит → исправление → принудительное применение. Начните с SMB: включите доступный начиная с Windows 11 24H2 аудит, который выявляет собеседников, не поддерживающих подпись, и с его помощью составьте перечень устройств, которые подписывать не могут. Для LDAP проверьте в журнале Directory Service контроллера домена событие 2887 (сводка привязок без подписи за 24 часа); если количество ненулевое, задайте диагностическому параметру «16 LDAP Interface Events» значение 2 и определите клиентов по событию 2889. Для привязки канала сделайте то же самое с событиями 3039 и 3040, а также с добавленными обновлениями 2023 года событиями аудита 3074 и 3075. Когда все проблемные источники исправлены, переключайтесь: обязательная подпись SMB, обязательная подпись LDAP и привязка канала в значение Always. Единственный принцип — не переходить к принудительному применению сразу.
Об авторе
Страница с профилем автора статьи.
Го Комура
Представитель KomuraSoft LLC
Специализируется на разработке программного обеспечения для Windows, техническом консалтинге и расследовании сбоев, особенно в проектах с унаследованными системами и трудно воспроизводимыми ошибками.