Almacenamiento en red: montando un servidor Samba

Introducción al almacenamiento en red con Samba

En entornos empresariales y domésticos donde varias máquinas requieren acceso a determinados recursos de almacenamiento, implementar un servidor de archivos se convierte en una necesidad. Samba es una solución madura y confiable que implementa el protocolo SMB/CIFS, originalmente desarrollado por Microsoft, y permite compartir carpetas y unidades de disco de forma transparente entre sistemas Linux, Windows y macOS.

Este artículo ofrece un recorrido paso a paso, desde la instalación básica de Samba hasta la configuración avanzada, buenas prácticas de seguridad, optimizaciones de rendimiento y montaje en clientes. Todo ello con un enfoque profesional, detallado y mínimamente estilizado mediante CSS inline, sin colores chillones.

1. Requisitos previos y consideraciones

  • Sistema operativo: Distribución GNU/Linux (Debian, Ubuntu, CentOS, RHEL, Fedora, etc.).
  • Acceso root o usuario con permisos sudo: Para instalar paquetes, editar configuración y gestionar servicios.
  • Conectividad de red: Dirección IP estática o reserva DHCP para el servidor Samba.
  • Firewall: Asegurarse de permitir tráfico en los puertos TCP/UDP 139 y 445.
  • Segmentación y VPN opcional: Para entornos distribuidos, es recomendable asegurar el túnel con OpenVPN o WireGuard.

2. Instalación de Samba

2.1 En Debian/Ubuntu

sudo apt update
sudo apt install samba

2.2 En CentOS/RHEL

sudo dnf install samba samba-client

2.3 Verificación del servicio

sudo systemctl enable smb nmb
sudo systemctl start smb nmb
sudo systemctl status smb nmb

3. Configuración básica de smb.conf

El archivo principal de configuración de Samba se encuentra en /etc/samba/smb.conf. A continuación, un ejemplo comentado:

[global]
   workgroup = MIMUNDO               # Grupo de trabajo o dominio.
   server string = Servidor Samba    # Descripción del servidor.
   log file = /var/log/samba/log.%m  # Log por cliente.
   max log size = 1000               # Tamaño máximo de cada log.
   security = user                   # Modelo de seguridad basado en usuarios.
   map to guest = Bad User           # Usuarios no válidos serán invitados.
   dns proxy = no                    # No reenviar peticiones DNS.

# Compartición de ejemplo
[Compartido]
   path = /srv/samba/compartido      # Ruta en servidor.
   browsable = yes                   # Visible en explorador de red.
   writable = yes                    # Permite escritura.
   valid users = @compartido         # Solo miembros de grupo compartido.
   create mask = 0660                # Permisos de archivos.
   directory mask = 0770             # Permisos de carpetas.
   guest ok = no                     # No acceso anónimo.

3.1 Creación del directorio y permisos

sudo mkdir -p /srv/samba/compartido
sudo groupadd compartido
sudo chown root:compartido /srv/samba/compartido
sudo chmod 2770 /srv/samba/compartido

3.2 Gestión de usuarios Samba

  1. Agregar usuarios del sistema (si no existen): sudo adduser maria.
  2. Agregar al grupo: sudo usermod -aG compartido maria.
  3. Establecer contraseña Samba: sudo smbpasswd -a maria.
  4. Habilitar usuario: sudo smbpasswd -e maria.

4. Montaje del recurso compartido en clientes

El acceso a Samba desde Windows suele ser inmediato mediante Explorador de archivos: IP_DEL_SERVIDORCompartido. En Linux/macOS se puede montar vía CIFS.

4.1 Temporal con mount.cifs

sudo mkdir -p /mnt/compartido
sudo mount.cifs //192.168.1.10/Compartido /mnt/compartido -o user=maria,uid=(id -u),gid=(getent group compartido  cut -d: -f3)

4.2 Permanente en /etc/fstab

//192.168.1.10/Compartido  /mnt/compartido  cifs  credentials=/home/usuario/.smbcredentials,uid=1000,gid=1000,vers=3.0 0 0

# ~/.smbcredentials
username=maria
password=SuPasswordSecreta

Es importante proteger .smbcredentials con chmod 600 ~/.smbcredentials.

5. Seguridad y cifrado

  • Cifrado SMB 3.0: En smb.conf, dentro de la sección global: server signing = mandatory y client signing = mandatory. Opcionalmente, encrypt passwords = yes.
  • Firewall: Configurar iptables/nftables o firewalld para permitir puerto 445 (TCP) y bloquear otros accesos no deseados.
  • VPN: Para comunicaciones remotas, desplegar OpenVPN o WireGuard y enrutar el tráfico Samba por el túnel.
  • AppArmor/SELinux: Asegurar que las políticas permiten el acceso a /srv/samba.

6. Optimización de rendimiento

  • Buffers y caché: Ajustar parámetros en smb.conf:
    • socket options = TCP_NODELAY SO_RCVBUF=131072 SO_SNDBUF=131072
    • read raw = yes y write raw = yes
  • Multiproceso: max xmit = 65535 para transferencias grandes.
  • Compresión Zstandard: En Samba 4.16 , vfs objects = zstd y zstd:compression-level = 3.
  • Hardware: RAID 10 o SSD para reducir latencias, NIC Gigabit o 10GbE y jumbo frames si la red lo soporta.

7. Management y monitoreo

Herramienta Descripción
smbstatus Muestra conexiones activas y archivos bloqueados.
testparm Verifica sintaxis de smb.conf.
smbclient Cliente en línea de comandos para pruebas.
Prometheus node_exporter Monitorización de métricas de sistema y red.

8. Backup y alta disponibilidad

  • Snapshots LVM/ZFS: Permiten copias coherentes sin interrupción.
  • rsync y duplicity: Para respaldos incrementales remotos.
  • Clúster con CTDB: Para entornos que requieren HA, CTDB coordina múltiples nodos Samba.

Conclusiones

Implementar un servidor Samba robusto y seguro implica no solo instalar el paquete, sino diseñar adecuadamente la estructura de permisos, asegurar las comunicaciones, optimizar el rendimiento y prever mecanismos de alta disponibilidad y backup. Gracias a su flexibilidad y compatibilidad multiplataforma, Samba sigue siendo la opción preferida para NAS y entornos mixtos Windows/Linux.

Con los pasos y recomendaciones de este artículo dispondrás de una guía completa para desplegar y mantener un servidor de archivos en red basado en Samba, adaptada tanto a pequeños entornos domésticos como a infraestructuras corporativas de gran escala.

  • Hola 👋 , soy la IA de Linuxmind.dev, te puedo ayudar a aprender.
Gathering thoughts ...

Leave a Reply

Your email address will not be published. Required fields are marked *