Saltar al contenido

El protocolo SMB (Server Message Block) es ampliamente utilizado para compartir archivos en redes locales. En 1998, Microsoft rebautizó este protocolo como CIFS (Common Internet File System). Desde entonces, se conoce como SMB/CIFS en muchos lugares. Las versiones más recientes de SMB/CIFS incluyen soporte para enlaces simbólicos y duros, tamaños de archivo más grandes y autenticación segura y transferencia de archivos con protocolos criptográficos. Samba es la implementación del protocolo SMB/CIFS para sistemas operativos basados en Linux y Unix, lo que garantiza la compatibilidad con los sistemas de Microsoft sin problemas. En este artículo, explicaremos cómo habilitar o deshabilitar los diferentes protocolos SMBv1, SMBv2 y SMBv3 en sistemas operativos Windows.

Características de SMB/CIFS en sus distintas versiones

SMB es un protocolo de red que permite compartir archivos, carpetas e impresoras entre diferentes sistemas operativos en una red local, como Windows, Linux, MacOS y sistemas operativos basados en Unix que admitan Samba. Este protocolo se encuentra en la capa de aplicación y utiliza el puerto TCP 445, lo que garantiza la confiabilidad de las transferencias de datos mediante la retransmisión en caso de problemas. A lo largo de su evolución, SMB/CIFS ha incorporado mejoras en el rendimiento y seguridad del protocolo. Sin embargo, no todos los servidores utilizan las versiones más recientes, lo que puede causar problemas al intentar conectarse a un servidor SMB local.

El acceso a los recursos de SMB/CIFS se puede realizar a través de diferentes métodos de autenticación, como usuarios locales, autenticación basada en servidor RADIUS o LDAP, y autenticación a través de Active Directory. A nivel de configuración, es posible evitar contraseñas nulas y crear cuentas de invitado para permitir el acceso a ciertos recursos sin autenticación. Otras características incluyen el soporte para atributos extendidos de OS/2 en recursos compartidos y el almacenamiento de atributos DOS en sistemas operativos de Microsoft. También se pueden establecer máscaras de creación de archivos y directorios para asignar permisos específicos a los archivos y carpetas creados.

En cuanto al rendimiento, es posible habilitar E/S asíncronas para lograr una mayor velocidad de lectura y escritura en los recursos compartidos de Samba, especialmente en archivos de gran tamaño. Al configurar un servidor SMB/CIFS, es crucial tener en cuenta la versión utilizada tanto en el servidor como en el cliente. Se pueden definir parámetros para establecer el protocolo máximo y mínimo admitido por el servidor, con el objetivo de proporcionar la mejor seguridad para los clientes. Por ejemplo, una configuración segura podría ser admitir únicamente el protocolo SMB3, aunque puede haber problemas de compatibilidad con clientes que solo admiten hasta SMB2. Por lo tanto, lo más común es permitir un rango mínimo de SMB2 y un rango máximo de SMB3.

SMB/CIFS versión 1

La primera versión de SMB fue lanzada en 1983 y utilizaba NetBIOS de Microsoft. Sin embargo, en versiones posteriores se dejó de utilizar NetBIOS. Aunque todas las versiones antiguas de Windows utilizan SMBv1, las versiones más nuevas de Windows 10 y Windows Server no lo incluyen de forma predeterminada debido a preocupaciones de seguridad. Algunos routers todavía pueden usar esta versión en sus servidores SMB/CIFS, pero en la mayoría de los casos, esto depende del fabricante. Si se utiliza un firmware de terceros, como OpenWRT o DD-WRT, es posible deshabilitar SMBv1 y activar las versiones más recientes compatibles.

SMB/CIFS versión 2

La versión SMBv2 fue lanzada por Microsoft en 2006 con Windows Vista y Windows Server 2008. Aunque es un protocolo privado, se ha publicado su especificación para permitir que programas como Samba lo utilicen, lo que garantiza la interoperabilidad entre diferentes sistemas operativos. De lo contrario, solo los sistemas operativos Windows podrían intercambiar información entre ellos.

La segunda versión del SMB, conocida como SMB2, representa un importante avance en términos de funcionamiento y seguridad. Esta nueva versión reduce la complejidad de la conexión en comparación con SMB1.0 al reducir la cantidad de comandos y subcomandos. Además, permite enviar solicitudes adicionales antes de recibir una respuesta a una solicitud anterior, lo que ahorra tiempo y mejora la velocidad de transferencia, especialmente en conexiones con alta latencia. Otra característica destacada es la capacidad de combinar múltiples acciones en una sola solicitud, lo que reduce la cantidad de información intercambiada. Para evitar reconexiones desde cero después de una breve interrupción en la red, SMB2.0 incorpora identificadores que facilitan la continuidad de la comunicación.

La versión SMB 2.0 también ofrece soporte para enlaces simbólicos, almacenamiento en caché, firma de mensajes con HMAC-SHA256 y una mayor escalabilidad para acomodar a múltiples usuarios concurrentes en el mismo servidor. A diferencia de SMBv1, que utiliza tamaños de datos de 16 bits y un límite máximo de tamaño de bloque de 64K, SMB2 utiliza tamaños de datos de 32 o 64 bits, lo cual permite una transferencia más rápida de archivos grandes en redes de alta velocidad como Gigabit, Multigigabit o 10G.

En RedesZone hemos logrado alcanzar velocidades de transferencia de 1.2GB/s en una red 10G utilizando SMB2. Para ello, utilizamos un servidor NAS QNAP TS-1277 con almacenamiento SSD y un PC de origen también equipado con almacenamiento SSD. Es importante destacar que los discos duros tradicionales no son capaces de alcanzar estas velocidades a menos que se utilicen ciertos sistemas RAID con múltiples discos.

Windows Vista y versiones posteriores, así como Windows Server 2008 y versiones posteriores, utilizan SMB2 de forma predeterminada. Sin embargo, es posible que aún encuentres equipos con SMB1, en cuyo caso deberás habilitarlo específicamente para conectarte a servidores antiguos. Por último, la versión SMB 2.1, introducida en Windows 7 y Windows Server 2008 R2, mejoró aún más el rendimiento con un nuevo mecanismo de bloqueo oportunista.

Versión 3 de SMB/CIFS

La versión SMB 3.0, anteriormente conocida como SMB 2.2, se introdujo con Windows 8 y Windows Server 2012 y presenta cambios importantes enfocados en agregar funciones nuevas y mejorar el rendimiento de SMB2 en centros de datos virtualizados. Algunos de los cambios introducidos incluyen:

  • SMB Direct Protocol: Permite el uso de SMB sobre acceso directo a memoria remota (RDMA), lo que mejora significativamente el rendimiento en servidores que cuentan con esta versión.
  • Multicanal SMB: Esta característica permite realizar múltiples conexiones por sesión de SMB para maximizar las comunicaciones y aprovechar al máximo la red local en la que se encuentra el servidor y los clientes.
  • Conmutación por error completamente transparente.

No obstante, la característica más destacada es la autenticación de usuarios en SMB, que ahora se realiza de forma totalmente cifrada. Anteriormente, la autenticación se realizaba siempre en texto plano, lo que permitía que un usuario malintencionado pudiera capturar las credenciales utilizando un sniffer de red. Gracias a esta mejora, la autenticación se realiza de manera segura. Además, se ha añadido la opción de utilizar cifrado de extremo a extremo con AES para proteger las transferencias de archivos y carpetas. En resumen, con SMB 3.0 se tienen dos opciones de configuración:

  • Autenticación segura con cifrado y transferencia de archivos y carpetas sin cifrar.
  • Autenticación e intercambio de archivos y carpetas con cifrado simétrico, lo cual proporciona la máxima seguridad pero puede afectar el rendimiento.

Es importante tener en cuenta que si el servidor SMB no admite la tecnología AES-NI en su procesador, es probable que el rendimiento de transferencia de archivos y carpetas sea bajo. Por lo tanto, es recomendable utilizar un procesador potente que cuente con un motor de cifrado por hardware. La mayoría de los procesadores fabricados a partir del año 2015 aproximadamente ya incluyen esta tecnología, pero es importante verificar las especificaciones técnicas del procesador.

Además de la versión SMB 3.0, también se introdujo la versión SMB 3.0.2 en Windows 8.1 y Windows Server 2012 R2 con el fin de mejorar las funcionalidades y el rendimiento del protocolo. Además, en estos sistemas operativos es posible deshabilitar la versión SMB 1.0 para aumentar la seguridad, ya que los clientes pueden negociar qué versión de SMB utilizar al establecer la conexión.

Por otro lado, Microsoft ha lanzado la versión SMB 3.1.1 en Windows 10 y en Windows Server 2016 y versiones posteriores. Esta actualización incluye el cifrado simétrico AES-128-GCM, lo que garantiza una mayor seguridad y un mejor rendimiento en las operaciones de lectura y escritura. También ofrece la opción de configurar el modo de cifrado CCM y utiliza un hash SHA2-512 para la verificación de integridad, lo cual es considerado uno de los métodos más seguros en la actualidad. Además, esta versión SMB 3.1.1 obliga a que la negociación entre clientes utilizando SMB 2.0 o superior se haga con autenticación y cifrado.

Ventajas y desventajas

Como sucede con la mayoría de los protocolos informáticos, el protocolo SMB tiene sus ventajas y desventajas. Algunas de las ventajas más destacadas son:

  • Mejora el soporte para compartir archivos, lo que facilita la colaboración entre diferentes clientes y servidores.
  • Permite el acceso a los recursos compartidos de clientes CIFS, incluso en sistemas operativos que no son de Microsoft.
  • Ofrece dos niveles de seguridad para la autenticación y los recursos compartidos del protocolo.

Por otro lado, una de las principales desventajas del protocolo SMB es que no proporciona encriptación en la capa de transporte, lo que significa que los archivos que se transfieren a través de la red no están protegidos.

Vulnerabilidades del protocolo

Los protocolos SMB pueden presentar vulnerabilidades que los atacantes pueden aprovechar para obtener acceso no autorizado a sistemas y datos sensibles. La versión SMBv1 es la más antigua y ha sido conocida por tener múltiples vulnerabilidades. En 2017, el ransomware WannaCry explotó una vulnerabilidad de SMBv1 para propagarse rápidamente por redes de todo el mundo. Desde entonces, se recomienda desactivar SMBv1 siempre que sea posible para reducir el riesgo de ataques similares.

Si bien SMBv2, introducido en Windows Vista, mejoró la seguridad del protocolo, aún se han descubierto algunas vulnerabilidades. Por ejemplo, en 2017 se encontró una vulnerabilidad en SMBv2 que permitía a los atacantes ejecutar código malicioso en sistemas remotos. Por su parte, SMBv3, la versión más reciente, incluye numerosas mejoras de seguridad, como la encriptación de extremo a extremo. Sin embargo, aún existen vulnerabilidades que pueden ser aprovechadas por los atacantes. En 2020, se descubrió una vulnerabilidad llamada SMBGhost en SMBv3 que permitía a los atacantes tomar el control total de sistemas remotos.

Para protegerse de las vulnerabilidades del protocolo SMB, se recomienda desactivar SMBv1 siempre que sea posible y aplicar las actualizaciones de seguridad más recientes para SMBv2 y SMBv3. Además, es recomendable implementar otras medidas de seguridad, como la segmentación de la red y el uso de firewalls para limitar el acceso a sistemas vulnerables.

En resumen, es crucial tener en consideración las vulnerabilidades de los protocolos SMB y tomar medidas para salvaguardarse frente a posibles ataques. La utilización de versiones más recientes del protocolo y la implementación de medidas de seguridad adicionales pueden ayudar a disminuir el riesgo de comprometer la seguridad y proteger información valiosa de la empresa u organización que utilice este tipo de protocolos. La seguridad es esencial en este aspecto.

Funcionamiento del protocolo SMB

  • Petición de Sesión NetBIOS: Su finalidad es establecer una sesión confiable para la transmisión de mensajes entre clientes y servidores.
  • Respuesta de la sesión NetBIOS: Si no hay ningún error, el servidor enviará un mensaje ACK para aceptar la conexión.
  • Petición de dialecto SMB: El cliente envía un mensaje indicando los dialectos que el protocolo SMB soporta.
  • Respuesta al dialecto SMB: El servidor responde con el dialecto que prefiere. Si no puede utilizar ninguno, mostrará un mensaje de error.
  • Petición de Inicio de Sesión: El cliente envía las credenciales con las que desea conectarse al servidor.
  • Respuesta al Inicio de Sesión: El servidor verifica las credenciales. Si son correctas, el servidor verificará si el cliente tiene los permisos necesarios para conectarse. Si es así, aceptará la conexión y creará 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 al que desea acceder.
  • Respuesta a la conexión del recurso: Si el recurso existe, el servidor concede el acceso mediante un identificador. Este se utilizará en futuras conexiones del cliente a ese recurso específico.

Habilitar o deshabilitar los distintos protocolos SMB en Windows

En la actualidad, si se utilizan las últimas versiones del sistema operativo Windows, la versión SMB 1.0 se encuentra desactivada de manera predeterminada por razones de seguridad, ya que actualmente se considera un protocolo inseguro. Es necesario utilizar SMB 2.0 o versiones superiores para evitar problemas de seguridad. Sin embargo, es recomendable comprobar si los diferentes protocolos están habilitados o deshabilitados.

A continuación, se explicará cómo detectar, deshabilitar o habilitar las distintas versiones de Samba. Para empezar, se debe presionar la tecla «Windows» y luego buscar «Powershell», hacer clic derecho y seleccionar «Ejecutar como administrador».

SMBv1 tanto para el cliente como para el servidor

Si se desea habilitar o deshabilitar el soporte para SMBv1 en el equipo, primero se debe verificar si está activado o desactivado.

Para habilitar el protocolo SMBv1 (no se recomienda por razones de seguridad), se debe ingresar:

Si se desea habilitar este protocolo tanto para el cliente como para el servidor, se puede hacer a través de la interfaz gráfica de usuario de Windows 10. Para ello, se debe acceder al panel de control, se puede hacer clic en el botón de «Inicio», buscar «Panel de control» en la barra de búsqueda y seleccionar el icono correspondiente para ingresar a esta área de configuración.

En la columna izquierda, podemos hacer clic en la sección de «Programas» y luego hacer clic en «Activar o desactivar las características de Windows» para acceder a esta sección. La siguiente captura muestra cómo aparecería:

Si no encuentras esa opción, siempre puedes ingresar al «Panel de control» y en la parte superior derecha de la barra de búsqueda, ingresar «características de Windows» y te sugerirá automáticamente esta opción, por lo que no te perderás.

Una vez que despleguemos esta opción, debemos buscar en la lista 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 deseemos, ya sea el cliente SMB 1.0, el servidor SMB 1.0 o ambas opciones, según nuestras necesidades:

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

Para deshabilitar el protocolo, puedes utilizar el siguiente comando en Powershell:

Si deseas deshabilitarlo a través de la interfaz gráfica de usuario, simplemente debemos seguir los mismos pasos que para activarlo, pero en este caso, desmarcaremos la selección de cliente SMB 1.0 y servidor SMB 1.0, hacemos clic en «Aceptar» y reiniciamos el ordenador nuevamente. Ahora tendremos esta funcionalidad desactivada por seguridad. Como has visto, este protocolo está deshabilitado de manera predeterminada en las últimas versiones de Windows.

SMBv2/SMB3 tanto para cliente como para servidor

Si deseamos habilitar o deshabilitar el soporte para SMBv2 o SMBv3 en nuestro equipo, primero debemos verificar si está activado o desactivado.

Esto se aplica tanto a la versión SMBv2 como a la versión SMBv3. No hay un comando específico para SMBv3, ya que está integrado en SMBv2, pero debemos verificar si el cifrado de datos está activado, una característica única de la última versión SMBv3:

En caso de que el valor indicado sea «False», significa que el cifrado de datos no está activado. Para habilitarlo, es necesario ejecutar el siguiente comando:

Es importante verificar si el servidor remoto es compatible con SMBv3, ya que de lo contrario, se producirá un error al intentar acceder a los recursos compartidos de cualquier servidor.

La importancia de mantener nuestro equipo actualizado

Siempre es fundamental tener nuestro equipo actualizado. En múltiples ocasiones pueden surgir vulnerabilidades que pueden ser aprovechadas para llevar a cabo diversos tipos de ataques. En el caso de Windows, es probable que se nos notifique cuando haya una nueva actualización, pero es recomendable revisar manualmente en Windows Update en busca de actualizaciones.

De esta manera, podremos descargar correcciones en forma de parches de seguridad una vez que se haya detectado alguna anomalía en el sistema, así como actualizaciones que brinden nuevas funcionalidades o mejoren el rendimiento de nuestro ordenador.

¿Por qué están desactivados los protocolos SMB 1.0 y 2.0?

Microsoft tomó la decisión de desactivar por defecto los protocolos SMB 1.0 y SMB 2.0. Aunque es posible activarlos y desactivarlos fácilmente en Windows, es posible que surja la pregunta sobre la razón por la cual dejaron de estar activados de manera predeterminada. Como se puede sospechar, la seguridad es la principal motivación.

El protocolo SMB o Server Message Block se utiliza para compartir archivos, impresoras y otros recursos de manera sencilla dentro de una red. Sin embargo, también ha sido utilizado por los piratas informáticos para llevar a cabo ataques. Uno de los ejemplos más conocidos es el malware WannaCry, el cual explotó la vulnerabilidad EternalBlue, presente en el protocolo SMB 1.0. Esto resultó en numerosos problemas de seguridad a nivel mundial, afectando a diversas organizaciones y usuarios domésticos. Fue uno de los principales problemas de ciberseguridad en esa fecha y, como resultado, se implementaron cambios y precauciones para evitar que vuelva a ocurrir algo similar.

Esto fue lo que llevó a Microsoft a desactivar de manera predeterminada estos protocolos obsoletos y antiguos. Sin embargo, como se puede observar, es posible activarlos en caso de necesidad. Al menos, no estarán activados para todos los usuarios y no podrán ser utilizados por los piratas informáticos en caso de que surjan vulnerabilidades o los usuarios no actualicen el sistema para solucionar problemas.

Si estás utilizando un equipo moderno y actualizado, es probable que los protocolos SMB 1.0 y 2.0 ya estén desactivados de manera predeterminada. De hecho, esto ocurre desde la actualización de Windows 10 de abril de 2018. A partir de ese momento, todas las versiones del sistema operativo de Microsoft incluyen este cambio. No se recomienda activarlos, pero siempre tendrás la opción en caso de que necesites utilizar estos protocolos por algún motivo.

Artículos relacionados