Búsqueda de sitios web

¿Cómo verificar, habilitar o deshabilitar las versiones del protocolo SMB en Windows?


El protocolo de red Server Message Block (SMB) se utiliza para compartir y acceder a carpetas, archivos, impresoras y otros dispositivos a través de la red (puerto TCP 445). En este artículo, veremos qué versiones (dialectos) de SMB están disponibles en diferentes versiones de Windows (y cómo se relacionan con las versiones de samba en Linux); cómo verificar la versión SMB en uso en su computadora; y cómo habilitar o deshabilitar los dialectos SMBv1, SMBv2 y SMBv3.

Versiones del protocolo SMB en Windows

Hay varias versiones del protocolo SMB (dialectos) que han aparecido constantemente en las nuevas versiones de Windows (y samba):

  • CIFS: Windows NT 4.0

  • SMB 1.0: Windows 2000

  • SMB 2.0: Windows Server 2008 y Windows Vista SP1 (compatible con Samba 3.6)

  • SMB 2.1: Windows Server 2008 R2 y Windows 7 (Samba 4.0)

  • SMB 3.0: Windows Server 2012 y Windows 8 (Samba 4.2)

  • SMB 3.02: Windows Server 2012 R2 y Windows 8.1 (no compatible con Samba)

  • SMB 3.1.1: Windows Server 2016 y Windows 10 (no compatible con Samba)

Samba se utiliza para implementar el protocolo SMB en Linux/Unix. Samba 4.14 y posteriores usan SMB 2.1 de forma predeterminada.

En la comunicación de red SMB, el cliente y el servidor utilizan la versión máxima del protocolo SMB admitida tanto por el cliente como por el servidor.

La tabla de resumen de la compatibilidad de la versión SMB tiene este aspecto. Con esta tabla, puede determinar la versión del protocolo SMB que se selecciona cuando interactúan diferentes versiones de Windows:

Operating SystemWindows 10, Win Server 2016Windows 8.1, Win Server 2012 R2Windows 8,Server 2012Windows 7,Server 2008 R2Windows Vista,Server 2008Windows XP, Server 2003 and earlier
Windows 10, Windows Server 2016SMB 3.1.1SMB 3.02SMB 3.0SMB 2.1SMB 2.0SMB 1.0
Windows 8.1, Server 2012 R2SMB 3.02SMB 3.02SMB 3.0SMB 2.1SMB 2.0SMB 1.0
Windows 8, Server 2012SMB 3.0SMB 3.0SMB 3.0SMB 2.1SMB 2.0SMB 1.0
Windows 7, Server 2008 R2SMB 2.1SMB 2.1SMB 2.1SMB 2.1SMB 2.0SMB 1.0
Windows Vista, Server 2008SMB 2.0SMB 2.0SMB 2.0SMB 2.0SMB 2.0SMB 1.0
Windows XP, 2003 and earlierSMB 1.0SMB 1.0SMB 1.0SMB 1.0SMB 1.0SMB 1.0

Por ejemplo, si una computadora cliente que ejecuta Windows 8.1 se conecta a un servidor de archivos con Windows Server 2016, se utilizará el protocolo SMB 3.0.2.

Según la tabla, Windows XP y Windows Server 2003 solo pueden usar SMB 1.0 para acceder a carpetas y archivos compartidos. SMBv1 está deshabilitado en las versiones más recientes de Windows Server (2012 R2/2016). Por lo tanto, si todavía usa dispositivos con Windows XP y Windows Server 2003 en su red, no podrán acceder a las carpetas compartidas en el servidor de archivos que ejecuta Windows Server 2016.

Si se usa Windows Server 2019/2016 con SMB v1.0 deshabilitado como controlador de dominio, los clientes de Windows XP/Server 2003 no podrán acceder a las carpetas SYSVOL y NETLOGON en los controladores de dominio y autenticarse con AD.

Puede recibir el siguiente error al intentar conectarse a una carpeta compartida en un servidor de archivos con SMBv1 deshabilitado:

The specified network name is no longer available

¿Cómo verificar la versión SMB en Windows?

Veamos cómo averiguar qué versiones de SMB están habilitadas en su dispositivo Windows.

En Windows 10/8.1 y Windows Server 2019/2016/2012R2, puede comprobar el estado de varios dialectos del protocolo SMB mediante PowerShell:

Get-SmbServerConfiguration | select EnableSMB1Protocol,EnableSMB2Protocol

Este comando devolvió que el protocolo SMB1 está deshabilitado (

EnableSMB1Protocol = True

), y los protocolos SMB2 y SMB3 están habilitados (

EnableSMB1Protocol = False

).

Tenga en cuenta que los protocolos SMBv3 y SMBv2 están estrechamente relacionados. No puede deshabilitar o habilitar SMBv3 o SMBv2 por separado. Siempre están habilitados/deshabilitados solo juntos porque comparten la misma pila.

En Windows 7, Vista y Windows Server 2008 R2/2008:

Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}

Si no hay parámetros nombrados

SMB1

o

SMB2

en esta clave de registro, los protocolos SMBv1 y SMBv2 están habilitados de manera predeterminada.

También en estas versiones de Windows, puede verificar qué dialectos de clientes SMB pueden conectarse a hosts remotos:

sc.exe query mrxsmb10
SERVICE_NAME: mrxsmb10
TYPE : 2 FILE_SYSTEM_DRIVER
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
sc.exe query mrxsmb20
SERVICE_NAME: mrxsmb20
TYPE : 2 FILE_SYSTEM_DRIVER
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0

En ambos casos, los servicios se están ejecutando (

STATE = 4 Running

). Esto significa que el dispositivo Windows actual puede conectarse a hosts SMBv1 y SMBv2.

Comprobación de dialectos SMB usados con Get-SMBConnection

Cuando se comunican a través de SMB, las computadoras usan la versión máxima de SMB admitida tanto por el cliente como por el servidor. El

Get-SMBConnection

El cmdlet de PowerShell se puede usar para verificar la versión SMB utilizada para acceder a una computadora remota:

La versión SMB utilizada para conectarse al servidor remoto (ServerName) aparece en la columna Dialecto.

Puede mostrar información sobre las versiones SMB utilizadas para acceder a un servidor específico:

Get-SmbConnection -ServerName srvfs01

Si desea mostrar si el cifrado SMB está en uso (introducido en SMB 3.0):

Get-SmbConnection | ft ServerName,ShareName,Dialect,Encrypted,UserName

En Linux, puede mostrar una lista de conexiones SMB y dialectos usados en samba usando el comando:

$ sudo smbstatus

En el lado del servidor SMB de Windows, puede mostrar una lista de las versiones de los protocolos SMB que los clientes están utilizando actualmente. Ejecute el comando:

Get-SmbSession | Select-Object -ExpandProperty Dialect | Sort-Object -Unique

Puede usar PowerShell para habilitar la auditoría de las versiones de SMB utilizadas para la conexión:

Set-SmbServerConfiguration -AuditSmb1Access $true

Los eventos de conexión SMB se pueden exportar desde los registros del Visor de eventos:

Get-WinEvent -LogName Microsoft-Windows-SMBServer/Audit

Deje de usar el protocolo SMBv1 inseguro

En los últimos años, Microsoft ha desactivado sistemáticamente el protocolo SMB 1.0 heredado en todos los productos por motivos de seguridad. Esto se debe a la gran cantidad de vulnerabilidades críticas en este protocolo (recordemos los incidentes con el ransomware wannacrypt y petya, que aprovecharon una vulnerabilidad en el protocolo SMBv1). Microsoft y otras empresas de TI recomiendan enfáticamente que deje de usar SMBv1 en su red.

Sin embargo, deshabilitar SMBv1 puede causar problemas para acceder a archivos y carpetas compartidos en versiones más recientes de Windows 10 (Windows Server 2016/2019) desde clientes heredados (Windows XP, Windows Server 2003), SO de terceros (Mac OSX 10.8 Mountain Lion, Snow Leopard, Mavericks, distribuciones antiguas de Linux), dispositivos NAS antiguos.

Si no quedan dispositivos heredados en su red que admitan solo SMBv1, asegúrese de desactivar este dialecto SMB en Windows.

Si tiene clientes que ejecutan Windows XP, Windows Server 2003 u otros dispositivos que solo admiten SMBv1, deben actualizarse o aislarse.

¿Cómo habilitar y deshabilitar SMBv1, SMBv2 y SMBv3 en Windows?

Veamos formas de habilitar y deshabilitar diferentes versiones de SMB en Windows. Cubriremos la administración de servidores y clientes SMB (son diferentes componentes de Windows).

Windows 10, 8.1 y Windows Server 2019/2016/2012R2:

Deshabilite el cliente y el servidor SMBv1:

Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol

Deshabilitar solo el servidor SMBv1:

Set-SmbServerConfiguration -EnableSMB1Protocol $false

Habilite el cliente y el servidor SMBv1:

Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol

Habilite solo el servidor SMBv1:

Set-SmbServerConfiguration -EnableSMB1Protocol $true

Obtenga más información sobre el protocolo SMBv1 en Windows 10 y Windows Server 2016/2019.

Deshabilite el servidor SMBv2 y SMBv3:

Set-SmbServerConfiguration -EnableSMB2Protocol $false

Habilite el servidor SMBv2 y SMBv3:

Set-SmbServerConfiguration -EnableSMB2Protocol $true

Windows 7, Vista y Windows Server 2008 R2/2008:

Deshabilitar el servidor SMBv1:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 -Force

Habilite el servidor SMBv1:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 -Force

Deshabilitar el cliente SMBv1:

sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled

Habilitar cliente SMBv1:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto

Deshabilitar el servidor SMBv2:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -Force

Habilitar el servidor SMBv2:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 -Force

Deshabilitar el cliente SMBv2:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled

Habilitar cliente SMBv2:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto

Puede deshabilitar el servidor SMBv1 en equipos unidos a un dominio implementando el siguiente parámetro de registro a través del GPO:

  • Clave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

  • Nombre: SMB1

  • Escriba: REG_DWORD

  • Valor: 0

Establecer el parámetro de registro

SMB2=0

para deshabilitar el servidor SMBv2.

Para deshabilitar el cliente SMBv1, debe propagar la siguiente configuración de registro:

  • Clave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10

  • Nombre: Inicio

  • Escriba: REG_DWORD

  • Valor: 4

Al deshabilitar la compatibilidad con uso compartido de archivos SMB 1.0/CIFS en Windows, es posible que encuentre el error 0x80070035 ruta de red no encontrada, obtenga un error al acceder a carpetas SMB compartidas y problemas con el descubrimiento de red. En este caso, debe utilizar el Servicio de descubrimiento en lugar del servicio Navegador de equipos (enlace).

Artículos relacionados