Configuración de Samba para el intercambio de archivos en RHEL 8 y CentOS 8

Samba es la suite de interoperabilidad estándar que permite a sistemas Linux compartir archivos e impresoras con clientes Windows utilizando el protocolo SMB/CIFS. En entornos empresariales basados en Red Hat Enterprise Linux 8 o CentOS 8, su implementación es una tarea fundamental para garantizar la integración en redes heterogéneas.

Instalación del software necesario

Para comenzar, debemos instalar los paquetes de Samba disponibles en los repositorios oficiales. Aunque el servidor es el componente principal, es recomendable incluir las herramientas del cliente para realizar pruebas de conectividad locales.

$ sudo dnf install samba samba-common samba-client

Tras la instalación, es necesario activar y arrancar los servicios smb (que gestiona las transferencias de archivos) y nmb (encargado de la resolución de nombres NetBIOS).

$ sudo systemctl enable --now smb nmb

Gestión de reglas en el Cortafuegos

El firewall por defecto en RHEL 8, firewalld, permite habilitar el tráfico de Samba de forma sencilla mediante el uso de perfiles de servicio predefinidos, lo que evita tener que abrir manualmente los puertos 137, 138, 139 y 445.

$ sudo firewall-cmd --permanent --add-service=samba
$ sudo firewall-cmd --reload

Para confirmar que el servicio ha sido aplicado correctamente en la zona activa, podemos ejecutar:

$ sudo firewall-cmd --list-services

Creación de un recurso compartido público (Acceso para invitados)

Si necesitamos una carpeta donde cualquier usuario pueda acceder sin credenciales, debemos modificar el archivo de configuración principle /etc/samba/smb.conf. Primero, configuramos el mapeo de usuarios desconocidos en la sección global.

[global]
   workgroup = WORKGROUP
   server string = Servidor Samba RHEL8
   security = user
   map to guest = bad user
   dns proxy = no

Posteriormente, definimos el recurso al final del archivo. En este ejemplo, compartiremos el directorio /srv/samba/publico.

[publico]
   path = /srv/samba/publico
   browsable = yes
   writable = yes
   guest ok = yes
   read only = no

Recuerde crear el directorio y reiniciar los servicios para aplicar los cambios:

$ sudo mkdir -p /srv/samba/publico
$ sudo chmod -R 0777 /srv/samba/publico
$ sudo systemctl restart smb nmb

Configuración de recursos restringidos para usuarios registrados

Para entornos que requieren control de acceso, debemos vincular usuarios del sistema con la base de datos de contraseñas de Samba. Es una buena práctica crear usuarios sin capacidad de inicio de sesión local para este propósito.

$ sudo useradd -M -s /sbin/nologin usuario_red
$ sudo smbpasswd -a usuario_red

Luego, definimos un recurso privado en smb.conf donde solo este usuario tenga permisos:

[privado]
   path = /srv/samba/privado
   valid users = usuario_red
   guest ok = no
   writable = yes
   browsable = yes

Utilice la herramienta testparm para verificar que la sintaxis del archivo de configuración sea correcta antes de reiniciar el servicio.

Configuración de políticas de seguridad en SELinux

SELinux es un componente de seguridad crítico en RHEL 8. Si está en modo enforcing, bloqueará el acceso a Samba a menos que los directorios tengan el contexto de seguridad adecuado. Para etiquetar de forma persistente nuestro directorio de intercambio, utilizamos semanage.

$ sudo semanage fcontext -a -t samba_share_t "/srv/samba(/.*)?"
$ sudo restorecon -Rv /srv/samba

Si además desea permitir que los usuarios compartan sus propios directorios personales (home directories), debe habilitar el booleano correspondiente en SELinux:

$ sudo setsebool -P samba_enable_home_dirs on

Para visualizar otros parámetros de SELinux relacionados con Samba que puedan ser útiles según su caso de uso, ejecute:

$ getsebool -a | grep samba

Etiquetas: Samba RHEL 8 CentOS 8 selinux firewalld

Publicado el 8-4 04:09