x
1

SELinux



Security-Enhanced Linux (SELinux) es un módulo de seguridad para el kernel Linux, implementado utilizando el framework del núcleo Linux Security Modules, que proporciona el mecanismo para implementar una políticas de control de acceso de tipo Control de acceso obligatorio (MAC) y control de acceso basado en roles[1]​ .[2][3]​ Se trata de un conjunto de modificaciones del núcleo y herramientas de usuario que pueden ser agregadas a diversas distribuciones Linux. Su arquitectura se enfoca en separar las decisiones de las aplicaciones de seguridad de las políticas de seguridad mismas y racionalizar la cantidad de software encargado de las aplicaciones de seguridad.[4][5]​ Los conceptos clave que soportan SELinux pueden ser trazados a diversos proyectos previos de la Agencia de Seguridad Nacional de Estados Unidos.

SELinux ha sido integrado a la rama principal del núcleo Linux desde la versión 2.6, el 8 de agosto de 2003.

Las distribuciones GNU/Linux Fedora, Red Hat Enterprise Linux, CentOS y Scientific Linux incorporan SELinux habilitado por defecto.

Android incluye SELinux por primera vez en la versión 4.3 Jelly Bean, pero en modo permisivo. En Android 4.4 KitKat se incluye activado parcialmente, sólo en algunos dominios cruciales (installd, netd, vold y zygote). Desde Android 5.0 Lollipop se incorpora SELinux totalmente.

Los sistemas basados en UNIX incorporan control de acceso discrecional (DAC), el cual corresponde a los permisos tradicionales de UNIX: Propietario, Grupo y Otros; Lectura, Escritura y Ejecución. SELinux pemite políticas de acceso control de acceso obligatorio (MAC) y control de acceso basado en roles (RBAC) en Linux.

Una aplicación supervisada por SELinux posee acceso únicamente a los recursos que necesita, los cuales están descritos en una política de seguridad para dicho proceso. El acceso a procesos, puertos, archivos y directorios está controlado mediante reglas definidas en dicha política, es decir, el módulo de seguridad del kernel (SELinux), autoriza o deniega todas las operaciones del sistema con base en unas políticas de seguridad que definen por completo qué recursos del sistema pueden acceder las aplicaciones individuales y con qué privilegios.

El objetivo de este sistema de seguridad es proteger proactivamente el sistema operativo y las aplicaciones contra amenazas externas o internas, como ataques de día cero (zero-day), mediante el cumplimiento de un buen comportamiento, y así evitar la explotación de agujeros de seguridad en software, incluso si aún son desconocidos.

Inicialmente, los sistemas de seguridad de control de acceso obligatorio, como SELinux, se utilizaban a nivel gubernamental, empresarial y en servidores web, con el objetivo de reducir el riesgo de ataques informáticos. No obstante, actualmente, todos los sistemas operativos modernos lo incorporan, como Android (SELinux),[6]macOS/FreeBSD (TrustedBSD) y GNU/Linux (AppArmor, SELinux, TOMOYO, etc.).

Las distribuciones Linux incorporan MAC mediante módulos de seguridad, como SELinux y AppArmor. Cada uno tiene sus peculiaridades.

SELinux está orientado a proteger el sistema completo, todos los objetos del sistema (ficheros, objetos IPC, redes, ...). Sin embargo AppArmor solo está orientado al sistema de ficheros.[7]

AppArmor implementa una política centrada en la tarea, lo que significa que los atributos de control de acceso están vinculados a las tareas.[7]​ Las reglas con las restricciones para cada aplicación están definidas en los llamadas perfiles de tareas. [7]​Estos pueden incluir habilidades para manipular ficheros específicos, usar red o montar dispositivos. [7]​El control de acceso está basado en rutas (de directorios, archivos, puertos,...) que se especifican. [7]​Programas que no tienen un perfil definido ejecutan sin restricciones por su parte (solo las restricciones del sistema de permisos UNIX).[7]

SELinux implementa una política centrada en los objetos del sistema. Cada 'objeto del sistema (proceso, puerto, archivo, directorio,..) se le asigna una etiqueta ( contexto de seguridad), que será utilizada por la política de seguridad para determinar el acceso a este. El contexto de seguridad incluye distintos atributos como la identidad del usuario, rol, tipo, nivel,...[7]

Ambos sistemas usan el principio de "denegación por defecto" (todas las operaciones son denegadas a menos que esté específicamente permitida por la política). Sin embargo, cada uno lo aplica de distinta manera:[7]

En general podemos decir que SELinux facilita un control de acceso de grado más fino que AppArmor.[8]​ Por otro lado, AppArmor es más fácil de usar que SELinux ya que la configuración es más fácil de realizar (menos extensa).[8]

En un sistema operativo con SELinux, cada objeto del sistema posee un contexto de seguridad. Este es utilizado por las políticas de seguridad para definir el acceso a estos. El contexto de seguridad se almacena en un atributo del sistema de archivos, en los inodos, por lo tanto, se requiere de un sistema de archivos con atributos extendidos.

Un contexto de seguridad posee la estructura usuario_u:rol_r:tipo_t:nivel. Este se compone por:

Ejemplo de contextos de seguridad:

Para ver el contexto de seguridad de archivos y carpetas, utilice la opción -Z en el comando ls:

SELinux puede permanecer en 3 estados:

SELinux incorpora dos tipos de políticas:

La política de seguridad usada comúnmente por las distribuciones GNU/Linux es la Política de Referencia de SELinux (refpolicy). También, existe la Política de Seguridad de Android (sepolicy).



Escribe un comentario o lo que quieras sobre SELinux (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!