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.
Escenario
Para la realización de esta práctica voy a estar usando instancias de OpenStack, contaré con una máquina servidor y una máquina cliente para realizar las comprobaciones.
Samba
Empezaremos instalando samba en nuestra máquina.
sudo dnf update
sudo dnf install samba samba-common samba-client
Creamos el directorio de samba, en este directorio se almacenan los recursos compartidos.
sudo mkdir -p /srv/samba
Hemos creado este directorio con el usuario root, será necesario cambiar los permisos del directorio y el propietario para el correcto funcionamiento.
sudo chmod -R 755 /srv/samba/
sudo chown -R nobody:nobody /srv/samba/
Habilitamos el uso compartido mediante el siguiente comando.
sudo chcon -t samba_share_t /srv/samba/
Vamos a crear un respaldo del fichero de configuración de Samba para poder hacer una restauración en caso de errores.
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
Modificaremos ahora el fichero de configuración de samba especificando los siguientes parámetros.
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = rocky-8
security = user
map to guest = bad user
dns proxy = no
ntlm auth = true
[Samba]
path = /srv/samba
browsable = yes
writable = yes
guest ok = yes
read only = no
Una vez configurado podemos guardar los cambios y ejecutar el siguiente comando, el cual hace una comprobación de samba.
sudo testparm
Hecho esto podemos pasar a iniciar el servicio de samba en nuestro servidor.
sudo systemctl start smb
sudo systemctl start nmb
Será necesario instalar firewalld, una herramienta de administración de firewall que nos ayudará a permitir el tráfico del servidor.
sudo dnf install firewalld
Acto seguido vamos a habilitar e iniciar el servicio de firewalld.
dnf install firewalld
systemctl enable firewalld
systemctl start firewalld
Y tendremos que permitir el tráfico.
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
Para ver los servicios permitidos por firewalld podemos ejecutar el siguiente comando.
firewall-cmd --list-services
Crearemos un usuario para samba y posteriormente lo añadimos al grupo smb_group.
sudo useradd smbuser
sudo smbpasswd -a smbuser
groupadd smb_group
usermod -g smb_group smbuser
Hecho esto hemos terminado la configuración en el servidor y podemos pasar a reiniciar el servicio, pasamos ahora al lado del cliente donde tendremos que instalar el paquete samba-client.
dnf update
dnf install samba-client
Con el cliente instalado, podemos ejecutar el siguiente comando, especificando el usuario con el que nos vamos a conectar y la IP flotante del servidor.
sudo smbclient //172.22.200.23/Samba -U smbuser
Como podemos comprobar, podemos acceder al servidor a través del cliente.
NFS
Pasaremos ahora a configurar un servidor NFS, para ello empezaremos instalando la paquetería necesaria en la máquina que actúa como servidor.
dnf install nfs-utils
Hecho esto podemos pasar a iniciar el servicio y habilitarlo para el arranque de la máquina.
systemctl start nfs-server.service
systemctl enable nfs-server.service
Creamos el directorio el cual vamos compartir.
mkdir /mnt/nfscompartida
A continuación nos dirigiremos al directorio /etc/exports para especificar el directorio que será compartido. Aquí especificaremos el directorio, la ip de la máquina cliente y las opciones de lectura o escritura necesitadas.
Exportamos los ficheros creados.
exportfs -arv
Lo siguiente es añadir estos servicios a firewalld.
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload
Para poder exportar el directorio con SElinux activado debemos ejecutar el siguiente comando.
setsebool -P nfs_export_all_rw 1
hecho esto habríamos terminado con el servidor, pasamos ahora al cliente y lo primero que haremos es instalar las herramientas necesarias.
dnf install nfs-utils nfs4-acl-tools
Iniciamos el servicio.
systemctl enable nfs-client.target
systemctl start nfs-client.target
Hecho esto, podemos montar el directorio del servidor en nuestro cliente.
sudo mount -t nfs 172.22.200.23:/mnt/nfscompartida /mnt/
Podemos comprobar que ha funcionado creando un fichero en el directorio del servidor y podremos verlo en el cliente siempre que el directorio se encuentre montado.
Podemos ejecutar el siguiente comando para comprobar que el directorio remoto esta compartido y montado en el cliente.
mount | grep /mnt/nfscompartida
Ahora que tenemos los dos sericios funcionando correctamente, podemos comprobar el estado de Selinux para corroborar que está activado en ambas máquinas.
sestatus
Servidor:
Cliente: