Поделиться через


Что такое подписывание блока сообщений сервера?

В этой статье описывается блок сообщений сервера (SMB) 2.x и 3.x для входа в Windows и Windows Server. В статье также описаны вопросы безопасности подписывания SMB и параметры политики.

Подписывание SMB означает, что каждое сообщение SMB содержит подпись, созданную с помощью ключа сеанса и AES. Подписывание SMB добавляет подпись, содержащую хэш всего сообщения в заголовке SMB. Если кто-то вмешивается в транзитное сообщение, данные в сообщении не соответствуют хэшу в сигнатуре. Хэш также включает удостоверения исходного отправителя и предполагаемого получателя. Несоответствие подписей оповещает пользователей о возможном фоловом воспроизведении, помогая им защитить развертывания от атак ретранслятора и спуфинга.

Как работает подписывание

Подписывание SMB — это функция безопасности, которая использует ключ сеанса и набор шифров для добавления подписи в сообщение, которое проходит через соединение. Манифесты целостности сообщений SMB2 в подписанном сеансе, где поток подписанных пакетов от клиента к серверу. На подписанном сеансе каждый подписанный пакет содержит подпись, которую может проверить получатель. В отличие от подписывания SMB1, использующего алгоритм хэширования MD5 [RFC1321], SMB2 использует лучшее хэширование для подписи. Модель безопасности в MS-SMB2 зависит от проверки подлинности удостоверения пользователя клиента перед доступом к общей папке на сервере. После проверки подлинности пользователя сервер может наказать подпись или шифрование сообщений. Сервер также управляет доступом к общей папке, на основе которой пользователи, группы или утверждения могут иметь различные уровни доступа.

Алгоритмы подписывания развивались со временем, при подписи SMB 2.02 было улучшено с помощью HMAC-SHA-256, заменив старый метод MD5, который был в SMB1. Кроме того, SMB 3.0 представила AES-CMAC. Windows Server 2022 и Windows 11 представили ускорение подписывания AES-128-GMAC. Дополнительные сведения о подписи AES-128-GMAC см. в статье AES-128-GMAC.

Подписывание SMB включено во всех версиях Windows. Требования к подписи SMB могут включать как исходящую подпись, которая охватывает трафик от клиента SMB, так и для входящего подписывания, который охватывает трафик на сервер. Для Windows и Windows Server может потребоваться только исходящий вход, только входной вход, оба или ни другое. Если в вашей среде используются файловые серверы, отличные от Майкрософт, системные параметры могут предотвратить принятие в силу параметров и подключений по умолчанию. В этом случае может потребоваться отключить требование для подписи SMB. Сведения об отключении подписывания SMB см. в разделе "Управление SMB ", чтобы узнать, как отключить подписывание SMB.

Вопросы безопасности в SMB2 и SMB3

Все криптографические ключи, используемые в подписи SMB 2.x и 3.x, являются производными от ключа сеанса. Безопасность подписывания и шифрования SMB 2/3 зависит от ключа сеанса. Если кто-то изменяет сообщение во время передачи, хэш не соответствует, и SMB знает, что кто-то, кто-то изменил данные. Подпись также подтверждает удостоверения отправителя и получателя и предотвращает атаки ретранслятора.

При использовании подписывания SMB следует учитывать следующее:

  • Так как сам ключ сеанса является производным от пароля, используя длинный, сложный, недикционный пароль, улучшает подписывание и шифрование SMB.
  • Использование Kerberos вместо NTLMv2 рекомендуется, чтобы ключ сеанса запускал сильный.
  • Не подключайтесь к общим папкам с помощью IP-адресов или записей CNAME, в противном случае ntLM используется вместо Kerberos. Мы рекомендуем использовать Kerberos. Дополнительные сведения об использовании записей CNAME см. в разделе "Использование псевдонимов имени компьютера" вместо записей CNAME DNS.

По умолчанию контроллеры домена требуют подписывания SMB для всех пользователей, подключающихся к ним, как правило, для SYSVOL и NETLOGON для получения групповых политик и сценариев входа. UNC Hardening от клиента также требует подписывания при разговоре с этими двумя общими папками и идет дальше, требуя Kerberos. Подписывание SMB также автоматически используется в рамках целостности предварительной проверки подлинности, чтобы предотвратить атаки на более раннюю версию. Дополнительные сведения см. в статье SMB 3.1.1 Предварительная проверка подлинности в Windows 10.

Расположения политик для подписывания SMB

Политики для подписывания SMB находятся в параметрах>>>безопасности параметров безопасности параметров безопасности параметров конфигурации компьютера.>

  • Клиент сети Майкрософт: обмен данными с цифровой подписью (всегда)
    Раздел реестра: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters
    Значение реестра: RequireSecuritySignature
    Тип данных: REG_DWORD
    Данные: 0 (отключить), 1 (включить)

  • Сетевой сервер Майкрософт: обмен данными цифрового знака (всегда)
    Раздел реестра: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters
    Значение реестра: RequireSecuritySignature
    Тип данных: REG_DWORD данные: 0 (отключить), 1 (включить)

Примечание.

В этих политиках всегда указывается, что требуется подписывание SMB.

Общие сведения о "RequireSecuritySignature" и "EnableSecuritySignature"

Параметр реестра EnableSecuritySignature для SMB2 и более поздних клиентов и серверов игнорируется. Поэтому этот параметр ничего не делает, если вы не используете SMB1. Подписывание SMB 2.02 и более поздних версий контролируется исключительно за счет необходимости или нет. Этот параметр используется, когда серверу или клиенту требуется подпись SMB. Подписывание не происходит только в том случае, если для сервера и клиента задано значение 0.

В сводке SMB подписывается, когда:

  • Клиент SMB и сервер имеют значение RequireSecuritySignature равным 1.
  • Клиент SMB имеет значение RequireSecuritySignature равным 1, а сервер имеет значение RequireSecuritySignature равным 0.
  • Сервер SMB имеет значение RequireSecuritySignature равным 1, а клиент имеет значение RequireSecuritySignature равным 0.

Подписывание не используется при следующих случаях:

  • Клиент SMB и сервер имеют значение RequireSecuritySignature равным 0.

Аудит подписывания и шифрования SMB

Начиная с Windows 11 версии 24H2 администраторы могут включить аудит клиента SMB для обнаружения сторонних клиентов или серверов, которые не поддерживают шифрование SMB или подпись. Если сторонние утверждения устройства или программного обеспечения для поддержки SMB 3.1.1, но не поддерживают подпись SMB, это нарушает требование протокола целостности проверки подлинности SMB 3.1.1.

Настройка параметров аудита подписи и шифрования SMB может быть изменена в групповой политике или с помощью PowerShell. Эти параметры групповой политики хранятся в путях:

  • Computer Configuration\Administrative Templates\Network\Lanman Server\Audit client does not support encryption

  • Computer Configuration\Administrative Templates\Network\Lanman Server\Audit client does not support signing

  • Computer Configuration\Administrative Templates\Network\Lanman Workstation\Audit server does not support encryption

  • Computer Configuration\Administrative Templates\Network\Lanman Workstation\Audit server does not support signing

Для PowerShell выполнение следующих команд позволяет выполнять аудит одинаковых параметров:

Set-SmbServerConfiguration -AuditClientDoesNotSupportEncryption $true
Set-SmbServerConfiguration -AuditClientDoesNotSupportSigning $true

Set-SmbClientConfiguration -AuditServerDoesNotSupportEncryption $true
Set-SmbClientConfiguration -AuditServerDoesNotSupportSigning $true

Просмотр событий фиксирует эти события по следующим путям с соответствующими идентификаторами событий:

Путь ИД события
Журналы приложений и служб\Microsoft\Windows\SMBClient\Audit 31998
31999
Журналы приложений и служб\Microsoft\Windows\SMBServer\Audit 3021
3022

В следующих статьях содержатся дополнительные сведения о SMB: