¿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 System | Windows 10, Win Server 2016 | Windows 8.1, Win Server 2012 R2 | Windows 8,Server 2012 | Windows 7,Server 2008 R2 | Windows Vista,Server 2008 | Windows XP, Server 2003 and earlier |
| Windows 10, Windows Server 2016 | SMB 3.1.1 | SMB 3.02 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
| Windows 8.1, Server 2012 R2 | SMB 3.02 | SMB 3.02 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
| Windows 8, Server 2012 | SMB 3.0 | SMB 3.0 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
| Windows 7, Server 2008 R2 | SMB 2.1 | SMB 2.1 | SMB 2.1 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
| Windows Vista, Server 2008 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 1.0 |
| Windows XP, 2003 and earlier | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 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,EnableSMB2ProtocolEste 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
SMB2en 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 mrxsmb10SERVICE_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 : 0x0sc.exe query mrxsmb20SERVICE_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 : 0x0En 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-SMBConnectionEl 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 srvfs01Si desea mostrar si el cifrado SMB está en uso (introducido en SMB 3.0):
Get-SmbConnection | ft ServerName,ShareName,Dialect,Encrypted,UserNameEn Linux, puede mostrar una lista de conexiones SMB y dialectos usados en samba usando el comando:
$ sudo smbstatusEn 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 -UniquePuede usar PowerShell para habilitar la auditoría de las versiones de SMB utilizadas para la conexión:
Set-SmbServerConfiguration -AuditSmb1Access $trueLos eventos de conexión SMB se pueden exportar desde los registros del Visor de eventos:
Get-WinEvent -LogName Microsoft-Windows-SMBServer/AuditDeje 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 smb1protocolDeshabilitar solo el servidor SMBv1:
Set-SmbServerConfiguration -EnableSMB1Protocol $falseHabilite el cliente y el servidor SMBv1:
Enable-WindowsOptionalFeature -Online -FeatureName smb1protocolHabilite solo el servidor SMBv1:
Set-SmbServerConfiguration -EnableSMB1Protocol $trueObtenga 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 $falseHabilite el servidor SMBv2 y SMBv3:
Set-SmbServerConfiguration -EnableSMB2Protocol $trueWindows 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 -ForceHabilite el servidor SMBv1:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 -ForceDeshabilitar el cliente SMBv1:
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabledHabilitar cliente SMBv1:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= autoDeshabilitar el servidor SMBv2:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -ForceHabilitar el servidor SMBv2:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 -ForceDeshabilitar el cliente SMBv2:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabledHabilitar cliente SMBv2:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= autoPuede 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=0para 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).





