Forçando o Windows 8.1 a usar somente o SMB3?

0

Existe uma maneira (indireta, hacky ou outra) de restringir o Windows 8.1 apenas ao SMB3 e impedir que ele aceite ou ofereça conexões SMB2?

Tudo o que posso encontrar é que no 8.1, SMB2 e SMB3 compartilham a mesma pilha, portanto a funcionalidade SMB2 não pode ser desabilitada internamente (matando mrxsmb20 ou similar) sem afetar o SMB3.

No entanto, isso deixa em aberto a possibilidade de haver outras maneiras de fechá-lo efetivamente, por meio do firewall ou de algum software, ou uma política ou configuração que segmente a sessão ou os requisitos de protocolo e recursos anunciados de uma conexão (talvez de uma forma que o SMB2 não pode atender), sem desativar a pilha.

Como nenhum dos meus dispositivos de LAN deve precisar fazer uma conexão SMB2, é uma prática ruim deixá-lo aberto para aceitar um antigo protocolo de downgrade que não deveria precisar (ataques de segurança crossref através de downgrade de protocolo no SSL e os ataques recentes via vulnerabilidades mais antigas do SMB1) . Mas existe uma maneira de desativá-lo em um dispositivo que executa essa versão do Windows?

    
por Stilez 25.07.2017 / 07:45

1 resposta

1

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:

por 25.07.2017 / 08:44