Primeiramente, gostaria de me desculpar porque a resposta era desconhecida para mim na época, incompleta. Agora vou ser muito mais claro e correto.
Eu testei isso sozinho (usando 7 e 10) e funciona bem; não deve haver razão para não funcionar com o Windows 8.1. Eu peguei de esta página no documentário Technet da Microsoft. Infelizmente, isso não impede a conexão a compartilhamentos de arquivos SMBv2, mas bloqueia conexões SMBv2. Isso oferece distinções importantes para a segurança do SMB3.
By default, when SMB Encryption is enabled for a file share or server, only SMB 3.0 clients are allowed to access the specified file shares. This enforces the administrator’s intent of safeguarding the data for all clients that access the shares.
....
If the –RejectUnencryptedAccess setting is left at its default setting of $true, only encryption-capable SMB 3.0 clients are allowed to access the file shares (SMB 1.0 clients will also be rejected).
Esta passagem infere que a Criptografia SMB deve estar ativada para o compartilhamento de servidor específico para rejeitá-la; em outras palavras, ele não será rejeitado a menos que seja criptografado. Você precisa criptografar seus compartilhamentos usando os seguintes comandos em um powershell elevado. (Você também pode substituir $true
por $false
se não quiser que ele seja rejeitado por esse compartilhamento, pois não há criptografia quando a rejeição está ativada).
Para definir um compartilhamento específico como criptografado:
Set-SmbShare –Name <sharename> -EncryptData $true
Para definir todos os compartilhamentos como criptografados. Esse é o que você provavelmente deseja. Esta será a configuração padrão e substituirá configurações de compartilhamento específicas):
Set-SmbServerConfiguration –EncryptData $true
Isso também pode ser feito modificando a chave EncryptData
em HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
, definindo o valor DWORD de 0
(false) para 1
(true). Em seguida, você deve reiniciar o computador para que as configurações entrem em vigor (você provavelmente poderá reiniciar alguns serviços).
Para criar um compartilhamento e torná-lo criptografado:
New-SmbShare –Name <sharename> -Path <pathname> –EncryptData $true
O documento descreve que quando o RejectUncreyptedAccess está habilitado, o SMBv1 não conseguirá se conectar porque ele só aceitará conexões SMBv3 , portanto também restringirá conexões SMBv2 de entrada.
Portanto, todos esses comandos seriam totalmente inúteis se não tivéssemos o RejectUnencryptedAccess ativado definindo seu valor como $ true, se ainda não estivesse (ele é habilitado por padrão), usando o comando:
Set-SmbServerConfiguration –RejectUnencryptedAccess $true
Isso também pode ser feito modificando a chave RejectUnecryptedAccess
em HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
, definindo o valor DWORD de 0
(false) para 1
(true). Em seguida, você deve reiniciar o computador para que as configurações entrem em vigor (você provavelmente poderá reiniciar alguns serviços).
Também para referência:
A razão técnica pela qual o SMBv2 é rejeitado não é por ser descriptografado, mas por usar um algoritmo de criptografia menos eficiente e menos seguro. O SMBv3 usa o AES (Advanced Encryption Standard (que foi lançado em 1998)) enquanto o SMBv2 usa o HMAC-Sha256 (Security Hash Algorithm (que foi lançado em 2001 pela NSA)). [Tentei bloquear o HMAC-Sha256 de entrada e quando tentei bloquear ele não fez nada porque não é considerado um algoritmo "Fraco" pelo Windows, portanto não pode ser desabilitado como os algoritmos Sha1 podem ser]
Desative o SMBv1 com este comando (porque ele é redundante quando o RejectUnencryptedAccess está ativado e todos os compartilhamentos são criptografados e você deseja desativá-lo de qualquer forma):
Set-SmbServerConfiguration -EnableSMB1Protocol $false
Ativar SMBv2 & SMBv3 juntos (conexões SMBv2 são bloqueadas quando RejectUnecryptedAccess está ativado):
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Embora não seja possível desativar o SMBv2 de entrada enquanto você deseja usar o SMBv3, é possível desativar o SMBv1 de entrada desativando o cliente SMBv1 usando um prompt de comando ou de powershell elevado:
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol
Outras boas referências da Microsoft:
- how-to-enable-and-disable-smbv1-smbv2-e-smbv3-in-windows-e-windows - noções básicas para desativar e ativar protocolos
- windows-server-2012-qual-versão-do-smb -protocol-smb-1-0-smb-2-0-smb-2-1-ou-smb-3-0-você-está-usando-no-seu-servidor-de-arquivo - protocol technicalities