ClasesInformatica

Bienvenido a ClasesInformatica

Tu portal de referencia para documentación técnica, tutoriales y proyectos prácticos en el ámbito de la tecnología. Ofrecemos recursos especializados para profesionales, estudiantes y entusiastas que buscan soluciones concretas, guías paso a paso y proyectos DIY en diversas áreas de la informática y las tecnologías emergentes.

Creación de servidor Samba avanzado

¿Como compartir archivos entre distintos sistemas operativos?

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

  1. Contraseñas: Utiliza contraseñas fuertes y diferentes para cada usuario Samba.
  2. Actualizaciones: Mantén Samba actualizado para parchar vulnerabilidades.
  3. Restricción de redes: Limita el acceso solo a las redes de confianza.
  4. Encriptación: Usa SMB3 siempre que sea posible para aprovechar la encriptación.
  5. Registros: Revisa regularmente los registros de acceso.
  6. Separación: Considera separar completamente los recursos compartidos para diferentes grupos de usuarios.
  7. 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.

Volver