Configuración optimizada y segura de Samba para compartir archivos entre sistemas operativos
Este documento presenta una configuración mejorada y segura de Samba para sistemas basados en Debian (Ubuntu, Debian, Linux Mint, etc.), enfocada en la compartición de archivos entre diferentes sistemas operativos con distintos niveles de acceso.
1. Preparación del sistema
Actualizar el sistema
usuario@debian:~$ sudo apt update && sudo apt upgrade -y
Instalar Samba y paquetes de seguridad relacionados
usuario@debian:~$ sudo apt install samba samba-common smbclient cifs-utils -y
Verificar la instalación
usuario@debian:~$ smbd --version
2. Configuración segura del sistema antes de Samba
Crear estructura de directorios dedicada
usuario@debian:~$ sudo mkdir -p /srv/samba/compartido
Configurar usuarios y grupos específicos para Samba
usuario@debian:~$ sudo groupadd smbadmins usuario@debian:~$ sudo groupadd smbusers usuario@debian:~$ sudo useradd -m -G smbadmins admin1 usuario@debian:~$ sudo smbpasswd -a admin1 usuario@debian:~$ sudo useradd -m -G smbusers user1 usuario@debian:~$ sudo smbpasswd -a user1
Configurar permisos de directorio de forma segura
usuario@debian:~$ sudo chown root:smbadmins /srv/samba/compartido usuario@debian:~$ sudo chmod 2770 /srv/samba/compartido usuario@debian:~$ sudo apt install acl -y usuario@debian:~$ sudo setfacl -m g:smbusers:rx /srv/samba/compartido usuario@debian:~$ sudo setfacl -d -m g:smbadmins:rwx /srv/samba/compartido usuario@debian:~$ sudo setfacl -d -m g:smbusers:rx /srv/samba/compartido
3. Configuración segura de Samba
Hacer copia de seguridad de la configuración original
usuario@debian:~$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Crear configuración optimizada de Samba
usuario@debian:~$ sudo nano /etc/samba/smb.conf
Reemplaza el contenido con la siguiente configuración optimizada:
[global] # Identificación del servidor workgroup = WORKGROUP server string = Servidor Samba Seguro netbios name = SERVIDOR # Configuración de seguridad general server role = standalone server security = user encrypt passwords = yes passdb backend = tdbsam # Optimizaciones de rendimiento socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072 use sendfile = yes aio read size = 16384 aio write size = 16384 # Registro y auditoría log file = /var/log/samba/log.%m max log size = 50 logging = file # Restricciones de acceso hosts allow = 192.168.0. 192.168.1. 127.0.0.1 hosts deny = 0.0.0.0/0 # Seguridad adicional client min protocol = SMB2 client max protocol = SMB3 server min protocol = SMB2 # Deshabilitar impresión load printers = no printing = bsd printcap name = /dev/null disable spoolss = yes # Configuración de mapeo de IDs (importante para permisos) map to guest = never unix extensions = yes # Bloqueos de archivo más eficientes strict locking = no oplocks = yes level2 oplocks = yes [Compartido] path = /srv/samba/compartido comment = Directorio compartido con acceso diferenciado browseable = yes read only = no guest ok = no create mask = 0660 force create mode = 0660 directory mask = 0770 force directory mode = 0770 # Control de acceso fino valid users = @smbadmins @smbusers admin users = @smbadmins write list = @smbadmins # Mejorar rendimiento para grandes archivos strict allocate = yes allocation roundup size = 4096 # Preservar metadatos de archivos ea support = yes store dos attributes = yes # Limitar servicios activos vfs objects = full_audit full_audit:prefix = %u|%I|%m|%S full_audit:success = mkdir rmdir rename unlink write pwrite full_audit:failure = connect full_audit:facility = local7 full_audit:priority = NOTICE
Verificar la configuración
usuario@debian:~$ testparm
4. Configurar firewall
UFW (Uncomplicated Firewall)
usuario@debian:~$ sudo ufw enable usuario@debian:~$ sudo ufw allow from 192.168.0.0/24 to any port 139,445 proto tcp usuario@debian:~$ sudo ufw allow from 192.168.1.0/24 to any port 139,445 proto tcp usuario@debian:~$ sudo ufw allow from 127.0.0.1 to any port 139,445 proto tcp
5. Configurar SELinux o AppArmor (si están disponibles)
Para sistemas con AppArmor
usuario@debian:~$ sudo apt install apparmor-utils -y usuario@debian:~$ sudo aa-enforce /usr/sbin/smbd
Para sistemas con SELinux
usuario@debian:~$ sudo apt install policycoreutils selinux-utils -y usuario@debian:~$ sudo setsebool -P samba_enable_home_dirs on usuario@debian:~$ sudo setsebool -P samba_export_all_ro on usuario@debian:~$ sudo setsebool -P samba_export_all_rw on usuario@debian:~$ sudo chcon -t samba_share_t /srv/samba/compartido
6. Iniciar y habilitar el servicio
usuario@debian:~$ sudo systemctl restart smbd nmbd usuario@debian:~$ sudo systemctl enable smbd nmbd
7. Monitoreo y auditoría
Configurar rotación de logs específica
usuario@debian:~$ sudo nano /etc/logrotate.d/samba
Añadir:
/var/log/samba/log.* { weekly rotate 7 compress delaycompress missingok notifempty create 0640 root adm sharedscripts postrotate /etc/init.d/samba reload > /dev/null endscript }
Monitoreo del servicio
usuario@debian:~$ sudo systemctl status smbd usuario@debian:~$ sudo smbstatus usuario@debian:~$ sudo tail -f /var/log/samba/log.*
8. Acceso al recurso compartido
Desde Windows
En el explorador de archivos, ingresa:
\\IP_DEL_SERVIDOR\Compartido
Desde Linux
Desde el explorador de archivos o mediante el comando:
usuario@debian:~$ smb://IP_DEL_SERVIDOR/Compartido
Alternativamente, para montar de forma permanente:
usuario@debian:~$ sudo mkdir -p /mnt/samba usuario@debian:~$ sudo mount -t cifs -o username=USER,password=PASSWORD,vers=3.0 //IP_DEL_SERVIDOR/Compartido /mnt/samba
Para montaje permanente, añadir a /etc/fstab:
//IP_DEL_SERVIDOR/Compartido /mnt/samba cifs credentials=/root/.smbcredentials,vers=3.0,_netdev 0 0
Crear archivo de credenciales seguro:
usuario@debian:~$ sudo nano /root/.smbcredentials
Contenido:
username=USER password=PASSWORD
Asegurar archivo:
usuario@debian:~$ sudo chmod 600 /root/.smbcredentials
9. Mantenimiento y seguridad continua
Actualización regular
usuario@debian:~$ sudo apt update && sudo apt upgrade -y
Verificación periódica de seguridad
usuario@debian:~$ sudo pdbedit -L -v usuario@debian:~$ sudo testparm -s usuario@debian:~$ sudo ss -tulpen | grep smbd
Backup de la configuración
usuario@debian:~$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.$(date +"%Y%m%d")
Escaneo de vulnerabilidades
usuario@debian:~$ sudo apt install nmap -y usuario@debian:~$ sudo nmap -sV -p 139,445 localhost
Notas importantes de seguridad
- Contraseñas: Utiliza contraseñas fuertes y diferentes para cada usuario Samba.
- Actualizaciones: Mantén Samba actualizado para parchar vulnerabilidades.
- Restricción de redes: Limita el acceso solo a las redes de confianza.
- Encriptación: Usa SMB3 siempre que sea posible para aprovechar la encriptación.
- Registros: Revisa regularmente los registros de acceso.
- Separación: Considera separar completamente los recursos compartidos para diferentes grupos de usuarios.
- Respaldos: Implementa un sistema de respaldos automáticos para los datos compartidos.
Nota: Recuerda adaptar las direcciones IP (192.168.0.0/24, etc.) según tu red local específica y personalizar los nombres de usuario según tus necesidades.