Saltar a contenido

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

Untitled

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

Untitled

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

Untitled

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.

Untitled

Exportamos los ficheros creados.

exportfs -arv

Untitled

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.

Untitled

Untitled

Podemos ejecutar el siguiente comando para comprobar que el directorio remoto esta compartido y montado en el cliente.

mount | grep /mnt/nfscompartida

Untitled

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:

Untitled

Cliente:

Untitled