Сначала я хотел бы извиниться, потому что ответ был мне неизвестен в то время, неполный. Теперь я буду намного яснее и правильнее.
Я проверил это сам (используя 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: