Samba es un software muy utilizado por aquellos usuarios que quieren compartir archivos a través de una red local fácilmente desde un sistema operativo Linux a un sistema Windows. Aunque es una herramienta bastante potente y completa, generalmente suele ser complicada de configurar y la mayoría de los problemas de este software residen en su configuración. Generalmente suele ser complicado poder compartir carpetas entre varios sistemas operativos (especialmente entre Linux y Windows) a través de una red local, sin embargo, siguiendo este sencillo tutorial conseguiremos conectar nuestro Raspberry Pi o cualquier sistema operativo Linux, con una red Windows fácilmente con Samba y sin necesidad de software adicional.
Linux es uno de los sistemas operativos más eficaces a la hora de montar servidores. Las posibilidades son muchas, y con finalidades muy diferentes. Desde servidores para compartir contenido, a servidores de impresión o autenticación. Todo esto, hace que Linux sea el rey en este tipo de instalaciones. Sobre todo, cuando los administradores buscan tener más control sobre el mismo.
Qué es un servidor Samba
Un servidor Samba es una implementación de software libre del protocolo de red SMB/CIFS que permite a los sistemas operativos tipo Unix/Linux compartir archivos e impresoras con sistemas Windows. En pocas palabras, Samba actúa como un intermediario que facilita la comunicación entre dispositivos con sistemas operativos diferentes dentro de una red local.
Este protocolo es esencialmente el lenguaje que utilizan los dispositivos para comunicarse entre sí y compartir recursos. El término «SMB» significa Server Message Block, mientras que «CIFS» se refiere a Common Internet File System. Ambos protocolos se utilizan en entornos de red para permitir el intercambio de archivos, impresoras y otros recursos entre ordenadores con diferentes sistemas operativos.
Un servidor Samba funciona proporcionando a los sistemas operativos Unix/Linux la capacidad de hablar el mismo idioma que los sistemas Windows. Esto significa que los ordenadores con Linux pueden compartir archivos y recursos con ordenadores Windows de la misma manera que lo harían entre sí. Además, Samba permite a los administradores de sistemas configurar y administrar fácilmente los permisos de acceso, la autenticación de usuarios y otras opciones de configuración relacionadas con el intercambio de archivos.
Principales características
Una vez que ya tenemos en cuenta qué es exactamente, se puede ir un paso más allá para tener una idea más concreta de lo que es un servidor Samba. Para ello, toca conocer sus características. Y entre las características principales de Samba podemos encontrar:
- Compatibilidad multiplataforma: Samba permite compartir archivos y recursos entre sistemas Windows, Linux y otros sistemas operativos que admiten el protocolo SMB/CIFS.
- Integración con directorios activos: Samba puede integrarse con servidores de directorio como Active Directory de Windows, lo que facilita la gestión centralizada de usuarios, grupos y permisos de acceso.
- Seguridad: Samba tiene opciones de seguridad avanzadas, incluyendo el cifrado de datos, la autenticación de usuarios y la protección contra accesos no autorizados.
- Rendimiento: Samba está diseñado para ofrecer un mejor rendimiento en entornos de red de alto tráfico, minimizando la latencia y maximizando la velocidad de transferencia de archivos.
¿Qué ventajas y desventajas tienen estos servidores?
Otra de las maneras para conocer más a fondo los servidores Samba consiste en poner frente a frente las diferentes ventajas y desventajas que presentan. Comenzando con los puntos fuertes de este tipo de servers, se puede ver que los usuarios de Linux cuentan con multitud de alternativas a la hora de interacturar con equipos con otros sistemas como Windows o macOS.
Por otro lado, esta importante señalar que entre sus ventajas también se encuentra la oportunidad de compartir uno o más sistemas de archivos. Sin olvidar que permite el hecho de compartir impresoras que estén instaladas tanto en el servidor en cuestión como en los diferentes clientes.
Además de estos anteriores puntos, otro de los puntos fuertes de estos serviodres es que ofrece la opción de compartir recursos entre máquinas Windows, macOS y Linux.
Sin embargo, no hay que olvidar que también hay puntos en contra para el uso de este tipo de servidores. Por ejemplo, que únicamente se puede implementar la seguridad a nivel de recurso compartido de una manera. En cambio, por otra parte, la seguridad a nivel de usuario se puede llegar a implementar de cuatro maneras distintas. Y, por último, este tipo de servidor únicamente admite una contraseña sin un nombre de usuario explícito desde el cliente.
¿Qué es el protocolo SMB?
Hace más de 30 años fue creado por IBM y posteriormente combinado por Microsoft. SMB permite acceder y modificar archivos en un equipo remoto, así como acceder a otros recueros como impresoras a través de una aplicación. El protocolo pese a sus actualizaciones para mejorar aspectos de seguridad fue hackeado en 2016 en su última actualización. A continuación, podemos ver cuando fue introducidas las diferentes versiones de SMB con los diferentes sistemas operativos de Microsoft.
- SMB 1.0 (o SMB1): Esta es la versión que se usa en Windows 2000, Windows XP, Windows Server 2003 y Windows Server 2003 R2.
- SMB 2.0 (o SMB2): Esta versión fue introducida en Windows Vista (SP1 o superior) y Windows Server 2008.
- SMB 2.1 (o SMB2.1): Esta es la versión empleada en Windows 7 y Windows Server 2008 R2.
- SMB 3.0 (o SMB3): La nueva versión introducida en Windows 8 y Windows Server 2012.
Por otro lado, hay que tener en cuenta las principales mejoras de SMB3 frente a SMB2, las cuales son las siguientes:
- Conmutación transparente: Permite a los administradores realizar tareas de mantenimiento o cambios sin interferir en las operaciones de acceso de lectura y escritura.
- Escalabilidad, rapidez y eficiencia: Se pueden crear volúmenes compartidos que proporciones acceso simultaneo.
- Cifrado SMB: Sin duda la novedad más importante es el cifrado de extremo a extremo de los datos SMB.
De esta manera, queda claro los diferentes motivos por los que está muy por encima SMB3 de SMB2. Ahora bien, ¿cómo funciona este protocolo en particular?
Cómo funciona SMB
Lo primero que ocurre es que el cliente y servidor negocian el soporte de cifrado a utilizar. El cliente le muestra al servidor que protocolos puede aceptar y entonces el Servidor elije el mejor protocolo para la transferencia. Una cosa a tener en cuenta es que, en el enlace de sesión, el cifrado multicanal comparte la misma clave de cifrado y descifrado, al igual que en SMB 3.0.x. Una vez que cliente y servidor se han puesto de acuerdo, llega la hora de cifrar el mensaje, para eso lo primero es:
- El remitente encripta el mensaje con los siguientes detalles:
- El algoritmo de cifrado usando GCM o CCM, con las siguientes opciones:
- Clave AES,
- AES-Nonce O IV para CCM.
- AES128GCM para GCM.
- Datos de autenticación opciones.
- Clave AES,
- El algoritmo de cifrado usando GCM o CCM, con las siguientes opciones:
En la salida de los datos usando cualquier de los dos protocolos AES-CCM o AES-GCM, el texto va cifrado y con código de autenticación. Una vez llega al destinario, se produce el descifrado comprobando claves y códigos de autenticación.
Creación de un servidor Samba
Lo primero que debemos hacer es instalar los paquetes necesarios en nuestro dispositivo. Para ello abriremos un terminal en nuestro sistema operativo o nos conectaremos a través de SSH para controlar el dispositivo de forma remota y escribiremos:
sudo apt-get install samba samba-common-bin
Esto instalará los paquetes necesarios. Una vez finalice la instalación debemos realizar unos pequeños ajustes en Samba para hacerlo funcionar, mejorar la seguridad y evitar que cualquier usuario no autorizado tenga acceso al sistema.
El archivo de configuración de Samba es smb.conf, por lo que vamos a abrirlo con nano para editarlo. Para ello teclearemos:
sudo nano /etc/samba/smb.conf
Aquí debemos fijarnos concretamente en 2 líneas:
- workgroup = [your_workgroup_name]
- wins support = yes
En la primera línea debemos colocar el grupo de trabajo con el que vamos a compartir las carpetas. Por defecto Windows crea un grupo de trabajo llamado Workgroup, por lo que si estamos utilizando este grupo de trabajo simplemente debemos introducir dicho valor en el apartado «workgroup».
La línea correspondiente a «wins support» generalmente aparece comentada con una almohadilla #, borramos dicho caracter para habilitar dicho valor.
El siguiente paso es buscar un apartado llamado «Share Definitions» dentro del archivo. Aquí vamos a crear las carpetas que vamos a compartir en red y a configurarlas según nuestras necesidades. En este apartado debemos pegar un párrafo similar al siguiente:
- [pi_torrent] #Nombre del perfil que crearemos, por ejemplo, para compartir la carpeta del cliente Torrent
- comment= Pi Torrent #Descripción del perfil
- path=/home/pi/torrent #Ruta de la carpeta a la que accederemos desde la carpeta compartida
- browseable=Yes #Aparece al explorar la red
- writeable=Yes #Se puede escribir en dicha carpeta
- only guest=no #Requiere autenticación
- create mask=0777 #Permisos
- directory mask=0777 #Permisos
- public=no #Carpeta pública o privada
Con esto ya tenemos la configuración inicial creada. Para finalizar pulsamos control+O para guardar los cambios y control+X para cerrar y salir.
El último paso será establecer una contraseña al usuario Pi que nos será solicitada al entrar en la carpeta de Samba desde la red. Para ello tecleamos:
sudo smbpasswd -a pi
Y escribimos la contraseña 2 veces. Una vez hecho reiniciamos el servidor Samba con:
sudo service samba restart
Y ya está lista la carpeta compartida desde nuestro Raspberry Pi con otros sistemas operativos como Windows a través de la red y sin necesidad de utilizar FTP para ello.
Ahora tan solo necesitamos introducir las credenciales de usuario, y automáticamente accederemos a todas las carpetas compartidas que hemos configurado.
Ejemplos de uso para un servidor Samba
Esta implementación de código abierto del protocolo SMB/CIFS, permite a los sistemas Unix y Linux interactuar con Sistemas Windows en red. Samba puede actuar a modo de servidor o cliente, ofreciendo una amplia gama de funcionalidades. Algunos de los ejemplos de uso más comunes son:
- Compartir archivos: Aquí tenemos que separar las dos opciones más comunes. En primer lugar, se puede utilizar para una red doméstica o pequeñas empresas, donde es posible compartir documentos, imágenes, música, y todo tipo de archivos entre equipos Linux, Windows y MacOS. Y, por otro lado, están los entornos de trabajo en oficinas. Donde podemos facilitar mucho más la colaboración al permitir que los empleados accedan a carpetas, las cuales están compartidas con documentos y proyectos. Junto con otros recursos y archivos importantes.
- Compartir impresoras: Se pueden ofrecer servicios de impresión de red, permitiendo que los equipos Windows puedan utilizar impresoras que se encuentran conectadas a equipos con Linux. Pero en estos casos, será necesario implementar otra serie de medidas de administración y seguridad del servidor. Las típicas de un servidor de impresión.
- Autenticación y control de acceso: Samba tiene extensiones como Samba AD, la cual se puede utilizar a modo de controlador de dominio. Y lo mejor, es que es compatible con Active Directory de Windows. Esto hace que nos proporcione funciones como la gestión de políticas de grupo, así como la integración de soluciones basadas en AD.
- Migración y Coexistencia: Si estamos realizando movimientos de las infraestructuras de Windows a Linux o viceversa, con Samba podremos disponer de un puente temporal que facilite la migración. Esto permite que ambos sistemas, puedan coexistir y sea posible compartir los recursos durante todo el proceso.
- Clientes SMB/CIFS en Linux: A pesar de que para ello no se necesita un servidor de forma estricta, con Samba los equipos con Linux pueden tener un acceso a las comparticiones SMB/CIFS en servidores Windows. Lo que también pueden incluir dispositivos NAS que utilicen el mismo protocolo.
- Backup y Almacenamiento: Con Samba de puede proveer de almacenamiento de red, accesible para soluciones de backup. Lo cual permite que los equipos con Windows puedan guardar sus copias de seguridad en servidores con Linux.
- Acceso remoto a Archivos: Si se realizan las configuraciones adecuadas y se combina con redes VPN o incluso con servicios de reenvió de puertos, se puede disponer de un acceso remoto para los usuarios. De este modo podrán acceder a los archivos que se encuentran en redes Samba mientas que están fuera de la oficina o en casa.
- Integraciones con LDAP: Integrar Samba con servicios LDAP, es posible para centralizar la gestión de cuentas de usuario y autenticación en redes que cuentan con diferentes servidores y servicios.
- Clusters: En algunos entornos avanzados, Samba se puede configurar en entornos de cluster para poder proporcionar una alta disponibilidad y balanceo de carga para compartir archivos.
Esto son solo algunos de los ejemplos más comunes para utilizar servidores Samba. Pero su versatilidad y capacidad, lo convierten en una herramienta muy valiosa para cualquier tipo de administrador de sistemas que trabaje con entornos mixtos.