SELinux para niños
Datos para niños SELinux |
||
---|---|---|
![]() |
||
![]() GUI del administrador de SELinux en Fedora v8
|
||
Información general | ||
Tipo de programa | Linux Security Module | |
Autor | NSA y Red Hat | |
Desarrollador | Red Hat | |
Lanzamiento inicial | 22 de diciembre de 2000 (24 años, 6 meses y 15 días) | |
Licencia | GPL | |
Estado actual | En desarrollo | |
Información técnica | ||
Programado en | C | |
Versiones | ||
Última versión estable | 3.829 de enero de 2025 | |
Enlaces | ||
Sitio web oficial
Repositorio de código
|
||
Security-Enhanced Linux (SELinux) es un sistema de seguridad especial para el núcleo Linux, que es el cerebro de tu computadora. Fue creado para añadir una capa extra de protección.
SELinux ayuda a controlar qué programas pueden hacer y a qué archivos pueden acceder. Esto se logra mediante reglas de seguridad muy estrictas. Fue desarrollado por la NSA (una agencia de seguridad de Estados Unidos) y Red Hat, una empresa de tecnología.
Este sistema se enfoca en separar las decisiones de seguridad de las aplicaciones. Así, se asegura de que cada programa solo tenga acceso a lo que realmente necesita. SELinux se incluyó en el núcleo principal de Linux desde el 8 de agosto de 2003.
Muchas versiones de GNU/Linux, como Fedora, Red Hat Enterprise Linux y CentOS, ya tienen SELinux activado por defecto. Además, los teléfonos Android también lo usan desde la versión 4.3 Jelly Bean, y está completamente activado desde Android 5.0 Lollipop.
Contenido
¿Qué es SELinux y cómo funciona?
Los sistemas operativos como Linux tienen un sistema de permisos básico. Este sistema decide quién puede leer, escribir o ejecutar archivos. Se conoce como control de acceso discrecional (DAC).
SELinux va un paso más allá con el control de acceso obligatorio (MAC). Esto significa que el sistema operativo decide qué puede hacer cada programa, sin importar los permisos básicos.
Cada programa supervisado por SELinux solo puede acceder a los recursos que necesita. Estos recursos están definidos en una política de seguridad. Esta política es como un conjunto de reglas que le dice a SELinux qué operaciones están permitidas.
El objetivo principal de SELinux es proteger tu sistema operativo y tus programas. Lo hace evitando que ataques externos o internos aprovechen fallos de seguridad. Incluso si un fallo es desconocido, SELinux puede ayudar a bloquearlo.
Al principio, sistemas como SELinux se usaban en gobiernos y grandes empresas. Hoy en día, casi todos los sistemas operativos modernos tienen algo similar. Por ejemplo, Android usa SELinux, y macOS/FreeBSD tienen TrustedBSD.
SELinux vs. AppArmor: ¿Cuál es la diferencia?
Existen varios sistemas de seguridad que añaden control de acceso obligatorio a Linux. Los más conocidos son SELinux y AppArmor. Ambos son importantes, pero funcionan de manera diferente.
¿Cómo protegen el sistema?
- SELinux está diseñado para proteger todo el sistema. Controla el acceso a todos los elementos, como archivos, procesos y conexiones de red.
- AppArmor se enfoca más en proteger el sistema de archivos. Sus reglas se basan en las rutas de los archivos y directorios.
¿Cómo definen las reglas?
- AppArmor usa "perfiles de tareas". Estos perfiles definen lo que cada aplicación puede hacer. Si un programa no tiene un perfil, funciona con los permisos básicos de Linux.
- SELinux usa "contextos de seguridad". Cada elemento del sistema (un programa, un archivo, una conexión) tiene una etiqueta especial. Esta etiqueta le dice a SELinux qué permisos tiene ese elemento.
¿Qué pasa si algo no está permitido?
Ambos sistemas usan el principio de "denegación por defecto". Esto significa que si algo no está específicamente permitido por las reglas, se bloquea.
- AppArmor solo aplica esta regla a las tareas que controla.
- SELinux aplica esta regla a todo el sistema.
En resumen, SELinux ofrece un control de seguridad más detallado. AppArmor es más sencillo de configurar y usar.
Contextos de seguridad: Las etiquetas de SELinux
En un sistema con SELinux, cada elemento tiene una etiqueta especial llamada contexto de seguridad. Esta etiqueta es usada por las reglas de seguridad para decidir si se permite o no el acceso. Los contextos de seguridad se guardan en los archivos, por lo que el sistema de archivos debe ser compatible.
Un contexto de seguridad tiene esta estructura: usuario_u:rol_r:tipo_t:nivel. Vamos a ver qué significa cada parte:
- Identidad o usuario: Es un usuario de SELinux, diferente al usuario normal de tu sistema. Ayuda a SELinux a tener su propio sistema de seguridad. Se suele usar el sufijo `_u`.
- Roles: Indica el rol de SELinux. Por ejemplo, `object_r` es el rol por defecto para la mayoría de los elementos. Se suele usar el sufijo `_r`.
- Tipo: Es la parte más importante. Define los permisos de acceso y la política de seguridad que se aplica. El tipo de un programa se llama "dominio". Se suele usar el sufijo `_t`.
- Nivel: Se usa en políticas de seguridad muy avanzadas. Permite un control aún más preciso con etiquetas de "sensibilidad" y "categoría". Esto es útil en lugares donde la seguridad es extremadamente importante. En las políticas más comunes, el nivel es siempre `s0`.
Ejemplos de contextos de seguridad
- Un directorio de una página web: `system_u:object_r:httpd_sys_content_t:s0`
- Tu carpeta personal: `system_u:object_r:home_user_t:s0`
- El programa de un servidor web (como Apache): `system_u:system_r:httpd_t:s0`
Para ver el contexto de seguridad de tus archivos, puedes usar el comando `ls -Z` en la terminal.
ls -Z
Estados y políticas de SELinux
SELinux puede estar en tres estados diferentes:
- Enforcing (obediente): SELinux está activado y bloquea cualquier acceso que no esté permitido por sus reglas de seguridad.
- Permissive (permisivo): SELinux está activado, pero permite todos los accesos. Sin embargo, te avisará si algo no hubiera estado permitido. Es útil para probar nuevas configuraciones.
- Disabled (desactivado): SELinux está completamente apagado y no ofrece ninguna protección extra.
SELinux también tiene diferentes tipos de políticas:
- Política "targeted": Esta es la política más común. Solo algunos programas importantes (como los servidores web o de correo) están bajo el control de SELinux. Los demás programas usan la seguridad básica de Linux. Es un buen equilibrio entre seguridad y facilidad de uso.
- Política multi-nivel/multi-categoría (MLS/MCS): Esta política es para sistemas que necesitan una seguridad extremadamente alta. Permite un control muy detallado sobre quién puede acceder a qué, basándose en niveles de clasificación.
Políticas de seguridad comunes
Las políticas de seguridad son los conjuntos de reglas que usa SELinux. La política más común para las distribuciones GNU/Linux es la Política de Referencia de SELinux (refpolicy). Para Android, existe la Política de Seguridad de Android (sepolicy).
Véase también
En inglés: Security-Enhanced Linux Facts for Kids
- AppArmor