Qué es SELinux, cómo funciona y cómo se usa en Linux

que-es-selinux
que-es-selinux

Si buscas qué es SELinux, piensa en una capa extra que da a los administradores más control sobre quién puede acceder a qué dentro del sistema.​ SELinux define controles de acceso para aplicaciones, procesos y archivos mediante políticas (reglas) que indican qué accesos se permiten y cuáles se niegan.​ Se desarrolló originalmente como parches para el kernel por la NSA, se liberó como open source en 2000 y se integró en el kernel upstream en 2003.​

En Linux “tradicional” el control suele ser DAC (permisos y propietarios), mientras que SELinux es un ejemplo de MAC, donde la política la fija el administrador y no se “salta” por cambiar permisos a nivel usuario.​ En la práctica, esto reduce el impacto de fallos o servicios comprometidos, porque un proceso queda confinado a lo que su política permite, aunque el atacante consiga ejecutar código dentro de ese proceso.​

👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis

👉 También te dejo por aquí una guía de comandos Linux por categorías

Cómo funciona SELinux

SELinux funciona con un sistema de etiquetado: cada archivo, proceso y también puertos pueden tener una etiqueta (contexto) asociada.​
Ese contexto suele representarse como user:role:type:level (el nivel puede ser opcional), y el “type” es la parte más importante en políticas de tipo “targeted”.​

Cuando un “sujeto” (proceso/aplicación) pide acceso a un “objeto” (por ejemplo un archivo), SELinux consulta la caché AVC (Access Vector Cache) con permisos ya calculados.​
Si no hay decisión en caché, la solicitud pasa al servidor de seguridad, que evalúa los contextos contra la base de políticas y decide permitir o denegar.​
Cuando se deniega, puede aparecer el mensaje avc: denied en logs; en entornos auditados también es habitual revisar /var/log/audit/audit.log.

Ejemplo típico (servidor web): una política puede permitir que el dominio del servidor web acceda a contenido etiquetado para web, pero no a archivos sensibles del sistema, aunque existan permisos UNIX que “parezcan” permitirlo.​

Modos, políticas y ajustes

SELinux puede ejecutarse en tres modos:

  • Enforcing (impone y bloquea)
  • Permissive (no bloquea, solo registra)
  • Disabled (desactivado)

Aquí tienes una tabla clara con los modos de SELinux:​

Modo¿Qué hace?¿Bloquea acciones no permitidas por la política?¿Registra denegaciones (AVC)?Uso típico
EnforcingAplica la política de SELinux y hace cumplir las reglas. ​Sí. ​Sí (cuando deniega). ​Producción, cuando quieres máxima seguridad. ​
PermissiveNo aplica bloqueos, pero sigue evaluando y registrando lo que habría denegado. ​No. ​Sí (útil para diagnóstico). Pruebas, troubleshooting y ajuste de políticas/etiquetas. ​
DisabledSELinux queda desactivado en el sistema. ​No. ​No (porque SELinux no está activo). ​Solo casos puntuales; normalmente no recomendado si buscas endurecimiento. ​

Sobre políticas, Red Hat menciona como comunes “targeted” (predeterminada en muchos casos) y MLS (más compleja y típica de entornos gubernamentales).​
Otro concepto práctico son los booleanos, que permiten activar o desactivar comportamientos de SELinux (hay muchos, y se inspeccionan con herramientas del sistema).​

Comandos útiles y solución de problemas

Para revisar estado y contexto:

  • sestatus para ver estado general (habilitado, modo actual, política).​
  • getenforce / setenforce 0|1 para ver o cambiar entre Enforcing y Permissive en caliente. ​
  • ls -Z y ps -Z para ver contextos (etiquetas) en archivos y procesos.​

Para corregir etiquetado y ajustar políticas:

  • restorecon para restaurar contextos por defecto cuando hay etiquetas incorrectas.​
  • semanage para gestionar contextos/puertos y otros ajustes persistentes.​
  • getsebool -a para listar booleanos configurables.​
  • audit2allow para generar reglas/módulos a partir de denegaciones registradas (útil, pero úsalo con criterio).​

Cuatro causas típicas cuando “algo no funciona” con SELinux:

  • Etiquetas incorrectas, corrige/re-etiqueta.​
  • Ajuste de políticas (booleanos o módulos) tras cambios en el sistema.​
  • Fallos/bugs en políticas que requieren corrección.​
  • Posible compromiso del sistema: SELinux puede estar frenando actividad maliciosa y hay que investigar.​

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *