• En esta práctica vamos a habilitar SELinux en un servidor rocky, en este servidor tendremos alojados un SAMBA y NFS, tendremos que asegurarnos que esto servicios funcionan correctamente con SELinux activado y nuestros clientes pueden usarlos sin problemas.

  • Hemos instalado y configurado un servidor samba y nfs en una máquina servidor.

[vagrant@server ~]$ sudo systemctl status smb.service 
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2022-03-11 11:52:49 UTC; 2h 13min ago
     Docs: man:smbd(8)
           man:samba(7)
           man:smb.conf(5)
 Main PID: 1065 (smbd)
   Status: "smbd: ready to serve connections..."
    Tasks: 4 (limit: 11402)
   Memory: 19.3M
   CGroup: /system.slice/smb.service
           ├─1065 /usr/sbin/smbd --foreground --no-process-group
           ├─1131 /usr/sbin/smbd --foreground --no-process-group
           ├─1132 /usr/sbin/smbd --foreground --no-process-group
           └─1149 /usr/sbin/smbd --foreground --no-process-group

Mar 11 11:52:48 server.alegv.com systemd[1]: Starting Samba SMB Daemon...
Mar 11 11:52:49 server.alegv.com smbd[1065]: [2022/03/11 11:52:49.218381,  0] ../../lib/util/become_daem>
Mar 11 11:52:49 server.alegv.com systemd[1]: Started Samba SMB Daemon.
Mar 11 11:52:49 server.alegv.com smbd[1065]:   daemon_ready: daemon 'smbd' finished starting up and read>

[vagrant@server ~]$ sudo systemctl status nfs-server.service 
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
  Drop-In: /run/systemd/generator/nfs-server.service.d
           └─order-with-mounts.conf
   Active: active (exited) since Fri 2022-03-11 11:52:46 UTC; 2h 14min ago
  Process: 1055 ExecStart=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy >
  Process: 1043 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
  Process: 1040 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 1055 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 11402)
   Memory: 0B
   CGroup: /system.slice/nfs-server.service

Mar 11 11:52:45 server.alegv.com systemd[1]: Starting NFS server and services...
Mar 11 11:52:46 server.alegv.com systemd[1]: Started NFS server and services.
  • Hemos creado una carpeta /home/shared-storage/ para nfs y /srv/samba/private/ para samba

  • Una vez configurado el servicio debemos permitir que los servicios necesarios puedan pasar el firewall, abriendo ciertos puertos.

[vagrant@server ~]$ sudo firewall-cmd --permanent --add-port=2049/tcp
[vagrant@server ~]$ sudo firewall-cmd --add-service={nfs,nfs3,mountd,rpc-bind} --permanent
[vagrant@server ~]$ sudo firewall-cmd --add-service=samba --zone=public --permanent
[vagrant@server ~]$ sudo firewall-cmd --reload
  • Vamos a comprobar la conexión desde nuestro cliente una vez configurado el mismo.

  • Primero vemos que podemos conectarnos a samba y crear contenido dentro.

vagrant@pruebas:~$ smbclient //192.168.121.244/private -U cliente
Enter WORKGROUP\cliente's password: 
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue Mar  1 12:16:04 2022
  ..                                  D        0  Fri Feb 18 08:13:38 2022
  carpeta                             D        0  Fri Feb 18 08:43:42 2022
  prueba                              D        0  Tue Mar  1 12:16:04 2022

		73364480 blocks of size 1024. 70874636 blocks available
smb: \>
  • Ahora comprobamos el servidor nfs, vamos a crear algunos ficheros y coomprobar que también se han creado en nuestro servidor.
vagrant@pruebas:~$ ls /mnt/network-drive/
hola.txt testfile.txt
[vagrant@server ~]$ ls /home/shared-storage/
hola.txt  testfile.txt
  • Hemos visto que los dos servicios funcionan correctamente, vamos a comprobar que nuestro selinux está en modo enforcing.
[vagrant@server ~]$ sudo 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
  • Esa ha sido la comprobación de que samba y NFS funcionan por defecto con SElinux en modo enforcing, existen distintos parametros (o booleanos) que podemos configurar, veamos los que existen en samba y nfs.
[vagrant@server ~]$ getsebool -a| grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_load_libgfapi --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
tmpreaper_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off

[vagrant@server ~]$ getsebool -a| grep nfs
cobbler_use_nfs --> off
colord_use_nfs --> off
conman_use_nfs --> off
ftpd_use_nfs --> off
git_cgi_use_nfs --> off
git_system_use_nfs --> off
httpd_use_nfs --> off
ksmtuned_use_nfs --> off
logrotate_use_nfs --> off
mpd_use_nfs --> off
nagios_use_nfs --> off
nfs_export_all_ro --> on
nfs_export_all_rw --> on
nfsd_anon_write --> off
openshift_use_nfs --> off
polipo_use_nfs --> off
samba_share_nfs --> off
sanlock_use_nfs --> off
sge_use_nfs --> off
tmpreaper_use_nfs --> off
use_nfs_home_dirs --> off
virt_use_nfs --> off
xen_use_nfs --> off
  • Para poder gestionarlos vamos a instalar el siguiente paquete.
[vagrant@server ~]$ sudo dnf install policycoreutils-python-utils
  • Ahora podemos encender los que queramos usando el siguiente comando.
[vagrant@server ~]$ sudo setsebool samba_create_home_dirs on

[vagrant@server ~]$ getsebool -a| grep samba
samba_create_home_dirs --> on
  • Así podremos activar y desactivar distintos módulos a nuestro antojo, quizás queremos que un servicio funcione pero no completamente, para ello usamos esta utilidad.