Есть ли способ (косвенный, хакерский или другой) ограничить Windows 8.1 только для SMB3 и запретить ей принимать или предлагать подключения SMB2?

Все, что я могу найти, - это то, что на 8.1 SMB2 и SMB3 совместно используют один и тот же стек, поэтому функциональность SMB2 нельзя отключить внутренне (убивая mrxsmb20 или аналогичную) без влияния на SMB3.

Однако это оставляет открытой возможность того, что могут быть другие способы его эффективного закрытия через брандмауэр или другое программное обеспечение, или политику или настройку, нацеленную на сеанс, или требования к протоколу и объявленные возможности соединения (возможно, в некотором роде). что SMB2 не может встретиться), без отключения стека.

Поскольку ни одному из моих сетевых устройств не нужно устанавливать SMB2-соединение, не рекомендуется оставлять его открытым, чтобы принимать устаревший протокол, который ему больше не нужен (атаки с перекрестной ссылкой на безопасность по протоколу на SSL и недавние атаки через устаревшие). Уязвимости SMB1). Но есть ли способ отключить его на устройстве под управлением этой версии Windows?

1 ответ1

1

Сначала я хотел бы извиниться, потому что ответ был мне неизвестен в то время, неполный. Теперь я буду намного яснее и правильнее.

Я проверил это сам (используя 7 и 10), и это работает хорошо; не должно быть никаких причин, по которым он не будет работать с Windows 8.1. Я получил это с этой страницы в документальном документе Microsoft Technet. К сожалению, это не мешает подключению к общим папкам SMBv2, но блокирует подключения SMBv2. Это предлагает ключевые различия для безопасности SMB3.

По умолчанию, когда шифрование SMB включено для общего файлового ресурса или сервера, только клиенты SMB 3.0 могут получить доступ к указанным общим файловым ресурсам. Это обеспечивает намерение администратора защитить данные для всех клиентов, которые имеют доступ к общим ресурсам.

....

Если для параметра –RejectUnencryptedAccess оставлено значение по умолчанию, равное $ true, только клиенты SMB 3.0 с поддержкой шифрования могут получить доступ к общим папкам (клиенты SMB 1.0 также будут отклонены).

Этот отрывок предполагает, что шифрование SMB должно быть включено для определенного общего ресурса сервера, чтобы отклонить его; другими словами, он не будет отклонен, если он не зашифрован. Вам необходимо зашифровать свои общие ресурсы, используя следующие команды в расширенном PowerShell. (Вы также можете заменить $true на $false если вы не хотите, чтобы он отклонял этот общий ресурс без шифрования при включенном отклонении).

Чтобы установить определенный общий ресурс как зашифрованный:

Set-SmbShare –Name <sharename> -EncryptData $true

Установить все акции как зашифрованные. Это тот, который вы, вероятно, хотите. Это будет настройкой по умолчанию и переопределит определенные настройки общего ресурса):

Set-SmbServerConfiguration –EncryptData $true

Это также можно сделать, изменив ключ EncryptData в HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters , установив для параметра DWORD значение от 0 (false) до 1 (true). Затем необходимо перезагрузить компьютер, чтобы настройки вступили в силу (возможно, вместо этого вы могли бы перезапустить некоторые службы).

Чтобы создать общий ресурс и сделать его зашифрованным:

New-SmbShare –Name <sharename> -Path <pathname> –EncryptData $true

В документе описывается, что при включении RejectUncreyptedAccess SMBv1 не сможет подключиться, поскольку он будет принимать только подключения SMBv3 , что также ограничивает входящие подключения SMBv2.

Следовательно, все эти команды будут бесполезны, если у нас не будет включен RejectUnencryptedAccess, если для его значения установлено значение $ true, если это еще не сделано (по умолчанию оно включено), с помощью команды:

Set-SmbServerConfiguration –RejectUnencryptedAccess $true

Это также можно сделать, изменив ключ RejectUnecryptedAccess в HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters , установив для параметра DWORD значение от 0 (false) до 1 (true). Затем необходимо перезагрузить компьютер, чтобы настройки вступили в силу (возможно, вместо этого вы могли бы перезапустить некоторые службы).

Также для справки:

Техническая причина отклонения SMBv2 не в том, что он не зашифрован, а в том, что он использует менее эффективный и менее безопасный алгоритм шифрования. SMBv3 использует AES (Advanced Encryption Standard (выпущенный в 1998 году)), в то время как SMBv2 использует HMAC-Sha256 (Security Hash Algorithm (который был выпущен в 2001 году NSA)). [Я пытался заблокировать входящий HMAC-Sha256, и когда я попытался заблокировать его, он ничего не сделал, потому что он не считается "слабым" алгоритмом в Windows, поэтому не может быть отключен, как могут быть алгоритмы Sha1]

Отключите SMBv1 с помощью этой команды (потому что он избыточен, когда RejectUnencryptedAccess включен, и все общие ресурсы зашифрованы, и вы все равно хотите его отключить):

Set-SmbServerConfiguration -EnableSMB1Protocol $false

Включите SMBv2 и SMBv3 вместе (соединения SMBv2 блокируются, когда включен RejectUnecryptedAccess):

Set-SmbServerConfiguration -EnableSMB2Protocol $true

Хотя вы не можете отключить входящий SMBv2, когда хотите использовать SMBv3, вы можете отключить входящий SMBv1, отключив клиента SMBv1 с помощью расширенного PowerShell или командной строки:

sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi 
sc.exe config mrxsmb10 start= disabled
Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol

Другие хорошие ссылки от Microsoft:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .