Configuración de firewall, SELinux y reglas básicas de ACL
1. Paso 1: Instalación y configuración del firewall
¡Hola! Hoy vamos a practicar de verdad y aplicar todo lo que has aprendido sobre seguridad en Linux durante el día. Vamos a configurar el firewall, evaluar el trabajo de SELinux y analizar lo práctico que es usar ACLs para gestionar el acceso a archivos. Esta lección es tu "campo de entrenamiento". ¡Es hora de ponernos las "charreteras de seguridad" de admin y empezar!
Ya sabes que un buen firewall es como un guardia en la entrada. Decide a quién dejar pasar y a quién decirle "¡Ni hablar!". Para empezar, configuraremos la protección de nuestro sistema, limitando el acceso solo a los servicios SSH y HTTP.
Trabajando con UFW
Revisa el estado de UFW. ¿No está instalado? ¡Vamos a instalarlo!
# Revisión de UFW sudo ufw status
Instalamos y habilitamos UFW.
# Instalación (si es necesario) sudo apt install ufw # Activamos el firewall sudo ufw enable
Configuramos el acceso. Queremos permitir solo SSH (puerto 22) y HTTP (puerto 80), bloqueando todo lo demás. La lógica es obvia: el servidor no es un hotel de tres estrellas para cualquiera.
# Permitir SSH sudo ufw allow 22 # Permitir HTTP sudo ufw allow 80 # Verificar configuración sudo ufw status
Verificación: Después de la configuración deberías ver algo como esto:
Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 80 ALLOW Anywhere
Si el comando dice que "el firewall está desactivado", eso hay que corregirlo.
Si utilizas iptables
, la configuración es un poco más complicada, pero la lógica es la misma: creamos reglas para SSH y HTTP, y bloqueamos todo lo demás.
2. Paso 2: Trabajo con SELinux
SELinux es como ese profe estricto que siempre está vigilando el comportamiento de archivos y usuarios en tu servidor. Su lema es: "Confía, pero verifica". Vamos a activar SELinux y comprobar cómo funciona.
Activar SELinux
Verificar el estado actual:
# Veamos si SELinux está activado sestatus
Si el modo muestra
disabled
, hay que activarlo a través del archivo de configuración.Activar SELinux desde la configuración:
El archivo de configuración de SELinux está en la ruta
/etc/selinux/config
. Ábrelo usando un editor de texto (por ejemplo,nano
).sudo nano /etc/selinux/config
Busca la línea:
SELINUX=disabled
Reemplázala con:
SELINUX=enforcing
Guarda los cambios y reinicia el sistema para que los cambios surtan efecto:
sudo reboot
Verificar después del reinicio.
Después de que el servidor se inicie, verifica nuevamente el estado de SELinux:
getenforce
Si el sistema responde con Enforcing, ¡felicitaciones, estás protegiendo la seguridad!
Ejemplo con SELinux y un servidor web
Supongamos que tienes un servidor web que almacena archivos en el directorio /var/www/html
. Veamos cómo SELinux lo protege.
Ver el contexto de los archivos: SELinux utiliza contextos para gestionar el acceso. Vamos a comprobar qué contexto tiene el directorio
/var/www/html
.ls -Z /var/www/html
Ejemplo de salida:
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
Si algo no está bien, se puede cambiar temporalmente el contexto:
sudo chcon -t httpd_sys_content_t /var/www/html
Verificar si el servidor web funciona: Después de configurar el contexto, verifica si tu servidor funciona y si no hay errores de acceso.
3. Paso 3: Gestionar permisos con ACL
ACL (Access Control List) es como una "llave extra" para gestionar el acceso. Cuando los permisos estándar rwx
son limitados, ACL te permite personalizar los accesos para usuarios específicos.
Crea una carpeta de prueba
Vamos a crear la carpeta project_dir
y configurarla para el acceso de dos usuarios: user1
y user2
.
Creando la carpeta:
sudo mkdir /project_dir
Estableciendo permisos:
Vamos a otorgar a
user1
acceso completo y auser2
acceso solo de lectura:# Acceso completo para user1 sudo setfacl -m u:user1:rwx /project_dir # Solo lectura para user2 sudo setfacl -m u:user2:r-- /project_dir
Verificando ACL:
# Verificar permisos actuales getfacl /project_dir
La salida debe mostrar tus configuraciones:
# file: /project_dir user::rwx user:user1:rwx user:user2:r--
Estableciendo permisos por defecto:
Para que todos los nuevos archivos en la carpeta hereden automáticamente los permisos ACL, configúralos como predeterminados:
sudo setfacl -d -m u:user1:rwx /project_dir sudo setfacl -d -m u:user2:r-- /project_dir
4. Comprobación de la configuración final
Firewall:
- Asegúrate de que los puertos SSH y HTTP estén disponibles y que los demás estén bloqueados. Intenta conectarte al servidor a través de SSH y abre el sitio web en el navegador.
SELinux:
- Revisa los contextos de los archivos para asegurarte de que SELinux limita correctamente el acceso.
ACL:
- Inicia sesión con los usuarios
user1
yuser2
e intenta leer y escribir un archivo en el directorio/project_dir
.
- Inicia sesión con los usuarios
Ejercicios prácticos
- Configura el firewall para que solo permita acceso SSH y HTTP.
- Activa SELinux en modo
enforcing
y asegúrate de que el servidor web funcione correctamente. - Configura ACL para el directorio
/project_dir
, de modo queuser1
tenga acceso completo yuser2
solo permisos de lectura. - Comprueba los usuarios activos en el sistema usando el comando
who
.
Estos ejercicios te ayudarán a consolidar tus conocimientos y a entender cómo aplicarlos en la práctica. Y recuerda: la seguridad en Linux no se trata solo de configuraciones, sino también de prestar atención constantemente a los detalles. ¡Suerte!
GO TO FULL VERSION