Configuración activación de SELinux
Habilita SELinux en un servidor basado en Rocky y asegúrate que los servicios samba y nfs funcionan correctamente con una configuración estricta y segura de SELinux. Realiza las pruebas de acceso correspondientes.
El escenario consta de dos máquinas , nuestro servidor esta basado en Rocky 9 y nuestro cliente es un Debian 12 .
En nuestro servidor tendremos activado SELinux en modo enforcing .
[rocky@rocky-javiercruces ~]$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
Comenzaremos actualizando los paquetes necesarios para configurar samba y nfs :
[rocky@rocky-javiercruces ~]$ sudo dnf update -y
[rocky@rocky-javiercruces ~]$ sudo dnf install samba samba-common samba-client nfs-utils -y
Samba
Un recurso compartido de samba es esencialmente un directorio que se compartirá entre los sistemas cliente de la red. Por lo tanto, crearemos un directorio como se muestra. Yo lo hare en el directorio home de mi usuario :
[rocky@rocky-javiercruces ~]$ mkdir sambashare
Le daremos los permisos y la propiedad correspondientes al directorio que acabamos de crear para que sea accesible a través del servicio :
[rocky@rocky-javiercruces ~]$ sudo chmod -R 755 /home/rocky/sambashare
[rocky@rocky-javiercruces ~]$ sudo chown -R nobody:nobody /home/rocky/sambashare
[rocky@rocky-javiercruces ~]$ sudo chcon -t samba_share_t /home/rocky/sambashare
Ahora vamos a crear un recurso compartido dentro de la configuración de samba , lo añadiré al final del fichero :
[rocky@rocky-javiercruces ~]$ sudo vim /etc/samba/smb.conf
[sambashare]
path = /home/rocky/sambashare
browsable =yes
writable = yes
guest ok = yes
read only = no
Para verificar el archivo de configuración, ejecuta el siguiente comando :
[rocky@rocky-javiercruces ~]$ sudo testparm
Con la configuración actual podremos acceder al recurso de forma anónima , aunque podemos configurar usuarios samba :
[rocky@rocky-javiercruces ~]$ sudo smbpasswd -a rocky
Luego añade al fichero de configuración la linea “valid users = usuario” al final de cada declaración de recurso , te dejo un ejemplo :
[sambashare]
path = /home/rocky/sambashare
guest only = no
writable = yes
force create mode = 0666
force directory mode = 0777
browseable = yes
valid users = rocky
Ahora vamos a arrancar el servicio :
[rocky@rocky-javiercruces ~]$ sudo systemctl start smb
[rocky@rocky-javiercruces ~]$ sudo systemctl enable smb
[rocky@rocky-javiercruces ~]$ sudo systemctl start nmb
[rocky@rocky-javiercruces ~]$ sudo systemctl enable nmb
Vamos a confirmas que ambos servicios están funcionando :
[rocky@rocky-javiercruces ~]$ sudo systemctl status smb
● smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; preset: disabled)
Active: active (running) since Mon 2024-02-05 11:21:45 UTC; 1min 50s ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 49025 (smbd)
Status: "smbd: ready to serve connections..."
Tasks: 3 (limit: 4340)
Memory: 8.6M
CPU: 70ms
CGroup: /system.slice/smb.service
├─49025 /usr/sbin/smbd --foreground --no-process-group
├─49027 /usr/sbin/smbd --foreground --no-process-group
└─49028 /usr/sbin/smbd --foreground --no-process-group
Feb 05 11:21:45 rocky-javiercruces.novalocal systemd[1]: Starting Samba SMB Daemon...
Feb 05 11:21:45 rocky-javiercruces.novalocal smbd[49025]: [2024/02/05 11:21:45.649440, 0] ../../source3/smbd/server.c:1746(main)
Feb 05 11:21:45 rocky-javiercruces.novalocal smbd[49025]: smbd version 4.18.6 started.
Feb 05 11:21:45 rocky-javiercruces.novalocal smbd[49025]: Copyright Andrew Tridgell and the Samba Team 1992-2023
Feb 05 11:21:45 rocky-javiercruces.novalocal systemd[1]: Started Samba SMB Daemon.
[rocky@rocky-javiercruces ~]$ sudo systemctl status nmb
● nmb.service - Samba NMB Daemon
Loaded: loaded (/usr/lib/systemd/system/nmb.service; enabled; preset: disabled)
Active: active (running) since Mon 2024-02-05 11:22:49 UTC; 1min 7s ago
Docs: man:nmbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 49065 (nmbd)
Status: "nmbd: ready to serve connections..."
Tasks: 1 (limit: 4340)
Memory: 2.8M
CPU: 48ms
CGroup: /system.slice/nmb.service
└─49065 /usr/sbin/nmbd --foreground --no-process-group
Feb 05 11:22:49 rocky-javiercruces.novalocal nmbd[49065]: [2024/02/05 11:22:49.116367, 0] ../../source3/nmbd/nmbd.c:901(main)
Feb 05 11:22:49 rocky-javiercruces.novalocal nmbd[49065]: nmbd version 4.18.6 started.
Feb 05 11:22:49 rocky-javiercruces.novalocal nmbd[49065]: Copyright Andrew Tridgell and the Samba Team 1992-2023
Feb 05 11:22:49 rocky-javiercruces.novalocal systemd[1]: Started Samba NMB Daemon.
Feb 05 11:23:12 rocky-javiercruces.novalocal nmbd[49065]: [2024/02/05 11:23:12.157234, 0] ../../source3/nmbd/nmbd_become_lmb.c:398(become_local_master_stage2)
Feb 05 11:23:12 rocky-javiercruces.novalocal nmbd[49065]: *****
Feb 05 11:23:12 rocky-javiercruces.novalocal nmbd[49065]:
Feb 05 11:23:12 rocky-javiercruces.novalocal nmbd[49065]: Samba name server ROCKY-JAVIERCRUCES is now a local master browser for workgroup SAMBA on subnet 10.0.0.150
Feb 05 11:23:12 rocky-javiercruces.novalocal nmbd[49065]:
Feb 05 11:23:12 rocky-javiercruces.novalocal nmbd[49065]: *****
Los resultados anteriores indican que los servicios se están ejecutando. Ahora habilitemos el protocolo samba en el firewall para permitir que los clientes puedan conectarse :
[rocky@rocky-javiercruces ~]$ sudo firewall-cmd --permanent --add-service=samba
success
[rocky@rocky-javiercruces ~]$ sudo firewall-cmd --reload
success
Ahora en nuestro cliente , nos instalamos el cliente y comprobamos a conectarnos remotamente :
javiercruces@odin:~$ sudo apt install samba-client -y
javiercruces@odin:~$ sudo smbclient //172.22.201.86/sambashare -U rocky
Password for [WORKGROUP\rocky]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Mon Feb 12 09:42:09 2024
.. D 0 Mon Feb 5 11:50:24 2024
fichero_prueba N 0 Mon Feb 12 09:42:09 2024
9286656 blocks of size 1024. 7952516 blocks available
smb: \>
Comprobaremos que en ambos extremos tenemos los mismos ficheros :
[rocky@rocky-javiercruces ~]$ sudo ls -l /home/rocky/sambashare/
total 0
-rwxr-xr-x. 1 nobody nobody 0 Feb 12 09:42 fichero_prueba
NFS
Nos instalamos el servidor nfs en rocky :
[rocky@rocky-javiercruces ~]$ sudo dnf install nfs-utils
En el cliente debian , en este caso odin nos descargamos “el cliente”
javiercruces@odin:~$ sudo apt install nfs-common
Creamos el directorio que queremos compartir :
[rocky@rocky-javiercruces ~]$ sudo mkdir /var/nfs/general -p
Le damos los permisos adecuados para que nfs funcione correctamente.
[rocky@rocky-javiercruces ~]$ sudo chown nobody /var/nfs/general
Mostramos la configuración actual de los servicios permitidos a través del firewall usando firewalld :
[rocky@rocky-javiercruces ~]$ sudo firewall-cmd --permanent --list-all | grep services
services: cockpit dhcpv6-client samba ssh
Como no tenemos permitido nfs , lo permitiremos haciendo uso del servicio :
[rocky@rocky-javiercruces ~]$ sudo firewall-cmd --permanent --add-service=nfs
success
[rocky@rocky-javiercruces ~]$ sudo firewall-cmd --permanent --add-service=mountd
success
[rocky@rocky-javiercruces ~]$ sudo firewall-cmd --permanent --add-service=rpc-bind
success
[rocky@rocky-javiercruces ~]$ sudo firewall-cmd --reload
success
Volvemos a listar los servicios permitidos y nos aseguramos que este nfs , mountd y rcp-bind :
[rocky@rocky-javiercruces ~]$ sudo firewall-cmd --permanent --list-all | grep services
services: cockpit dhcpv6-client mountd nfs rpc-bind samba ssh
Ahora en el cliente elegiremos donde montaremos el directorio compartido , yo creare uno nuevo :
javiercruces@odin:~$ sudo mkdir -p /nfs/general
Y montaremos el nuevo directorio :
javiercruces@odin:~$ sudo mount 172.22.201.86:/var/nfs/general /nfs/general
Comprobamos que se ha montado :
javiercruces@odin:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 965M 0 965M 0% /dev
tmpfs 197M 684K 197M 1% /run
/dev/vda1 15G 7.0G 7.1G 50% /
tmpfs 984M 0 984M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda15 124M 12M 113M 10% /boot/efi
tmpfs 197M 0 197M 0% /run/user/1000
172.22.201.86:/var/nfs/general 8.9G 1.3G 7.6G 15% /nfs/general
Y comprobamos que en ambos extremos tenemos los mismos ficheros :
[rocky@rocky-javiercruces ~]$ sudo ls -l /var/nfs/general/
total 0
-rw-r--r--. 1 nobody nobody 0 Feb 12 09:38 fichero_prueba
javiercruces@odin:~$ ls -l /nfs/general
total 0
-rw-r--r-- 1 nobody nogroup 0 Feb 12 09:38 fichero_prueba