1 – Introducción ¿Qué es Samba? y algo de SMB/CIFS…

La historia de Samba es larga pero por resumirlo un poco… En 1992 el programador Andrew Tridgell, por necesidades informáticas requería acceder a recursos que estaban en Unix desde un PC con MS-DOS, por lo que escribió un un sniffer de paquetes para luego realizar ingenieria inversa al protocolo SMB/CIFS (utilizado para compartir archivos en red y en grupos de trabajo en redes Windows), luego lo desarrolló y lo implementó en UNIX, así es como nació Samba.

  • SMB/CIFS = Propietario de Microsoft.
  • Samba = Software de código abierto.

Aunque estrictamente hablando SMB/CIFS no son lo mismo, en el último enlace del apartado de la bibliografía puedes ahondar más en este tema.

Vale muy bonita la historia pero veamos que hace Samba.

¿Para qué sirve Samba?

Samba es un protocolo red cliente-servidor que permite a los ordenadores con sistemas de tipo Unix (GNU/Linux, MacOS, Solaris, iOS, etc.) compartan recursos en red (carpetas, impresoras, discos) con equipos Windows y viceversa.

Samba se ha ido actualizando (actualmente Samba 4.13.13) a lo largo de más de 30 años, por lo que con el paso de estos, se han ido añadiendo actualizaciones, mejoras y funcionalidades, es decir, con samba además de compartir recursos en red, también puedes configurarlo para que trabaje como:

  • Servidor independiente (no es un DC y no participa en un dominio)
  • Controlador de dominio (DC) de un Active Directory (AD) [Windows]
  • Servidor miembro, forma parte del dominio (AD) pero no guarda información del mismo.
  • Active Directory Domain Controller (AD DC), es decir, usar SAMBA AD y prescindir de un Windows Server…y asi ahorrarnos la licencia.
  • Además podemos conectar Samba con OpenLDAP
  • Servidor WINS y más…

Con todo esto podemos decir que Samba es una suite de software que permite la interoperabilidad entre entornos Windows y Unix/Linux.

IMPORTANTE: Los comandos que se usarán acontinuación será para Debian y derivados como Ubuntu, Linux Mint…

Los paquetes de Samba

Para instalar Samba y utilizarlo para lo que fue creado (compartir recursos WIN-UNIX), basta con instalar el paquete de samba de la siguiente forma:

sudo apt install samba

Si queremos añadir más funcionalidades, herramientas, tendremos que is instalandolas según las necesidades.

samba-common
samba-client
samba-dsdb-modules 
samba-vfs-modules 
winbind 
libpam-winbind 
libnss-winbind 
libpam-krb5 
krb5-config 
krb5-user
y muchos más...

PD: En el siguiente post aprenderemos a instalar y configurar samba de la forma más básica.

Servicios, demonios y puertos

Samba está compuesto por tres demonios (smbd, nmbd y winbindd); y dos servicios (smb y windbind).

Los servicios

Los servicios controlan cómo se inician, detienen los demonios y otras funciones relacionadas con el servicio.

  • Servicio smb controla a los demonios smbd y nmbd.
  • Servicio winbind controla al demonio winbindd.

Los demonios

smbd

Este demonio smbd (Server Message Block Daemon) es el encargado de administrar la compartición de archivos/impresoras, además realiza la autenticación y autorización de clientes.

Los puertos predeterminados en los que el servidor escucha el tráfico SMB son los puertos TCP 139 y 445. Samba empezó usar desde un inicio el puerto TCP 139 (SMB sobre NetBIOS) y luego cambio a TCP 445 (SMB sobre TCP/IP).

nmbd

El demonio nmbd (NetBIOS Message Block Daemon) gestiona la traducción de nombres NetBIOS, es decir, responde las solicitudes NetBIOS enviadas desde clientes SMB (Windows) y opcionalmente a solicitudes WINS. Este demonio además responde a las solicitudes de protocolo de exploración utilizadas por el entorno de red de Windows.

Info adicional: WINS es como un servidor DNS pero para NetBIOS

El nombre NetBIOS solo puede tener 15 caracteres. Eso hay que tenerlo muy en cuenta, y de esto se encarga nmbd de resolver (Traducir Nombres a IP)

Aquí vemos un MAC (Que viene de Unix y usa una variante de Samba) desde el apartado de red como detecta equipos que usan SMB/CIFS (Windows). Como trabajador en entornos Apple, puedo confirmarte que en este apartado de red convergen más protocolos de exploración como Bonjour.

Aquí se muestra la exploración pero desde un PC Windows.

Para que Samba funcione en su forma más básica (compartir recursos en red en sistemas UNIX-Windows) solo es necesario smb (demonio smbd), NO HACE FALTA nmbd porque podemos reemplazar la resolución de nombres por DNS, lo del NetBIOS es cosa del pasado, aunque puede que te lo encuentres en algunas empresas…

Los puertos con los que trabaja nmbd son:

  • El puerto UDP 137 es utilizado por el buscador de red netbios nmbd. (Servicio de nombres)
  • El puerto UDP 138 es utilizado por el servicio de nombres NetBIOS. (Tramas broadcast/Datagrama)

winbindd

Este demonio tampoco es necesario si solo necesitamos un servidor archivos y que solo usuarios de windows necesiten acceder a dichos recursos, pero lo comentaré porque lo veremos en futuros post.

El demonio winbindd es parte del servicio winbind y se utiliza para permitir que los sistemas Unix obtengan información de usuarios y grupos de un servidor Windows. Su propósito es facilitar la integración de las redes de Microsoft y Unix cuando se configura un controlador de dominio (DC) de Windows preexistente para manejar cuentas de usuarios y ordenadores. En resumen, con esto podremos autenticar usuarios/equipos desde un Servidor Samba usando la BD de de Active Directory de Windows.

Los puertos

Aparte de los puertos de Samba ya mencionados, si vamos añadiendo más funcionalidades como DC, necesitaremos usar otros puertos tales como:

Carpetas y archivos de configuración de Samba

Cuando se instala samba se crean unos ficheros y carpetas en el que se guarda información relacionada:

  • /etc/samba, en esta carpeta se guardan las carpetas de configuración
  • El fichero de configuración de samba es smb.conf que se aloja en /etc/samba/
  • /var/log/samba, en esta carpeta se almacenan los losgs creados por samba
  • /var/lib/samba, aquí se guarda archivos varios de recursos compartidos, además del fichero que guarda las contraseña de los usuarios en un fichero cifrado (passdb.tdb), que esta alojado en /var/lib/samba/private
  • /var/run/samba, aquí encontraremos los PID de los deominios nmbd, smbd y winbind si es que lo activamos.

Bibliografia

Allá vamos…

En mi opinión samba es bastante complejo porque previamente tienes que saber muchos conceptos y varios de ellos son bastante antiguos. Samba ya no es lo que era, ha ido cambiando por lo que en Internet te puedes encontrar información bastante desfasada, con el tiempo iré publicando distintos articulos sobre samba e iremos explicando más cosas como: los archivos de configuración, directorios y demás… El siguiente post será de cómo instalar Samba y compatir archivos en Debian 11.

Espero que te haya gustado este post y nos vemos en el siguiente!

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.