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.