Recibe toda la actualidad del sector tech y cloud en tu email de la mano de RevistaCloud.com.

Suscripción boletín

Configuración avanzada de SELinux: Guía completa para mejorar la seguridad en Linux

SELinux (Security-Enhanced Linux) es un sistema de control de acceso basado en políticas de seguridad que proporciona una capa adicional de protección en sistemas Linux. Es especialmente útil para entornos de alta seguridad o servidores expuestos a internet. A continuación, se detallan los aspectos clave de una configuración avanzada de SELinux, incluyendo políticas, modos, y consejos para solucionar problemas.

1. Modos de SELinux

SELinux tiene tres modos de operación principales:

  • Enforcing: El modo en el que SELinux está activo y hace cumplir todas las políticas. Bloquea cualquier acción que no esté explícitamente permitida.
  • Permissive: En este modo, SELinux no bloquea acciones, pero registra todas las violaciones de política en el sistema. Es útil para depuración y ajustes de políticas antes de implementar un modo de producción.
  • Disabled: SELinux está desactivado. No se aplican ni registran políticas.

Para verificar el modo actual de SELinux:

sestatus

Para cambiar el modo de SELinux temporalmente (sin reiniciar):

setenforce 0  # Cambia a Permissive
setenforce 1 # Cambia a Enforcing

Para cambiar el modo de SELinux permanentemente, edite el archivo de configuración en /etc/selinux/config:

SELINUX=enforcing  # Cambiar a permissive o disabled según sea necesario

2. Políticas de SELinux

Las políticas en SELinux definen qué acciones están permitidas y cuáles no. Existen tres tipos principales de políticas:

  • Targeted: La política predeterminada en la mayoría de las distribuciones Linux. Protege los servicios del sistema más comunes, dejando otros procesos en un modo más permisivo.
  • MLS (Multi-Level Security): Una política más estricta que utiliza niveles de clasificación y categorización, generalmente para sistemas de alta seguridad.
  • MCS (Multi-Category Security): Similar a MLS, pero con categorías de seguridad en lugar de niveles estrictos. Es útil para virtualización y sistemas de contenedores.

Para verificar la política activa:

sestatus | grep "Policy"

3. Contextos de SELinux

Cada archivo, proceso, y puerto en SELinux tiene un contexto de seguridad, que generalmente incluye:

  • Usuario (user)
  • Rol (role)
  • Tipo (type)
  • Nivel (level), para políticas MLS/MCS.

Por ejemplo, en un contexto de archivo, system_u:object_r:httpd_sys_content_t:s0, el tipo (httpd_sys_content_t) determina qué acciones puede realizar un servicio sobre el archivo.

Para ver el contexto de un archivo:

ls -Z /ruta/al/archivo

Para cambiar el contexto de un archivo:

chcon -t tipo_nuevo /ruta/al/archivo

Ejemplo de cambiar un archivo para que sea accesible por Apache:

chcon -t httpd_sys_content_t /var/www/html/index.html

Para que el cambio sea permanente, se debe usar semanage:

semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html

4. Herramientas de administración de SELinux

  • semanage: Configura ajustes persistentes de SELinux como contextos de archivos, puertos, y más.
    semanage fcontext -l # Listar contextos de archivo semanage port -l # Listar puertos y sus tipos
  • restorecon: Restaura los contextos de archivo a sus valores predeterminados según la política.
    restorecon -Rv /ruta/al/directorio
  • getsebool y setsebool: Gestionan los booleans, que permiten habilitar o deshabilitar ciertas reglas de SELinux sin modificar políticas directamente.
    getsebool -a # Listar todos los booleans setsebool httpd_enable_homedirs on # Permitir que Apache acceda a directorios en el home

5. Configurar Booleans en SELinux

Los Booleans son una forma de personalizar el comportamiento de SELinux sin cambiar directamente las políticas. Por ejemplo, para permitir que Apache acceda a archivos de usuario:

setsebool -P httpd_enable_homedirs on

Para listar Booleans específicos de un servicio (como httpd):

getsebool -a | grep httpd

6. Solución de problemas en SELinux

Cuando SELinux bloquea una acción, genera un mensaje en el log del sistema (/var/log/audit/audit.log). Para interpretar estos mensajes y generar soluciones sugeridas, use ausearch o audit2why:

ausearch -m avc -ts today             # Ver violaciones de hoy
cat /var/log/audit/audit.log | audit2why # Explicar violaciones recientes

Si desea convertir estas violaciones en excepciones de política para SELinux, use audit2allow:

cat /var/log/audit/audit.log | audit2allow -M nombre_modulo
semodule -i nombre_modulo.pp

7. Creación de Módulos de Políticas Personalizados

En casos avanzados, puede ser necesario crear módulos de política personalizados para permitir acciones específicas sin desactivar SELinux. Los módulos se crean usando audit2allow y luego se instalan con semodule:

cat /var/log/audit/audit.log | audit2allow -M custom_policy
semodule -i custom_policy.pp

8. Recomendaciones para una Configuración Avanzada de SELinux

  • Monitorizar regularmente los logs de SELinux: Use ausearch o audit2why para identificar y analizar incidentes.
  • Implementar booleans para configuraciones comunes: Los booleans son una forma efectiva de hacer ajustes sin crear políticas personalizadas.
  • Hacer pruebas en modo permissive: Antes de aplicar políticas restrictivas en modo enforcing, pruebe en permissive para evaluar el impacto sin interrumpir servicios.
  • Usar políticas personalizadas cuando sea necesario: Para configuraciones especiales o software específico, los módulos personalizados permiten adaptar SELinux a las necesidades exactas del sistema.

Con una configuración avanzada de SELinux, es posible proteger sistemas críticos, garantizando un control granular sobre quién y qué puede acceder a los recursos del sistema. Al seguir estos pasos, administradores y equipos de seguridad pueden aprovechar todo el potencial de SELinux para mantener la integridad y seguridad en entornos Linux de alta demanda.

vía: SELinux en Administración de Sistemas

encuentra artículos

newsletter

Recibe toda la actualidad del sector tech y cloud en tu email de la mano de RevistaCloud.com.

Suscripción boletín

LO ÚLTIMO