SMB (Server Message Block): definición, funciones y áreas de aplicación

Hoy en día, las redes de ordenadores forman parte de nuestra vida cotidiana. Tanto en los hogares como en las oficinas, la vinculación de todos los dispositivos técnicos en una red local común (como alternativa offline a Internet) suele ser un mero trámite. De este modo, los participantes de la red pueden intercambiar fácilmente archivos, administrar servidores o manejar dispositivos de red típicos, como impresoras o routers, mediante una conexión LAN o WLAN. Sin embargo, la comunicación entre los componentes individuales requiere unas convenciones claras, que se dan en forma de protocolos. Por ejemplo, uno de los protocolos de red más importantes y más antiguos es el protocolo SMB, que te describimos en detalle en este artículo.

¿Qué es SMB?

SMB (Server Message Block) es un protocolo cliente-servidor que controla el acceso a archivos y directorios enteros, así como a otros recursos de la red, como impresoras, routers o interfaces compartidas con la red. El protocolo SMB también sirve como base para el intercambio de información entre los diferentes procesos de un sistema (intercambio también conocido como comunicación entre procesos).

Aunque fue desarrollado ya en 1983 por el grupo de TI de IBM, en las últimas décadas se han publicado varias versiones e implementaciones del protocolo. Por ejemplo, el SMB se puso por primera vez a disposición del gran público con el sistema operativo de la red OS/2 LAN Manager y su sucesor, LAN Server. Desde entonces, este protocolo se ha utilizado sobre todo en los sucesivos sistemas operativos de Windows, cuyos servicios de red SMB son compatibles con las versiones anteriores, lo que permite que los dispositivos con ediciones más recientes se comuniquen fácilmente con dispositivos que tengan un sistema operativo de Microsoft más antiguo. Con el proyecto de software libre Samba existe también una solución que permite el uso de Server Message Block en distribuciones de Linux y de Unix, así como la comunicación entre plataformasmediante SMB.

Nota

En la implementación del protocolo SMB en Windows NT 4.0, Microsoft utilizó el nombre de Common Internet File System (CIFS), que a raíz de ello se utilizó inicialmente como sinónimo de la familia de protocolos SMB. Hoy en día, CIFS es como se suele llamar a la primera versión de SMB (SMB 1.0).

¿Cómo funciona SMB?

El protocolo Server Message Block permite al cliente comunicarse con otros participantes de la misma red para acceder a los archivos o servicios que se comparten en ella. Para que esto ocurra, el otro sistema también debe haber implementado el protocolo de red, para así recibir y procesar la solicitud del cliente respectivo utilizando una aplicación de servidor SMB. Sin embargo, ambas partes deben primero establecer una conexión, por lo que primero intercambian los mensajes con este fin. En las redes IP, SMB utiliza el Transmission Control Protocol (TCP) que emplea un triple apretón de manos (three-way handshake) entre cliente y servidor antes de establecer una conexión definitiva. El transporte posterior de los datos también está regulado por las especificaciones del protocolo TCP.

Nota

Hoy en día, el puerto TCP 445 está reservado para la conexión y la transmisión a través de TCP/SMB. Normalmente, en las redes la resolución de direcciones funciona a través del Domain Name System (DNS) o, en redes más pequeñas, a través de Link Local Multicast Name Resolution (LLMNR).

El protocolo SMB a lo largo de los años: resumen de las versiones

Como ya mencionamos, desde la primera vez que SMB salió al público en 1983, ha habido varias adaptaciones del estándar de red, que se han registrado en las distintas versiones de protocolo, desde SMB 1.0 hasta la versión actual SMB 3.1.1, que Microsoft lanzó junto con Windows 10. En este artículo resumimos los pasos más importantes en el desarrollo del protocolo Server Message Block.

SMB 1.0 (CIFS)

La primera versión del protocolo de comunicación en red se equipara con frecuencia a la modificación Sistema Común de Archivos de Internet (CIFS) ya mencionada. No obstante, esta última no es más que una parte de la primera edición del protocolo, concretamente, la aplicación del protocolo en dispositivos con Windows NT 4.0. En esta primera variante, todavía se proporcionaba una comunicación mediante la interfaz NetBIOS y los puertos UDP 137 (resolución de nombre) y 138 (transmisión de paquetes), así como a través del puerto TCP 139 (establecimiento de la conexión y transporte). Con Windows 2000, se eliminó la dependencia de NetBIOS, de modo que el protocolo, que pasó a ser designado oficialmente como SMB 1.0, ya permitía la conexión directa vía TCP (puerto 445), que se ha mantenido hasta hoy.

SMB 2.0

Microsoft lanzó la primera revisión importante de Server Message Block en noviembre de 2006, con el sistema operativo Windows Vista. Aunque el protocolo, que pasó a ser conocido como SMB 2.0 o 2, siguió siendo propietario, la compañía de software también publicó, por primera vez, las especificaciones para permitir que otros sistemas se comunicaran con los sistemas operativos de Windows. La segunda versión del protocolo trajo, entre otras, las siguientes novedades:

  • Reducción de los comandos y subcomandos de más de 100 a 19
  • Rendimiento optimizado con la nueva función de colas de solicitudes SMB
  • Soporte de enlaces simbólicos (enlaces a archivos o directorios)
  • Almacenamiento en caché de las propiedades de los archivos
  • Mejora de la firma de mensajes (algoritmo HMAC SHA-256)
  • Mayor escalabilidad gracias a un mayor número máximo de clientes, acciones y archivos abiertos a la vez

Por motivos de compatibilidad, se conservó la primera versión del protocolo, una medida que Microsoft también mantuvo en las versiones posteriores.

SMB 2.1

La versión 2.1 del protocolo SMB está estrechamente vinculada a Windows 7. La versión revisada de la segunda edición del protocolo se lanzó junto con el sistema operativo en 2007 y, además de algunas optimizaciones menores de rendimiento, introdujo nuevos mecanismos de bloqueo para mejorar la regulación del acceso a los archivos (lectura, escritura, eliminación, etc.).

SMB 3.0

Windows 8 se lanzó en 2012 y con el nuevo sistema operativo también se publicó una nueva versión de Server Message Block, inicialmente bajo el nombre SMB 2.2. No obstante, más tarde pasó a la denominación SMB 3.0, que sigue vigente hoy en día. Esta revisión del protocolo estaba diseñada para mejorar el rendimiento y la seguridad de las conexiones SMB, especialmente en los centros de datos virtualizados. Para esta mejora fueron decisivas las siguientes funciones:

  • Posibilidad de acceso remoto a la memoria mediante SMB a través de RDMA (Remote Direct Memory Access)
  • La función multicanal permite múltiples conexiones por sesión SMB
  • Protección contra fallos transparente
  • Cifrado de extremo a extremo
Nota

Con SMB 3.0.2, la tercera versión del protocolo se implementó en Windows 8.1 sin cambios significativos.

SMB 3.1.1

SMB 3.1.1 (lanzado con Windows 10 en 2015) amplía la serie de protocolos para incluir la comprobación de integridad antes de la autenticación basada en los valores hash SHA-512. Además, la versión utiliza el cifrado AES-128 con el modo Galois/Counter (GCM). SMB 3.1.1 requiere una conexión segura para todos los dispositivos con SMB 2.0 o superior.

Resumen en tabla de las versiones SMB

Versión SMB Soportada desde Nuevas funciones
CIFS Windows NT 4.0 Comunicación a través de la interfaz NetBIOS
SMB 1.0 Windows 2000 Conexión directa a través de TCP
SMB 2.0 Windows Vista, Windows Server 2008, Samba 3.5 Varias mejoras de rendimiento, firma de mensajes mejorada, función de caché para las propiedades de archivo
SMB 2.1 Windows 7, Windows Server 2008 R2 Mecanismos de bloqueo
SMB 3.0 Windows 8, Windows Server 2012,Samba 4.0 Conexiones multicanal, cifrado de extremo a extremo, acceso a almacenamiento remoto
SMB 3.0.2 Windows 8.1,Windows Server 2012 R2  
SMB 3.1.1 Windows 10, Windows Server 2016, Samba 4.3 Prueba de integridad, cifrado AES-128 con Galois/Counter Mode (GCM)

¿Qué aspectos de seguridad se deben tener en cuenta al utilizar SMB?

Microsoft se ha esforzado durante años para garantizar la compatibilidad de las versiones antiguas del Server Message Block con las nuevas versiones del sistema para asegurar la comunicación entre los dispositivos más antiguos y los más nuevos. Sin embargo, asegurar la compatibilidad conlleva, como siempre, un mayor riesgo de seguridad, ya que SMB 1.0 tiene numerosas debilidades en comparación con los otros protocolos. Una de ellas es que el sistema es vulnerable frente a ataques DoS.

En las redes, el peligro de un ataque basado en el protocolo SMB es particularmente alto. Por motivos de compatibilidad, en la red suelen estar activadas todas las versiones de SMB, porque así lo requieren las impresoras u otros dispositivos de red conectados. De este modo, aunque la versión antigua no se utilice realmente, esto pone la tarea fácil a los atacantes, ya que pueden bajar al nivel de comunicación SMB 1.0 y atacar el sistema deseado sin mayores obstáculos. Por esto, con Windows 10, Microsoft ha decidido activamente eliminar la compatibilidad con la primera versión o desinstalarla automáticamente cuando no esté en uso.

Consejo

Para ver cómo desactivar Server Message Block o alguna versión determinada del protocolo SMB en Windows 10 (o activar, si lo deseas), consulta nuestro artículo sobre cómo activar y desactivar SMB.

¿Dónde se emplea e implementa Server Message Block?

Los casos de uso más importantes de SMB ya se han descrito en este artículo: el aspecto más importante del protocolo es el acceso a los sistemas de archivos, por lo que el principal beneficio reside en las conexiones cliente-servidor entre los ordenadores y los servidores de archivos. No obstante, como otras secciones del protocolo están claramente orientadas a la comunicación entre procesos, el intercambio simple de datos entre dos dispositivos o dos procesos también forma parte del perfil de la aplicación.

Además de su integración en las diversas ediciones de Windows, Server Message Block también se ha integrado en muchos otros proyectos de software a lo largo de los años para que sus funciones de comunicación estén disponibles fuera de la familia Microsoft. Entre las implementaciones más famosas de SMB están las siguientes:

  • Samba: el proyecto de software Samba es probablemente el ejemplo más conocido de implementación SMB fuera de Windows. En 1991, el programador Andrew Tridgell comenzó a desarrollar software libre para permitir la comunicación mediante Server Message Block en sistemas Unix/Linux.
  • Netsmb: Netsmb es también una implementación de cliente y servidor SMB directamente en el núcleo de los sistemas operativos BSD. Publicado por primera vez para el sistema operativo FreeBSD 4.4, está ahora disponible para una variedad de sistemas BSD, incluyendo NetBSD y macOS.
  • YNQ: YNQ (anteriormente NQ) es una biblioteca SMB que implementa la tecnología de Server Message Block en sistemas embebidos sin Windows y permite la interoperabilidad con dispositivos basados en Windows. YNQ fue desarrollado en 1998 por la compañía israelí de software Visuality Systems Ltd.
  • FreeNAS: si quieres tener un servidor NAS propio que, entre otras cosas, sea compatible con el protocolo SMB, la solución de código abierto FreeNAS puede ser ideal para ti. El software de NAS está basado en FreeBSD y el sistema de archivos OpenZFS.
  • ConnectedNAS: el software ConnectedNAS de Connected Way es a la vez servidor y cliente SMB para dispositivos Android. Los usuarios de la aplicación de pago pueden intercambiar datos entre el dispositivo móvil u otros dispositivos SMB con facilidad, ya en el ámbito personal o en la empresa. Por motivos de seguridad, ConnectedNAS solo es compatible con SMB a partir de la versión 2.

Pon a punto tu negocio y termina el año con éxito
Hemos rebajado algunos de nuestros mejores productos para
ayudarte a aumentar las ventas en estas fiestas.
Ahorra hasta un 75%