To bit or not to bit, ingeniera en desarrollo de software, criadora de mantis, mujer transgénera
Ingeniería de software

Instalar Samba en Linux con configuraciones de SELinux y Firewalld

Samba es nuestra opción en Linux para crear un servicio de “carpetas compartidas” tipo Windows que en realidad es una función de red llamada SMB, que es el acrónimo de Server Message Block, en conjunto con otra que se llama NFS, que es el acrónimo de Network File System.

En esta guía buscare mostrar los pasos para instalar y configurar Samba en nuestro servidor Linux incluyendo configuraciones de Firewalld y SELinux, el objetivo será crear usuarios con contraseña que entren a nuestro servidor a su propia carpeta home, además de una carpeta que sólo usuarios firmados puedan entrar, y a una carpeta sin necesidad de usar un usuario con password.

Paso 1: Instalar Samba

Instalar samba en Linux mediante la herramienta de yum o apt.

[root@localhost ~]# yum -y install samba

Paso 2: Preparar usuarios y grupos para el uso de samba.

Es conveniente preparar la estructura de usuarios, grupos y directorios antes de seguir con las configuraciones de seguridad.

Como comentaba el objetivo es crear usuarios que entren firmados al servidor y tengan su propia carpeta, para eso vamos a crear en nuestro ambiente Linux dos usuarios usuariosmb1 y usuariosmb2, ambos los vamos a agregar al grupo gruposmbcompartido, después vamos a crear la carpeta /var/smbcompartido que será la carpeta que usarán los usuarios firmados, después vamos a crear la carpeta /var/smblibre donde se manejarán los archivos para usuarios no firmados, así como asignarle el grupo gruposmblibre.

[root@localhost ~]# groupadd gruposmbcompartido
[root@localhost ~]# groupadd gruposmblibre
[root@localhost ~]# useradd usuariosmb1
[root@localhost ~]# useradd usuariosmb2
[root@localhost ~]# usermod -a -G gruposmbcompartido usuariosmb1
[root@localhost ~]# usermod -a -G gruposmbcompartido usuariosmb2
[root@localhost ~]# mkdir /var/smbcompartido
[root@localhost ~]# mkdir /var/smblibre
[root@localhost ~]# chmod 770 /var/smbcompartido
[root@localhost ~]# chmod 777 /var/smblibre
[root@localhost ~]# chgrp gruposmbcompartido /var/smbcompartido
[root@localhost ~]# chgrp gruposmblibre /var/smblibre

Si después queremos denegar el acceso por ssh a los usuarios creados ve la siguiente liga: https://con140.com/2022/01/21/denegar-acceso-ssh-en-linux-por-usuarios-y-grupos/

Paso 3: Configurar Firewalld y SELinux

Firewalld es un servicio de firewall dentro de varias instalaciones de Linux, si no permitimos el flujo de información en la red para este servicio, nuestro samba no podrá recibir ni enviar información en la red, por eso hay que configurarlo para que firewalld lo permita.

[root@localhost ~]# firewall-cmd --permanent --add-service=samba
[root@localhost ~]# firewall-cmd --reload

Primero señalamos que queremos permitir el servicio de samba y recargamos el servicio de firewalld para que tome nuestra nueva configuración. Para más información sobre firewalld ve a esta liga: https://con140.com/2021/05/31/caracteristicas-basicas-sobre-la-configuracion-de-firewalld/

SELinux es un sistema de control dentro de varias distribuciones de Linux que usa mecanismos a para mejorar la seguridad de nuestro sistema operativo. Hay varias cosas que SELinux necesita se configure, necesitamos otorgarle a samba permisos para escritura y lectura e indicarle el contexto a las carpetas /var/smbcompartido y /var/smblibre donde vamos a usar samba.

[root@localhost ~]# setsebool -P samba_export_all_ro=1 samba_export_all_rw=1
[root@localhost ~]# semanage fcontext –at samba_share_t "/var/smbcompartido(/.*)?"
[root@localhost ~]# restorecon /var/smbcompartido
[root@localhost ~]# semanage fcontext –at samba_share_t "/var/smblibre(/.*)?"
[root@localhost ~]# restorecon /var/smblibre

Paso 4: Configurar el servicio de samba

El archivo de configuración de samba se encuentra en /etc/samba/smb.conf en este debemos de agregar al final una configuración para nuestras carpetas. Por lo que agregaremos las siguientes líneas:

[compartido]
        comment = Directorio compartido
        browsable=yes
        path=/var/smbcompartido
        public=no
        valid users=@gruposmbcompartido
        write list=@gruposmbcompartido
        writeable = yes
        create mask=770
        Force create mode=770
        force group=gruposmbcompartido
[libre]
        comment = Directorio libre
        browsable=yes
        path=/var/smblibre
        public=yes
        writeable = yes
        create mask=777
        Force create mode=777

Paso 5: agregar usuarios al servicio de samba

Para agregar los usuarios al sistema de samba usamos el comando smbpasswd.

[root@localhost ~]# smbpasswd -a usuariosmb1
[root@localhost ~]# smbpasswd -a usuariosmb2

Paso 6: Reiniciamos samba y pasamos el servicio a enable

Al final hay que reiniciar samba para que tome los nuevos valores ingresados a la configuración y también hay que ingresarlo a enable para que inicie cuando el servidor se encienda.

[root@localhost ~]# systemctl start smb
[root@localhost ~]# systemctl enable smb

Conclusiones

En Linux podemos hacer uso de varias herramientas para mejorar la productividad como la herramienta samba para compartir archivos.

Como siempre si les gusta compartan y si no también, mi cuenta de Twitter @SoyTabs la reviso constantemente por si quieren hacerme comentarios o preguntas.