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:
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:
