Ya sea en casa o en la oficina, conectar todos los dispositivos tecnológicos dentro de una red local compartida (una alternativa fuera de línea a Internet) suele ser solo un tecnicismo gracias a las redes informáticas. Los participantes de la red pueden intercambiar archivos fácilmente a través de una conexión LAN o WLAN, administrar servidores o usar dispositivos de red típicos como impresoras o enrutadores. Sin embargo, para que la comunicación funcione entre componentes individuales, se requieren convenciones claras, que se proporcionan en forma de protocolos. Uno de los protocolos de red más importantes y antiguos, por ejemplo, es el protocolo SMB. Lo exploramos en detalle en este artículo.
¿En qué consiste el Protocolo SMB?
SMB (Server Message Block) es un protocolo cliente / servidor que gobierna el acceso a archivos y directorios completos, así como a otros recursos de red como impresoras, enrutadores o interfaces abiertas a la red. El intercambio de información entre los diferentes procesos de un sistema (también conocido como comunicación entre procesos) se puede manejar en base al protocolo SMB.
Desarrollado por el grupo de TI IBM en 1983, se han lanzado varias versiones del protocolo SMB durante las últimas décadas. SMB estuvo disponible para el público por primera vez como parte del sistema operativo de red OS / 2 LAN Manager y su sucesor LAN Server. Desde entonces, la principal aplicación del protocolo ha sido la serie de sistemas operativos Windows porque sus servicios de red son compatibles con SMB.
Esto permite que los dispositivos con ediciones más recientes se comuniquen fácilmente con dispositivos que tienen instalado un sistema operativo de Microsoft más antiguo. Además, el proyecto de software libre Samba ofrece una solución que permite el uso de Server Message Block en distribuciones Linux y Unix, permitiendo así comunicación multiplataforma a través de SMB.
Es un protocolo de red que permite a los usuarios comunicarse con computadoras y servidores remotos para usar sus recursos o compartir, abrir y editar archivos.
Como cualquier protocolo de intercambio de archivos de red, el protocolo SMB necesita puertos de red para comunicarse con otros sistemas. Originalmente, usaba el puerto 139 que permitía a las computadoras comunicarse en la misma red. Pero desde Windows 2000, SMB usa el puerto 445 y el protocolo de red TCP para «hablar» con otras computadoras a través de Internet.
Origen y evolución del Protocolo SMB
SMB fue creado originalmente por IBM y fue utilizado por Microsoft en su producto LAN Manager a mediados de la década de 1990. SMB 1.0 pasó a llamarse CIFS (Common Internet File System) y Microsoft envió algunas especificaciones parciales al IETF como borradores, aunque estos envíos han expirado desde entonces.
La implementación inicial de SMB / CIFS tuvo numerosos problemas que hicieron que SMB solo fuera adecuado para administrar archivos pequeños para los usuarios finales. El protocolo fallaba debido a que el rendimiento a distancia o cuando había latencia entre el cliente y el servidor no era bueno. Alrededor de esta época, el proyecto Samba se originó con el objetivo de aplicar ingeniería inversa al protocolo SMB / CIFS y crear un servidor SMB para permitir que los clientes MS-DOS accedan a archivos en máquinas Unix.
SMB 2.0
Microsoft lanzó SMB2 con Windows Vista en 2006. SMB2.0 tuvo un número significativo de mejoras con respecto a SMB 1.0, reduciendo en particular la «charla» del protocolo al reducir el número de comandos y subcomandos de cientos a diecinueve.
El término CIFS se vuelve redundante, ya que solo se aplica a la versión 1.0 de SMB
SMB2 admitió muchas otras mejoras, como el escalado de la ventana TCP y la aceleración de WAN, el bloqueo oportunista y una función conocida como «canalización» para permitir que varias solicitudes se pongan en cola al mismo tiempo.
Las mejoras de rendimiento implicaron permitir tamaños de bloque más grandes, mejorando así las transferencias de archivos grandes. Microsoft introdujo “identificadores de archivos duraderos” que permitían que la conexión a un servidor SMB sobreviviera a breves fallas de red que se ven con frecuencia en redes inalámbricas al permitir que los clientes se reconecten de manera transparente a los servidores.
Posteriormente, se lanzó SMB 2.1 con Windows 7 y Windows Server 2008 y tuvo pequeñas mejoras
SMB 3.0
Windows 8 se lanzó en 2012 y, con la nueva edición del sistema operativo de Microsoft, una nueva versión de Server Message Block. Inicialmente, esto se denominó SMB 2.2, pero luego se cambió a la designación SMB 3.0, que todavía se aplica en la actualidad. Esta revisión del protocolo también tenía como objetivo mejorar el rendimiento y la seguridad de las conexiones SMB, particularmente en los centros de datos virtualizados. Las siguientes características nuevas fueron clave para esta mejora:
- Posibilidad de acceso al almacenamiento remoto gracias a SMB a través de RDMA (Remote Direct Memory Access)
- La función multicanal permite la configuración de múltiples conexiones por sesión SMB
- Protección transparente contra fallas
- Encriptado de fin a fin
SMB 3.1.1
SMB 3.1.1 (publicado en 2015 con Windows 10) expandió la serie de protocolos con una verificación de integridad antes de la autenticación , basada en valores hash SHA-256. Además, el sistema utiliza cifrado AES-128 con Galois / Counter Mode (GCM). Para todos los dispositivos de comunicación con SMB 2.0 o superior, SMB 3.1.1 hace obligatoria una conexión segura.
Funciones
Así es como funciona el protocolo SMB.
El protocolo Server Message Block permite al cliente comunicarse con otros participantes en la misma red, lo que le permite acceder a archivos o servicios abiertos a él en la red. Para que esto funcione, el otro sistema también debe haber implementado el protocolo de red y recibir y procesar la solicitud del cliente respectivo utilizando una aplicación de servidor SMB.
Pero ambas partes deben establecer primero una conexión, por lo que primero intercambian los mensajes correspondientes. En las redes IP, SMB utiliza el Protocolo de control de transmisión (TCP) que proporciona un protocolo de enlace de tres vías entre el cliente y el servidor, antes de finalmente establecer una conexión. Transporte de datos posterior está regulado por las disposiciones del protocolo TCP.
El protocolo SMB crea una conexión entre el servidor y el cliente enviando múltiples mensajes de solicitud y respuesta de un lado a otro.
Imagina que tu equipo está trabajando en un gran proyecto que implica muchos intercambios. Es posible que desees poder compartir y editar archivos almacenados en un solo lugar. El protocolo SMB permitirá a los miembros de tu equipo utilizar estos archivos compartidos como si estuvieran en sus propios discos duros. Incluso si uno de ellos está en un viaje de negocios a medio mundo de distancia, aún puede acceder y utilizar los datos.
Supongamos que la impresora de tu oficina está conectada a la PC de los recepcionistas. Si deseas imprimir un documento, tu computadora (el cliente) envía a la computadora de los recepcionistas (el servidor) una solicitud para imprimirlo y usa el protocolo SMB para hacerlo. Luego, el servidor enviará una respuesta indicando que el archivo está en cola, impreso o que la impresora se quedó sin tinta y no puede realizar la tarea.
¿Dónde se integra el Server Message Block?
Los escenarios de aplicación más importantes para SMB ya se han presentado en este artículo. El punto clave del protocolo es el acceso a los sistemas de archivos, por lo que los principales beneficios se encuentran en las conexiones cliente / servidor entre computadoras y servidores de archivos. Dado que otras secciones del protocolo están claramente dirigidas a la comunicación entre procesos, sin embargo, el simple intercambio de datos entre dos dispositivos o dos procesos pertenece a su perfil de aplicación.
Además de las implementaciones de Server Message Block en las diversas ediciones de Windows, el protocolo se integró en muchos otros proyectos de software para permitir la comunicación más allá de la familia de Microsoft.
Las implementaciones de SMB más conocidas incluyen las siguientes:
- Samba: El proyecto de software Samba es probablemente el ejemplo más conocido de implementación de SMB más allá de Windows. En 1991, el programador Andrew Tridgell comenzó a desarrollar el software gratuito que permite la comunicación en sistemas Unix / Linux a través de Server Message Block.
- Netsmb: Netsmb se refiere a las implementaciones del cliente y servidor SMB directamente en el kernel de los sistemas operativos BSD. Se lanzaron por primera vez para OS FreeBSD 4.4, pero ahora están disponibles para una variedad de sistemas BSD, incluidos NetBSD y macOS.
- YNQ: YNQ (anteriormente NQ) es una biblioteca SMB que implementa la tecnología Server Message Block en sistemas integrados sin Windows y, por lo tanto, permite la interoperabilidad con dispositivos basados en Windows. YNQ ha sido desarrollado por la empresa de software israelí Visuality Systems Ltd. desde 1998.
- FreeNAS: Cualquiera que desee ejecutar su propio servidor NAS que admita el protocolo SMB, encontrará una solución adecuada en FreeNAS de código abierto. El software NAS se basa en FreeBSD y el sistema de archivos OpenZFS.
- ConnectedNAS: ConnectedNAS, software desarrollado por Connected Way, sirve como servidor y cliente SMB para dispositivos Android. Los usuarios de la aplicación de pago pueden intercambiar datos fácilmente entre el dispositivo móvil y otros dispositivos SMB, ya sea de forma privada o dentro de una empresa. Por razones de seguridad, ConnectedNAS solo admite SMB a partir de la versión 2.
Vulnerabilidades
SMB 1.0 tiene una serie de vulnerabilidades en comparación con los protocolos posteriores, que hacen que la computadora sea susceptible a ataques DoS, por ejemplo.
Especialmente en las redes, el riesgo de un ataque basado en SMB protocol es alto. Todas las versiones SMB suelen activarse por motivos de compatibilidad, ya que esto lo requieren las impresoras conectadas u otros dispositivos de red. Incluso si la versión del protocolo anterior prácticamente ya no se usa, sigue siendo un objetivo fácil para los atacantes que pueden cambiar la comunicación a SMB 1.0 y atacar el sistema de destino sin mayores obstáculos. Es por eso que con Windows 10, Microsoft decidió dejar de admitir activamente la primera versión y desactivarla automáticamente cuando no se usa.
Los investigadores de ciberseguridad descubrieron una nueva vulnerabilidad crítica que afecta al protocolo Server Message Block (SMB) que podría permitir a los atacantes filtrar la memoria del kernel de forma remota, y cuando se combina con un error «gusano» previamente revelado, la falla se puede aprovechar para lograr ataques de ejecución de código remoto.
Apodado » SMBleed » ( CVE-2020-1206 ) por la firma de ciberseguridad ZecOps, la falla reside en la función de descompresión de SMB, la misma función que con SMBGhost o el error EternalDarkness ( CVE-2020-0796 ), que salió a la luz hace tres meses, potencialmente abrir sistemas Windows vulnerables a ataques de malware que pueden propagarse a través de las redes.
Aunque Microsoft reveló y proporcionó actualizaciones para esta vulnerabilidad en marzo de 2020, los ciber actores malintencionados están apuntando a los sistemas sin parches con el nuevo PoC, según informes recientes de código abierto.
SMB, que se ejecuta en el puerto TCP 445, es un protocolo de red que proporciona la base para compartir archivos, navegar por la red, servicios de impresión y comunicación entre procesos a través de una red.
Otro fallo se debe a la forma en que la función de descompresión en cuestión (» Srv2DecompressData «) maneja solicitudes de mensajes especialmente diseñadas enviado a un servidor SMBv3 de destino, lo que permite a un atacante leer la memoria del kernel no inicializada y realizar modificaciones en la función de compresión.
Para mitigar la vulnerabilidad, se recomienda que los usuarios domésticos y comerciales instalen las últimas actualizaciones de Windows lo antes posible.
Para los sistemas donde el parche no es aplicable, se recomienda bloquear el puerto 445 para evitar el movimiento lateral y la explotación remota.
¿Cómo saber la versión SMB que tienes en Windows 10?
Usaremos los siguientes métodos para verificar qué versión de SMB está instalada en tu computadora:
Método PowerShell
Si deseas verificar qué versión de SMB estás ejecutando, simplemente escribe lo siguiente en el cmdlet para PowerShell:
- SMB v1 Windows 10 y Windows 8.1: Get-WindowsOptionalFeature –Online –FeatureName SMB1Protocol
- SMB v2 Windows 10 y Windows 8.1: Get-SmbServerConfiguration | Seleccione EnableSMB2Protocol
- SMB v1 Windows 7: Get-Item HKLM: \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters| Para cada objeto {Get-ItemProperty $ _. Pspath
- SMB v2 Windows 7:Get-ItemProperty HKLM: \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters | Para cada objeto {Get-ItemProperty $ _. Pspath}
Si devuelve el valor como Verdadero , está habilitado, de lo contrario está deshabilitado.
Método del editor del registro
Escriberegedit en Iniciar búsqueda y presione Entrar. Una vez que se abra el Editor del Registro, navegue hasta la siguiente tecla:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters
Ahora, si tienes los DWORD nombrados como SMB1 o SMB2, verifica sus datos de valor.
Si se establece en 0, está deshabilitado.
Y en cualquier otro caso, está habilitado.
Activar o desactivar el Protocolo SMB
En las instalaciones actuales de Windows 10, SMBv1 ya no se instala automáticamente como estándar. Pero si activas el protocolo manualmente o has actualizado una edición anterior de Windows, es recomendable deshabilitar la compatibilidad con la versión obsoleta del protocolo. Puedes realizar este paso a través del Panel de control, PowerShell o el Registro de Windows. La medida en que varía cada enfoque para activar y desactivar el protocolo se puede ver en la siguiente guía paso a paso.
Ajuste la compatibilidad con SMB1 a través del Panel de control de Windows 10
Si deseas habilitar o deshabilitar la compatibilidad con SMB / CFIS sin usar PowerShell en Windows, puedes realizar este paso a través del administrador de software del sistema operativo .
- Abre «Programas y características». Para hacerlo, abre el menú Inicio (icono de Windows) y luego el Panel de control. Allí encontrarás el botón » Programas y características «.
- Abre el menú para las funciones de Windows. En el menú de la izquierda, haz clic en » Activar o desactivar las funciones de Windows » para acceder al menú de administración de protocolos. Si deseas activar o desactivar las funciones de Windows y, por ejemplo, cambiar la configuración de SMB1 en Windows 10, siempre necesitarás derechos de administrador.
- Deshabilita la compatibilidad con el uso compartido de archivos SMB 1.0 / CFIS. Busca la entrada sobre compatibilidad con SMB Windows 10 y elimina la marca de verificación de la casilla correspondiente. Las tres subopciones también se desactivarán; se refieren a un cliente SMB, un servidor SMB y una función de eliminación automática. La última opción garantiza que SMBv1 se desactive automáticamente cuando no se utiliza la versión anterior del protocolo, lo que ya no es necesario en este caso.
- Confirma los cambios y reinicia el dispositivo. Finalmente, haz clic en » Aceptar » para deshabilitar SMB1 en Windows 10.
Deshabilita o habilita el protocolo SMB en Windows 10 a través de PowerShell
También puede administrar protocolos como Server Message Block en Windows 10 usando PowerShell, con el comando correcto. Al igual que ajustar la configuración a través del Panel de control, necesitará derechos de administrador, ya que Windows de lo contrario le negará el acceso a las opciones necesarias.
- Inicia PowerShell como administrador. Hay dos formas de hacer esto: Si está disponible en tu instalación de Windows 10, encontrarás el elemento de menú » Windows PowerShell (administrador) » en el menú de inicio rápido. Alternativamente, ingresa «PowerShell» en la barra de búsqueda de Windows, selecciona el resultado de la búsqueda con un clic derecho y luego haz clic en » Ejecutar como administrador «:
- Accede al estado actual de SMB1 en Windows 10. Después de iniciar PowerShell, compruebe si su instalación de Windows admite actualmente la comunicación a través de la versión anterior del protocolo. Puedes hacer esto escribiendo el siguiente comando y confirmándolo con la tecla [Enter]: Get-SmbServerConfiguration | Format-List EnableSMB1Protocol. Después de un breve tiempo de procesamiento, recibirás uno de los dos posibles valores de salida: Si PowerShell muestra el valor » Falso » para «EnableSMB1Protocol», SMBv1 está deshabilitado. Si el soporte está activo, el valor mostrado será » Verdadero «.
- Habilita o deshabilita SMBv1. Si tu sistema admite actualmente la versión obsoleta de SMB, debes desactivarla. El comando para hacer esto se muestra a continuación: Set-SmbServerConfiguration -EnableSMB1Protocol 0. PowerShell te preguntará si realmente deseas realizar esta acción. Para confirmar, escribe » Y » y presiona la tecla [Enter].
- Luego, reinicia Windows 10 para aplicar los cambios del sistema.
Alternativas a SMB
Una alternativa a SMB es CIFS. CIFS son las siglas de «Common Internet File System». CIFS es un dialecto de SMB. Es decir, CIFS es una implementación particular del protocolo Server Message Block, creado por Microsoft.
La mayoría de las personas, cuando usan SMB o CIFS, están hablando exactamente de lo mismo. Los dos son intercambiables no solo en una discusión sino también en la aplicación, es decir, un cliente que habla CIFS puede hablar con un servidor que habla SMB y viceversa. ¿Por qué? Porque CIFS es una forma de SMB.
Si bien son el mismo protocolo de nivel superior, todavía existen diferencias en la implementación y el ajuste del rendimiento (de ahí los diferentes nombres). Las implementaciones de protocolos como CIFS vs SMB a menudo manejan cosas como el bloqueo de archivos, el rendimiento en LAN / WAN y la modificación masiva de archivos de manera diferente.
La implementación de CIFS de SMB rara vez se usa en estos días. La mayoría de los sistemas de almacenamiento modernos ya no usan CIFS, usan SMB 2 o SMB 3. En el mundo de Windows, SMB 2 ha sido el estándar a partir de Windows Vista (2006) y SMB 3 es parte de Windows 8 y Windows Server 2012.
CIFS y SMB están lejos de la totalidad de los protocolos de intercambio de archivos y si estás trabajando para hacer que los sistemas heredados interoperen, es muy probable que también te encuentres con situaciones en las que otros sean necesarios. Otros dos protocolos importantes para compartir archivos que debes conocer son Samba y NFS.
Samba es una colección de diferentes aplicaciones que, cuando se usan juntas, permiten que un servidor Linux realice acciones de red como servicio de archivos, autenticación / autorización, resolución de nombres y servicios de impresión.
Al igual que CIFS, Samba implementa el protocolo SMB, que es lo que permite a los clientes de Windows acceder de forma transparente a directorios, impresoras y archivos de Linux en un servidor Samba.
Fundamentalmente, Samba permite que un servidor Linux actúe como controlador de dominio. Al hacerlo, las credenciales de usuario en el dominio de Windows se pueden usar en lugar de tener que volver a crearlas y luego mantenerlas sincronizadas manualmente en el servidor Linux.
El acrónimo NFS significa «Sistema de archivos de red». El protocolo NFS fue desarrollado por Sun Microsystems y tiene esencialmente el mismo propósito que SMB (es decir, acceder a sistemas de archivos a través de una red como si fueran locales), pero es totalmente incompatible con CIFS / SMB. Esto significa que los clientes NFS no pueden hablar directamente con los servidores SMB.
Debes utilizar NFS para las conexiones de cliente Linux dedicado a servidor Linux. Para entornos mixtos de Windows / Linux, utiliza Samba.