CIFS: definición, funcionamiento y usos

Para poder conectarnos a Internet, mandar o recibir archivos, es imprescindible que haya una serie de protocolos para que esto sea posible. En este artículo hablaremos de uno de esos protocolos: CIFS. Explicaremos qué es, cómo funciona, para qué se usa y si es seguro.

¿Qué es CIFS?

CIFS (Sistema común de archivos de Internet) es un protocolo de red que permite a los clientes comunicarse con servidores y acceder a servicios de impresión y uso compartido de archivos como si estuvieran almacenados localmente.

El protocolo CIFS es una implementación particular, o dialecto, del protocolo de intercambio de archivos SMB (Server Message Block). El protocolo Server Message Block fue lanzado por IBM en 1983 y desde entonces ha sufrido varias modificaciones en su funcionalidad por parte de Microsoft.

A menudo hay confusión entre los términos «CIFS» y «SMB» porque los términos a menudo se usan indistintamente, pero hay una diferencia entre CIFS y SMB. CIFS (a veces llamado «CIFS/SMB») en realidad se refiere a un dialecto específico de SMB y no al protocolo SMB en general.

En su apogeo, CIFS fue compatible con sistemas operativos (SO) como Windows, Linux y Unix. CIFS usó el modelo de programación cliente-servidor en el que un programa cliente realiza una solicitud a un programa servidor, generalmente en otra computadora, para acceder a un archivo o pasar un mensaje a un programa que se ejecuta en la computadora servidor. El servidor realiza la acción solicitada y devuelve una respuesta.

CIFS ahora se considera obsoleto, porque la mayoría de los sistemas de almacenamiento de datos modernos utilizan los protocolos de uso compartido de archivos Server Message Block (SMB) 2.0 y 3.0 más sólidos, que fueron actualizaciones importantes de CIFS.

CIFS/SMB y el Sistema de archivos de red (NFS) son los dos protocolos principales que se utilizan en los sistemas de almacenamiento conectado a la red (NAS).

¿Cómo funciona?

El protocolo CIFS permite compartir archivos (o compartir CIFS) entre computadoras en una red. CIFS opera a través de NetBIOS sobre el protocolo TCP/IP, principalmente en versiones anteriores de Windows y una variedad de sistemas de almacenamiento conectado a la red (NAS).

También puede funcionar con otros protocolos, incluido el Protocolo de transferencia de archivos (FTP) y el Protocolo de transferencia de hipertexto (HTTP).

CIFS funciona a través de un modelo cliente-servidor, definido por tres entidades principales: un Cliente, un Servidor y una Aplicación, a través de los cuales el cliente puede acceder a los servicios de CIFS.

El modelo cliente-servidor de CIFS funciona de la siguiente manera:

  • El cliente envía una solicitud al servidor.
  • El servidor completa la solicitud.
  • El servidor responde al cliente.

El primer paso para acceder a un recurso compartido es que el cliente establezca una sesión NetBIOS con el servidor (utilizando una sesión TCP dúplex completa a través del puerto 139). Los mensajes CIFS se pueden transmitir a través de esta sesión.

Con la sesión de NetBIOS en su lugar, el cliente y el servidor realizan un proceso de negociación en el que determinan qué dialecto se utilizará. Este proceso de negociación lo inicia el cliente mediante el comando SMB_COM_Negotiate. Este comando transmite efectivamente al servidor una lista de los dialectos que el cliente entiende. El servidor responde con el dialecto que utilizará. Este dialecto debe ser compatible tanto con el cliente como con el servidor.

Una vez que el cliente y el servidor acuerdan un dialecto, el cliente transmite las credenciales de autenticación (generalmente un nombre de usuario y una contraseña) al servidor y se le proporciona un Identificador único (UID). Cuando el cliente transmite sus credenciales de autenticación, también envía una lista de sus capacidades. Como tal, este paso es necesario incluso si el servidor no requiere autenticación.

En los sistemas modernos, el proceso de autenticación generalmente lo maneja Active Directory. Sin embargo, la autenticación no es una función directa del protocolo CIFS. Como tal, también podrían usarse otros mecanismos de autenticación, como RADIUS. Vale la pena señalar que CIFS también se puede usar para compartir archivos en un entorno de grupo de trabajo. Dado que un grupo de trabajo carece de un mecanismo de autenticación centralizado, el proceso de autenticación utilizaría cuentas de usuario locales en las computadoras del grupo de trabajo.

Si la autenticación es exitosa, el servidor devuelve el UID asignado al cliente. Ahora, el cliente transmite el nombre de la Convención de nomenclatura universal (UNC) del recurso compartido al que desea adjuntar. El servidor comprueba que el nombre del recurso compartido sea válido y que el cliente tenga los permisos necesarios. Si estas comprobaciones tienen éxito, se otorga acceso al cliente al recurso compartido y, a continuación, puede comenzar a solicitar acceso a los recursos dentro del recurso compartido, como archivos y carpetas.

Características

Microsoft describe las características principales de CIFS como las que se enumeran a continuación.

  • Independencia del transporte: CIFS no tiene requisitos para el protocolo de transporte que pasa mensajes entre el cliente y el servidor. El protocolo generalmente se transporta a través de un protocolo orientado a la conexión y también puede operar a través de protocolos sin conexión.
  • Conectividad flexible: una sola puede hacer múltiples conexiones a través de múltiples servidores.
  • Negociación de funciones: el dialecto CIFS y el conjunto de funciones admitidas se negocian por conexión.
  • Acceso a recursos: los clientes CIFS tienen acceso simultáneo a recursos compartidos como archivos, canalizaciones con nombre y señales de impresión en el servidor de destino.
  • Contextos de seguridad : si es necesario, los clientes pueden crear más de un contexto de seguridad sobre su conexión.
  • Acceso a archivos: como el servidor administra el uso compartido de archivos, varios clientes pueden acceder al mismo archivo al mismo tiempo.
  • Subprotocolos extendidos: CIFS se puede usar junto con un conjunto de protocolos que permiten una funcionalidad de servidor mejorada.
  • Comunicación entre procesos de canalización con nombre: los clientes pueden acceder a canalizaciones con nombre, que actúan como una línea de comunicación entre el cliente y el servidor.
  • Bloqueo de archivos y registros, y almacenamiento en caché seguro: los clientes pueden almacenar datos en caché a través del bloqueo oportunista, lo que mejora el rendimiento de la red. El protocolo también admite el bloqueo de archivos y registros.
  • Atributos de archivos, directorios y volúmenes: la especificación CIFS permite a los clientes consultar y establecer atributos de archivos, directorios y volúmenes. CIFS también tiene compatibilidad con listas de control de acceso (ACL).
  • Notificación de cambio de archivo y directorio: los clientes pueden solicitar una notificación cuando se realizan cambios en un archivo dentro de un directorio de servidor o árbol de directorios.
  • Comandos por lotes: los mensajes de CIFS AndX se pueden encadenar y ejecutar en secuencia en el servidor, evitando múltiples mensajes de ida y vuelta.
  • Compatibilidad con el sistema de archivos distribuido (DFS): DFS permite la nomenclatura de objetos uniforme en diferentes servidores y recursos compartidos.
  • Transporte de llamada a procedimiento remoto (RPC): CIFS proporciona autenticación de transporte a través de protocolos RPC, como RPC [MS-RPCE] y RAP [MS-RAP].
  • Verificación de mensajes: CFES utiliza la firma de mensajes para evitar que los mensajes se modifiquen en tránsito.
  • Compatibilidad con nombres de archivos Unicode: CIFS amplía la compatibilidad con juegos de caracteres ASCII y nombres largos de archivos Unicode.

Usos

CIFS es una versión anterior del protocolo SMB que facilita el uso compartido de archivos entre clientes de Microsoft Windows, por ejemplo, a través de Windows For Workgroups. SMB se diseñó originalmente para permitir a los clientes leer y escribir archivos de forma remota a través de una red de área local (LAN).

Los clientes también pueden usar Samba para configurar CIFS en otros sistemas operativos, como Linux y Unix.

Samba permite compartir archivos y servicios de impresión, autenticación y autorización, resolución de nombres (como DNS) y anuncios de servicio entre servidores Linux/Unix y clientes Windows.

Los usuarios de CIFS pueden usar Samba para comunicarse entre los recursos compartidos de archivos OS X y Windows de Apple.

CIFS también es compatible con Windows Server Domain, Active Directory y Windows NT.

CIFS frente a NFS

Desarrollado por Sun Microsystems en la década de 1980, NFS ahora es administrado por el Grupo de Trabajo de Ingeniería de Internet (IETF). NFS se usó originalmente más en los sistemas operativos Unix y Linux, mientras que CIFS y SMB se usaron para Windows, pero la mayoría de los principales proveedores de NAS ahora admiten ambos protocolos.

NFS es una aplicación cliente-servidor que permite compartir archivos de forma transparente entre servidores, equipos de escritorio, portátiles y otros dispositivos. Usando NFS, los usuarios pueden almacenar, ver y actualizar archivos de forma remota como si estuvieran en su propia computadora. Con CIFS/SMB, un programa cliente solicita un archivo de un programa de servidor ubicado en otra computadora y el servidor responde. Esto hace que CIFS sea un protocolo más hablador que NFS.

CIFS frente a SMB 2.0, 3.0

El protocolo de red de capa de aplicación SMB existe desde la década de 1980. Desarrollado en IBM, SMB permitió que las computadoras leyeran y escribieran archivos a través de una red de área local. Aunque CIFS y SMB a menudo se usan indistintamente, Microsoft introdujo el protocolo CIFS en los primeros sistemas operativos Windows como una versión actualizada de SMB.

CIFS utilizaba el protocolo TCP/IP de Internet y se consideraba un complemento de los protocolos de aplicación de Internet existentes, como el Protocolo de transferencia de archivos (FTP) y el Protocolo de transferencia de hipertexto (HTTP). Sin embargo, CIFS se consideraba un protocolo hablador que tenía errores y problemas con la latencia de la red. El protocolo también era difícil de mantener y no muy seguro debido a la gran cantidad de comandos y subcomandos que procesaba. Fue reemplazado cuando Microsoft introdujo SMB en Windows 2000, Windows XP, Windows Server 2003 y Windows Server 2003 R2. Las versiones actualizadas del protocolo se utilizaron posteriormente en Windows Vista, Windows Server 2008, Windows 7 y Windows Server 2008.

Las principales diferencias de funcionalidad entre CIFS y los dialectos SMB más nuevos se enumeran a continuación.

Rendimiento de la red

CIFS es ampliamente conocido por su charlatanería que creó problemas de rendimiento e ineficiencias en la red.

Entre otras mejoras, como el almacenamiento en caché y un mayor tamaño de almacenamiento, SMB 2.0 agregó soporte para la aceleración de red de área amplia (WAN).

La versión 3.0 introdujo SMB multicanal, reduciendo la latencia y mejorando la eficiencia y el rendimiento de la red.

Usabilidad

CIFS requiere el uso de cientos de instrucciones y subcomandos para transferir archivos, lo que crea fricciones para los usuarios. SMB mejoró la practicidad y la simplicidad al reducir estos comandos a solo diecinueve.

Mecanismos de Seguridad

CIFS es una implementación no segura de SMB: su falta de cifrado lo ha visto explotado a través de malware como NotPetya y el ataque de ransomware WannaCry , que ocurrió a través de EternalBlue, un exploit de día cero.

SMB 2.0.2 vino con integridad de autenticación previa y no es vulnerable a NotPetya y WannaCry.

SMB 3.0 introdujo el código de autenticación de mensajes basado en cifrado (CMAC) del estándar de cifrado avanzado (AES) del algoritmo de cifrado. Esta adición ha ayudado a reducir la exposición del protocolo a los riesgos de seguridad cibernética, como los ataques de intermediarios, al proteger los datos confidenciales en tránsito.

¿Es seguro CIFS?

CIFS es una implementación no segura de SMB: su falta de encriptación lo ha visto explotado a través de malware como NotPetya y el ataque de ransomware WannaCry, que ocurrió a través de un exploit de día cero llamado EternalBlue.

Las versiones más recientes del protocolo SMB son más seguras y funcionan mejor que CIFS. Las principales actualizaciones de SMB se enumeran a continuación.

  • SMB 2.0: Lanzado con Windows Vista en 2006. La especificación 2.0 incluye funciones adicionales, como soporte de aceleración de red de área amplia (WAN) y reducción de la latencia cliente-servidor, es decir, la «conversación» del SMB/CIFS original.
  • SMB 2.1: Presentado con Windows 7 y Server 2008 R2, lo que brinda una mayor eficiencia para el almacenamiento en caché y el rendimiento.
  • SMB 3.0: salió con Windows 8 en 2012, con muchos cambios. Las actualizaciones notables incluyen un algoritmo de cifrado más fuerte, SMB multicanal para facilitar múltiples conexiones en sesiones SMB, SMB directo para permitir el tráfico SMB 3 a través de RDMA.
  • SMB 3.02: lanzado con Windows 8.1 y Windows Server 2012 R2 en 2014, agregando la capacidad de deshabilitar SMB 1.0.
  • SMB 3.1.1: Presentado en 2015 con Windows 10 y Windows Server 2016, agrega muchas mejoras de seguridad, como un cifrado más sólido, verificación de sesión y protección contra ataques de intermediarios. Como la última versión de SMB, se recomienda a los usuarios que utilicen la versión 3.1.1.

¿Debo usar CIFS o SMB?

La mayoría de los sistemas de almacenamiento modernos utilizan SMB 2.0, 3.0 o superior. Microsoft recomienda encarecidamente a los usuarios que deshabiliten CIFS/SMB1 a pesar de los problemas de compatibilidad que esto puede causar entre dispositivos y software antiguos.

CIFS tiene un rendimiento de red deficiente y falta de funcionalidad en comparación con sus sucesores SMB. Los usuarios también deben evitar CIFS debido a sus deficientes medidas de ciberseguridad, es decir, su falta de cifrado.

Las principales actualizaciones de SMB llegaron con el lanzamiento de SMB 2.0 junto con Windows Vista en 2006, seguido de SMB 3.0 con Windows 8 y Windows Server 2012. Poco después, el lanzamiento de SMB 3.0.2 permitió a los usuarios desactivar SMB1 para mejorar la seguridad. Estos lanzamientos consolidaron aún más a CIFS como obsoleto.

Los usuarios deben actualizar a la última versión de SMB, 3.1.1 (lanzada con Windows Server 2016 y Windows 10), para acceder al mayor rendimiento, seguridad y escalabilidad.

Cómo configurar CIFS para Windows

El protocolo CIFS es totalmente compatible con Windows 10, pero el uso compartido de CIFS está deshabilitado de manera predeterminada (aunque Windows 10 está configurado de manera predeterminada para actuar como un cliente CIFS). SMB es el protocolo de uso compartido de archivos preferido de Microsoft y reemplaza a CIFS, por lo que es poco probable que la mayoría de los administradores necesiten habilitar completamente el protocolo CIFS. Aun así, el protocolo está disponible para su uso si es necesario. Así es como funciona el proceso de configuración.

Para habilitar el protocolo CIFS, ingresa el comando Control en el indicador Ejecutar de Windows. Esto hará que Windows abra el Panel de control. A continuación, haz clic en Programas y, a continuación, en el enlace Activar o desactivar características de Windows. Esto hará que Windows muestre un cuadro de diálogo dentro del cual se pueden habilitar o deshabilitar funciones seleccionando la casilla de verificación correspondiente.

Desplázate por la lista de funciones hasta que encuentres SMB 1.0/CIFS File Sharing Support. De forma predeterminada, Windows 10 está configurado para actuar como cliente CIFS, pero no como servidor CIFS. Por lo tanto, algunos componentes de CIFS están habilitados de manera predeterminada. Para habilitar completamente CIFS, expande el contenedor SMB 1.0/CIFS File Sharing Support y luego selecciona la casilla de verificación SMB 1.0/CIFS Server. Las otras casillas de verificación de SMB 1.0/CIFS (Eliminación automática y Cliente) deben estar seleccionadas de forma predeterminada. Haz clic en Aceptar para instalar la característica.

En Windows 10, no es necesaria ninguna configuración adicional de CIFS. Compartir una carpeta a través de una red funciona de la misma manera, independientemente de si se usa SMB o CIFS. Haz clic con el botón derecho en la carpeta que se va a compartir y selecciona el comando Propiedades en el menú contextual. Esto hará que Windows muestre el cuadro de diálogo de propiedades de la carpeta. Selecciona la pestaña Compartir del cuadro de diálogo y haz clic en el botón Compartir. Selecciona los usuarios con los que deseas compartir la carpeta y ajusta sus permisos según sea necesario.

Si es necesario compartir la carpeta entre usuarios adicionales, haz clic en el botón Agregar y luego ingresa el nombre del usuario o grupo con el que se debe compartir la carpeta. Cuando hayas terminado de configurar los usuarios y permisos de la carpeta, haz clic en el botón Compartir, seguido del botón Cerrar.