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 *