Habilita o deshabilita los protocolos SMBv1, SMBv2 y SMBv3 en Windows

Habilita o deshabilita los protocolos SMBv1, SMBv2 y SMBv3 en Windows

Sergio De Luz

SMB (Server Message Block) es uno de los protocolos por excelencia para compartir archivos en la red local, en el año 1998 Microsoft renombró este protocolo a CIFS (antiguamente era conocido como SMB pero ha sido renombrado a CIFS (Common Internet File System)). Desde entonces, se le conoce como SMB/CIFS en muchas partes, las últimas versiones de SMB/CIFS incorporan soporte para enlaces simbólicos y duros, mayores tamaños de archivos, e incluso tenemos autenticación y transferencia de archivos segura utilizando protocolos criptográficos. Samba es la implementación libre del protocolo SMB/CIFS de Windows, por lo que tendremos compatibilidad entre los sistemas de Microsoft y sistemas operativos basados en Linux y Unix sin tener problemas. Hoy en RedesZone os vamos a explicar cómo habilitar o deshabilitar los diferentes protocolos SMBv1, SMBv2 y SMBv3 que existen hoy en día en sistemas operativos Windows.

Características de SMB/CIFS en sus diferentes versiones

SMB es un protocolo de red que nos permite compartir archivos, carpetas e impresoras en la red local entre diferentes sistemas operativos, incluyendo Windows, Linux, MacOS y cualquier sistema operativo basado en Unix que incorpore Samba. Este protocolo está dentro de la capa de aplicación, y por debajo, hace uso del puerto 445 de TCP, por tanto, las transferencias de los datos son fiables porque existe retransmisión de los datos en caso de que haya problemas. Desde el nacimiento de SMB/CIFS hasta el momento, disponemos de varias versiones que han ido incorporando mejoras en el funcionamiento y también en la seguridad del protocolo, sin embargo, no todos los servidores que funcionan con SMB/CIFS hacen uso de las últimas versiones del protocolo, por lo que podríamos encontrarnos con fallos inesperados al intentar conectarnos a un servidor SMB local.

El acceso a los recursos de SMB/CIFS se puede realizar a través de autenticación con usuarios locales, a través de autenticación basada en servidor RADIUS o LDAP, y, por supuesto, autenticación a través de active directory. A nivel de configuración, podríamos configurar el servidor para evitar las contraseñas nulas, también podríamos crear cuentas de invitado que permitirán acceder a ciertos recursos sin ningún tipo de autenticación. Otras características de SMB/CIFS es que podremos habilitar soporte para atributos extendidos de OS/2 en un recurso compartido, así como almacenar dichos atributos DOS si estamos usando sistemas operativos de Microsoft. Por supuesto, podremos establecer una máscara de creación de archivos y también de directorios, para que esos archivos o carpetas que vayamos a crear nuevos tengan unos permisos específicos.

Respecto al rendimiento de SMB/CIFS, podemos habilitar las E/S asíncronas, con el objetivo de conseguir mejores velocidades de lectura y escritura en los recursos Samba, además, esto podríamos usarlo solamente para archivos de un tamaño mayor al definido en la configuración del servidor. Cuando vamos a configurar un servidor SMB/CIFS es muy importante la versión utilizada, tanto en el servidor como en el cliente. A nivel de configuración, podremos definir diferentes parámetros para fijar el protocolo máximo a nivel de servidor soportado, y también el protocolo mínimo a nivel de servidor, con el objetivo de proporcionar la mejor seguridad a los clientes. Por ejemplo, una configuración muy segura sería soportar únicamente el protocolo SMB3, sin embargo, es posible que tengamos problemas con algunos clientes que solamente soporta hasta SMB2, por lo que lo más normal es permitir como mínimo SMB2 y como máximo SMB3.

SMB/CIFS versión 1

La primera versión de este protocolo nació en el año 1983 y se construyó haciendo uso de NetBIOS de Microsoft, sin embargo, en versiones posteriores se dejó de utilizar NetBIOS. Todas las versiones antiguas de Microsoft Windows hacen uso de SMBv1, sin embargo, las nuevas versiones de las versiones de Windows 10 y Windows Server no incorporan SMBv1 instalado en el sistema operativo por seguridad, porque se ha demostrado que este protocolo actualmente no es nada seguro y no se recomienda utilizarlo. Por ejemplo, Windows Server 2016 y posteriores y Windows 10 Fall Creators Update no integran esta versión de forma predeterminada.

También es cierto que algunos routers todavía usan en sus servidores SMB/CIFS la primera versión del protocolo, en este caso, poco o nada podemos hacer para configurarlo con versiones superiores, porque depende del fabricante en la gran mayoría de los casos. Por ejemplo, si tienes un firmware de terceros como OpenWRT o DD-WRT entonces sí podrías deshabilitar este protocolo SMBv1 y activar las últimas versiones, porque el software incorporado en el firmware lo soporta.

SMB/CIFS versión 2

Microsoft lanzó la versión SMBv2 para Windows Vista en el año 2006 y en Windows Server 2008. Aunque este protocolo es privado, se ha publicado toda su especificación para permitir que programas como Samba para Linux y Unix puedan utilizarlo y que los diferentes sistemas operativos sean interoperables, de lo contrario, solamente los sistemas operativos Windows podrían intercambiar información entre ellos.

SMB2 supone un gran cambio respecto a la primera versión, también funcionamiento como también en seguridad. SMB2 reduce el establecimiento de la conexión respecto a SMB1.0, reduciendo el número de comandos y subcomandos, además, permite enviar solicitudes adicionales antes de que llegue la respuesta a una solicitud anterior, permitiendo ahorrar mucho tiempo y mejorando la velocidad cuando tenemos una alta latencia en las conexiones, o cuando queremos conseguir el mejor rendimiento posible. Otras opciones muy importantes son la posibilidad de combinar múltiples acciones en una sola solicitud, reduciendo la cantidad de información intercambiada. SMB 2.0 incorpora una serie de identificadores para evitar la reconexión desde cero en caso de un breve corte en la red, de esta forma, no tendremos que volver a establecer la comunicación.

Esta nueva versión SMB 2.0 soporta enlaces simbólicos, almacenamiento en caché, firma de mensajes con HMAC-SHA256 y una mejor escalabilidad para tener múltiples usuarios concurrentes en el mismo servidor, además, también permite mejorar el número de recursos compartidos y archivos abiertos por el servidor. Mientras que SMBv1 utiliza tamaño de datos de 16 bits y el límite de tamaño máximo de bloque son de 64K, en SMB2 se usan 32 o 64 bits para el almacenamiento, esto significa que en enlaces de redes ultrarrápidas como pueden ser las redes Gigabit, Multigigabit o 10G, la transferencia de los archivos es mucho más rápida al enviar archivos muy grandes.

En RedesZone hemos sido capaces de conseguir velocidades de 1.2GB/s en una red 10G haciendo uso de SMB2, con un servidor NAS QNAP TS-1277 con almacenamiento SSD, y en el PC de origen también teníamos almacenamiento SSD, porque el almacenamiento tradicional con discos duros no soporta estas velocidades tan elevadas a no ser que usemos ciertos RAID de muchos discos.

Los sistemas operativos Windows Vista y Windows Server 2008 y posteriores hacen uso de SMB2 de forma predeterminada, sin embargo, es posible que aún te encuentres con SMB1 en ciertos equipos, por lo que es posible que tengas que habilitarlo específicamente para conectarte a estos servidores tan antiguos. Por último, en la versión SMB 2.1 que fue introducida en Windows 7 y Windows Server 2008 R2 se mejoró aún más el rendimiento con un nuevo mecanismo de bloqueo oportunista.

SMB/CIFS versión 3

Esta versión SMB 3.0 anteriormente se llamó SMB 2.2, se introdujo con Windows 8 y Windows Server 2012, con nuevos cambios muy importantes orientados a agregar nuevas funcionalidades y a mejorar el rendimiento de SMB2 en centro de datos virtualizados. Algunos de los cambios introducidos fueron los siguientes:

  • SMB Direct Protocol: esto permite usar SMB sobre acceso directo a memoria remota RDMA, cualquier servidor con esta versión incorpora esta funcionalidad para mejorar enormemente el rendimiento.
  • Multicanal SMB: esta característica nos permite realizar múltiples conexiones por sesión de SMB, para forzar al máximo las comunicaciones y exprimir la red local donde estemos ejecutando el servidor y los clientes.
  • Conmutación por error totalmente transparente.

Sin embargo, la característica más importante es la autenticación del usuario en el SMB, ahora se realiza totalmente cifrada, antes se realiza siempre en texto en claro, por lo que un usuario malintencionado podría poner un sniffer de red y capturar las credenciales del usuario. Gracias a esto, la autenticación se realiza de forma segura. También se ha incorporado la posibilidad de tener cifrado extremo a extremo con AES con el objetivo de cifrar o encriptar las transferencias de archivos y carpetas. Por tanto, con SMB 3.0 tenemos dos posibilidades de configuración:

  • Autenticación segura con cifrado y la transferencia de archivos y carpetas sin cifrar.
  • Autenticación e intercambio de archivos y carpetas con cifrado simétrico, esto nos proporcionará la máxima seguridad, pero podría verse perjudicado el rendimiento.

Si el servidor SMB no soporta AES-NI en su procesador, es probable que el rendimiento que consigamos a la hora de transferir archivos y carpetas sea realmente bajo, por lo que es muy recomendable que dispongas de un procesador potente con motor de cifrado por hardware. Actualmente todos los procesadores a partir del año 2015 aproximadamente disponen de esta tecnología, pero deberías revisarlo en sus especificaciones técnicas.

Además de la versión de SMB 3.0, también se introdujo la versión SMB 3.0.2 en Windows 8.1 y Windows Server 2012 R2 mejorando funcionalidades y rendimiento, además, en estos sistemas operativos ya es posible deshabilitar la versión SMB 1.0 para mejorar la seguridad, porque a la hora de conectarse los clientes pueden negociar qué protocolo SMB se va a utilizar.

Por último, Microsoft ha introducido la versión SMB 3.1.1 en Windows 10 y en Windows Server 2016 y posteriores. Esta nueva versión incorpora el cifrado simétrico AES-128-GCM para proporcionar la mejor seguridad posible y el mejor rendimiento en lectura y escritura, también tenemos la opción de configurar el modo de cifrado CCM. Además de esto, implementa una verificación de integridad previa que hace uso de un hash SHA2-512, uno de los más seguros actualmente. Por último, esta versión SMB 3.1.1 obliga a que la negociación de los clientes usando SMB 2.0 o superior sea con seguridad, es decir, autenticación con cifrado.

Ventajas y desventajas

Como prácticamente todo lo que nos podemos encontrar en el mundo de la informática tiene sus ventajas y desventajas, vamos a ver algunas de los protocolos SMB. Entre sus ventajas podemos encontrar:

  • Mejora el soporte para un uso compartido de archivos. Estos proporcionan cierto nivel de soporte para el uso compartido de archivos entre los diferentes clientes y servidores.
  • Acceso desde clientes CIFS. Nos habilitan el acceso a los usos compartidos de datos de los clientes CIFS. Esto puede ocurrir incluso con Sistemas Operativos que no son de Microsoft.
  • Nos facilitan dos niveles de seguridad para la autenticación, usos compartidos y usuarios de SMB.

En cambio cuenta con alguna desventajas, donde seguramente la más importante sea que SMB, no proporciona encriptación en la capa de transporte. La cual hace que los archivos que transitan por la red, no estén seguros.

¿Cómo funciona el protocolo SMB?

  • Petición de Sesión NetBIOS: Su objetivo es establecer una sesión fiable para el envío de mensajes entre clientes y servidores.
  • Respuesta de la sesión NetBIOS: Si no existe ningún error, el servidor enviará un mensaje ACK, de forma que acepta la conexión.
  • Petición de dialecto SMB: El cliente envía un mensaje indicando los dialectos que SMB soporta.
  • Respuesta al dialecto SMB: El servidor contesta con el dialecto que prefiere. Si no puede usar ninguno, mostrará un mensaje de error.
  • Petición de Inicio de Sesión: El cliente envía las credenciales con las que quiere conectarse al servidor.
  • Respuesta al Inicio de Sesión: El servidor identifica las credenciales. Si son las correctas, el servidor comprobará si el cliente tiene derecho a conectarse. Si esto es afirmativo, aceptará la conexión y construirá un identificador numérico para la conexión.
  • Petición de conexión a recurso: El cliente envía un mensaje indicando el recurso que solicita y desea acceder.
  • Respuesta a la conexión del recurso: Si el recurso existe, el servidor concede el acceso mediante un identificador. Este se usará en futuras conexiones de este cliente al recurso concreto.

Habilitar o deshabilitar los diferentes protocolos SMB en Windows

Actualmente si estamos usando las últimas versiones del sistema operativo Windows, la versión SMB 1.0 viene desactivada de forma predeterminada por seguridad, porque es un protocolo que actualmente no se considera seguro, es necesario que uses SMB 2.0 o superior para no tener problemas de seguridad. No obstante, sería recomendable comprobar si tenemos habilitado o no los diferentes protocolos para saber cuáles necesitamos habilitar o deshabilitar.

A continuación, os vamos a explicar cómo detectar, deshabilitar o habilitar las diferentes versiones de Samba, lo primero que tenemos que hacer es pulsar en la tecla «Windows» y a continuación, buscar «Powershell«, pinchamos clic derecho del ratón y lo «ejecutamos como administrador«.

SMBv1 tanto cliente como servidor

Si queremos habilitar o deshabilitar el soporte para SMBv1 en nuestro equipo, primero tenemos que verificar si lo tenemos activado o desactivado.

Para detectar:

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

Para habilitar el protocolo SMBv1 (no es recomendable por seguridad), debes poner:

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

Si estás interesado en habilitar este protocolo, tanto el cliente como el servidor, podemos hacerlo a través de la interfaz gráfica de usuario de Windows 10. Lo primero que debemos hacer es acceder al panel de control, para entrar debemos pinchar en el botón de «Inicio» y poner en la barra de búsqueda «Panel de control» y automáticamente nos aparecerá un icono para entrar en este menú de configuración.

En el lateral izquierdo podremos pinchar en la sección de «Programas», y a continuación, pinchamos en «Activar o desactivar las características de Windows» para poder ir a este apartado. En la siguiente captura os aparece cómo saldría:

Activar o desactivar características de Windows 10

Si no encontraréis esa opción, siempre vas a poder entrar en «Panel de control» y en la parte superior derecha de la barra de búsqueda, vas a poder poner «características de Windows» y automáticamente os va a sugerir esta opción, por lo que no tenemos pérdida.

Una vez que despleguemos esta opción, debemos buscar en el listado de características de Windows lo siguiente: «Compatibilidad con el protocolo SMB/CIFS 1.0»

Aquí lo que debemos hacer es desplegarlo, y activar la casilla que nosotros queramos, ya sea el cliente SMB 1.0, el servidor SMB 1.0 o ambas opciones, dependiendo de nuestras necesidades:

Activar o desactivar SMB CIFS 1.0 Windows 10

Las activamos, pinchamos en «Aceptar» y el sistema operativo nos indicará que debemos reiniciar el ordenador para que funcione correctamente. Cuando se inicie nuevamente, ya tendremos el protocolo SMB 1.0 como cliente y servidor funcionando en nuestro sistema operativo, pero no os recomendamos activarlo por seguridad, a menos que sea absolutamente necesario.

Para deshabilitar el protocolo podéis poner este comando en Powershell:

Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

Si quieres deshabilitar a través de la interfaz gráfica de usuario, lo único que debemos hacer son los mismos pasos que para activarlo, pero en este caso lo que haremos será quitar la selección de cliente SMB 1.0 y servidor SMB 1.0, pinchamos en aceptar y reiniciamos el ordenador otra vez. Ahora ya tendremos esta funcionalidad desactivada por nuestra seguridad. Tal y como habéis visto, este protocolo desde las últimas versiones de Windows se encuentra deshabilitado de manera predeterminada.

SMBv2/SMB3 tanto cliente como servidor

Si queremos habilitar o deshabilitar el soporte para SMBv2 o SMBv3 en nuestro equipo, primero tenemos que verificar si lo tenemos activado o desactivado.

Get-SmbServerConfiguration | Select EnableSMB2Protocol

Para habilitarlo:

Set-SmbServerConfiguration -EnableSMB2Protocol $true

Para deshabilitarlo:

Set-SmbServerConfiguration -EnableSMB2Protocol $false

Esto sirve tanto para la versión SMBv2 como para la versión SMBv3, de esta forma, no tendremos un comando específico para SMBv3 porque ya viene integrado en SMBv2, pero sí deberíamos verificar si el cifrado de datos está activado, una característica única en la última versión SMBv3:

Get-SmbServerConfiguration | Select EncryptData

Si nos indica «False» significa que el cifrado de datos no está habilitado, para habilitarlo, deberemos ejecutar el siguiente comando:

Set-SmbServerConfiguration -EncryptData $True

Debes asegurarte que el servidor remoto soporta SMBv3, de lo contrario, te dará error al intentar acceder a los recursos compartidos de cualquier servidor.

Importancia de mantener nuestro equipo actualizado

Siempre es bueno recordar la importancia de tener nuestro equipo totalmente actualizado. En muchas ocasiones pueden surgir vulnerabilidades que pueden ser aprovechadas para llevar a cabo infinidad de ataques. En el caso de Windows, lo más probable es que nos avise cuando hay una nueva actualización, pero siempre es recomendable acudir a Windows Update y buscar las actualizaciones de forma manual.

De este modo podremos descargar correcciones que llegan en forma de parches de seguridad tras detectar alguna anomalía en el sistema, y actualizaciones que nos pueden brindar nuevas funciones o mejorar el rendimiento de nuestro ordenador.

¡Sé el primero en comentar!