Como entender e solucionar problemas do protocolo Server Message Block (SMB)

Server Message Block (SMB) é um protocolo essencial de compartilhamento de arquivos em rede que permite que usuários e aplicativos acessem arquivos, impressoras e outros recursos compartilhados por meio de uma rede. Comumente usado em ambientes Windows, o SMB facilita a comunicação contínua entre sistemas cliente e servidor. Neste artigo, vamos explorar como o SMB funciona, seus componentes, etapas comuns de solução de problemas e práticas recomendadas para resolver problemas relacionados ao SMB.



O que é SMB?

Server Message Block (SMB) é um protocolo de rede que permite que os usuários leiam, gravem e gerenciem arquivos em servidores remotos como se fossem locais. O SMB é amplamente usado em redes Windows para permitir o acesso compartilhado a arquivos, impressoras e portas seriais. Ele também é compatível com sistemas Linux e macOS, o que o torna um protocolo versátil para a comunicação entre plataformas.


Como o SMB funciona

  1. Solicitação do cliente: O cliente SMB (por exemplo, Windows, Linux ou macOS) envia uma solicitação ao servidor SMB para acessar um recurso compartilhado.
  2. Resposta do servidor: O servidor SMB valida a solicitação com base na autenticação e nas permissões.
  3. Acesso ao recurso: Depois que o acesso é concedido, o cliente pode ler, gravar ou modificar arquivos como se estivessem em uma unidade local.

Terminologia essencial do SMB

  • Servidor SMB (SRV): O sistema que hospeda o sistema de arquivos compartilhado.
  • Cliente SMB (CLI): O sistema que acessa o sistema de arquivos compartilhado.

Por exemplo, se uma máquina com Windows Server 2016 acessa o compartilhamento SMB \\MyWorkstation\Data em um computador com Windows 10, o servidor atua como cliente SMB, e a estação de trabalho é o servidor SMB.


Versões do SMB

1. SMB 1.0 (legado)

  • Vulnerável a ataques como WannaCry e EternalBlue.
  • Não possui recursos de segurança modernos.

2. SMB 2.0 / 2.1

  • Melhor desempenho e segurança.
  • Suporta tamanhos de buffer maiores para melhores taxas de transferência de dados.

3. SMB 3.0+

  • Introduziu criptografia para maior segurança.
  • Os recursos incluem SMB Multichannel e SMB Direct para transferências de arquivos em alta velocidade.

Componentes do SMB

1. Binários

  • Binários do cliente SMB: Localizados em %windir%\system32\Drivers:
    • RDBSS.sys
    • MRXSMB.sys
    • MRXSMB10.sys
    • MRXSMB20.sys
    • MUP.sys
    • SMBdirect.sys
  • Binários do servidor SMB:
    • %windir%\system32: Srvsvc.dll
    • %windir%\system32\Drivers: SRVNET.sys, SRV.sys, SRV2.sys, SMBdirect.sys

2. Associações

  • Associação do cliente SMB: Client for Microsoft Networks
  • Associação do servidor SMB: File and Printer Sharing for Microsoft Networks

Portas e comunicação do SMB

O SMB pode operar em portas diferentes, dependendo do protocolo usado:

ProtocoloPortaDescrição
NetBIOS over TCP/IPUDP 137Resolução de nomes
NetBIOS over TCP/IPUDP 138Serviços de datagramas
NetBIOS over TCP/IPTCP 139Serviços de sessão
SMB direto sobre TCPTCP 445Comunicação padrão do SMB

As redes modernas usam principalmente TCP 445, enquanto sistemas mais antigos podem depender do NetBIOS.


Como solucionar problemas de SMB

1. Verifique a conectividade

  • Verifique se o cliente consegue se conectar ao servidor por meio de TCP 445:
Test-NetConnection <server_IP_or_hostname> -Port 445
  • Se falhar, verifique se o Firewall do Azure, os NSGs ou os firewalls locais estão bloqueando o tráfego SMB.

2. Verifique a resolução de nomes

  • Teste o acesso ao servidor por nome de host e IP:
nslookup <server_hostname>
  • Se o nome de host falhar, verifique a configuração do DNS.

3. Verifique os serviços SMB

  • Verifique se os serviços necessários estão em execução:
Get-Service -Name LanmanServer, LanmanWorkstation
  • Inicie os serviços se estiverem parados:
Start-Service -Name LanmanServer, LanmanWorkstation

4. Verifique as regras de firewall

  • Confirme se as regras de SMB estão habilitadas:
netsh advfirewall firewall show rule name="File and Printer Sharing (SMB-In)"

5. Verifique as permissões

  • Verifique as permissões de compartilhamento e NTFS nas propriedades da pasta ou pelo CMD:
net share <sharename>
icacls <folder_path>

6. Teste o acesso usando um caminho UNC

  • Abra Run (Win + R) e digite:
\\<server_IP_or_hostname>\sharename

Solução de problemas avançada e coleta de dados

1. Verifique as sessões SMB

  • Exiba as sessões SMB ativas:
Get-SmbSession

2. Redefina a configuração do SMB

  • Desabilite e reabilite o SMB 2 e 3:
Set-SmbServerConfiguration -EnableSMB2Protocol $true -Force

3. Rastros de rede

  • Use o Wireshark para coletar pacotes de rede relacionados ao SMB:
    1. Comece a capturar o tráfego no cliente e no servidor SMB.
    2. Reproduza o problema.
    3. Analise os pacotes em busca de erros ou tempos limite do SMB.

4. Colete os logs de eventos

  • Exporte os logs de eventos relacionados ao SMB para análise posterior:
    • Logs do cliente SMB.
    • Logs do servidor SMB.
SMB

Documentação de referência:

Solução de problemas avançada do Server Message Block (SMB) | Microsoft Learn

Problemas conhecidos do SMB | Microsoft Learn

Orientações para solucionar problemas de SMB – Windows Server | Microsoft Learn

Visão geral do protocolo SMB da Microsoft e do protocolo CIFS – Aplicativos Win32 | Microsoft Learn

Detectar, habilitar e desabilitar SMBv1, SMBv2 e SMBv3 no Windows | Microsoft Learn

Visão geral do compartilhamento de arquivos usando o protocolo SMB 3 no Windows Server | Microsoft Learn

Visão geral da assinatura do Server Message Block – Windows Server | Microsoft Learn

Aprimoramentos de segurança do SMB | Microsoft Learn


Conclusão

O SMB é um protocolo poderoso para compartilhamento de arquivos e acesso a recursos, mas pode apresentar problemas devido a configurações incorretas, restrições de rede ou componentes desatualizados. Seguindo as etapas de solução de problemas descritas acima, você pode identificar e resolver com eficácia os problemas relacionados ao SMB. Para problemas complexos, diagnósticos avançados, como rastros de rede e logs de eventos, podem fornecer informações mais detalhadas.

Deixe um comentário