SELinux

De EcuRed
SELinux
Información sobre la plantilla
Error al crear miniatura: El fichero parece no existir: /srv/www/docs/images/3/39/SELinux_admin.jpg

Arquitectura de seguridad
CreadorAgencia de Seguridad Nacional (NSA) de los Estados Unidos y de la comunidad SELinux

SELinux (del inglés Security-Enhanced Linux, Seguridad Mejorada de Linux) es una característica de seguridad de Linux que provee una variedad de políticas de seguridad, incluyendo el estilo de acceso a los controles del Departamento de Defensa de Estados Unidos, a través del uso de módulos de Seguridad en el núcleo Linux. No es una distribución de Linux, sino un set de modificaciones pueden ser aplicado a un sistema Tipo-Unix como Linux y BSD.

Contenido

SELinux

SELinux proporciona un sistema flexible de control de acceso obligatorio (mandatory access control, MAC) incorporado en el Kernel. Bajo el Linux estándar se utiliza el control de acceso a discreción (discretionary access control, DAC), en el que un proceso o aplicación ejectutándose como un Usuario (UID o SUID) tiene los permisos y de ese usuario en los objetos, archivos, zócalos y otros procesos. Al ejecutar un kernel SELinux MAC se protege al sistema de aplicaciones maliciosas o dañadas que pueden perjudicar o destruir el sistema. SELinux define el acceso y los derechos de transición de cada usuario, aplicación, proceso y archivo en el sistema. SELinux gobierna la interacción de estos sujetos y objectos usando una política de seguridad que especifica cuán estricta o indulgente una instalación de Red Hat Enterprise Linux dada debería de ser.

En su mayor parte, SELinux es casi invisible para la mayoría de los usuarios. Solamente los administradores de sistemas se deben de preocupar sobre lo estricto que debe ser una política a implementar en sus entorno de servidores. La política puede ser tan estricta o tan indulgente como se requiera, y es bastante detallada. Este detalle le dá al kernel SELinux un control total y granular sobre el sistema completo.

Cuando un sujeto, tal como una aplicación, intenta acceder a un objeto tal como a un archivo, el servidor de aplicación de políticas verifica un caché de vector de acceso (AVC), donde se registran los permisos de objeto y del sujeto. Si no se puede tomar una decisión basado en los datos en el AVAC, la petición continua al servidor de seguridad, el cual busca el contexto de securidad de la aplicación y del archivo en una matriz. Los permisos son entonces otorgados o negados, con un mensaje de avc: denied detallado en /var/log/messages. Los sujetos y objetos reciben su contexto de seguridad a partir de la política instalada, que también proporciona información para llenar la matriz de seguridad del servidor.

Además de ejecutarse en un modo impositivo, SELinux puede ejecutarse en un modo permisivo, donde el AVC esverificado y se registran los rechazos, pero SELinux no hace cumplir esta política.

Historia y objetivo

SELinux aparece a finales del año 2000 lanzado y distribuido por la Agencia Nacional de Seguridad de los Estados Unidos (NSA). El objetivo del mismo es, por un lado, demostrar la posibilidad de implementar el Modelo de Seguridad de Control de Acceso Obligatorio (MDAC) y el Control de Acceso Basado en Roles (RBAC) en entorno Linux.

Un segundo objetivo, hacer frente a la eventualidad de que los sistemas operativos "trusted" comerciales dejarán de estar disponibles. SELinux puede considerarse como una implementación práctica del modelo de seguridad de control de acceso obligatorio basado en el núcleo del sistema operativo Linux. Un administrador de un sistema SELinux tiene la posibilidad de configurar una política donde se define los archivos a que tiene acceso cada programa.

Mecanismos

Error al crear miniatura: El fichero parece no existir: /srv/www/docs/images/b/b9/SELinux_grupo.jpg
Asignación de un grupo a los usuarios para mayor seguridad del sistema
Para poder realizar esto, SELinux implementa un mecanismo para establecer en cada archivo y proceso el contexto en el que está siendo utilizado.

Mediante la utilización de un módulo del sistema operativo, es posible establecer reglas para permitir o denegar el acceso a cualquier archivo del sistema. El sistema operativo dispone de un proceso servidor de seguridad, que se ejecuta como parte del núcleo, que decide en base a la política de seguridad definida por el administrador, si algo (un proceso o un usuario) dispone de permiso para acceder a un objeto sea este un archivo o dispositivo, mecanismo de control denominado Type Enforcement (TE). Así, ante una incidencia de seguridad como puede ser un desbordamiento de búfer en un proceso ejecutado por root, el atacante sólo podrá acceder a los archivos para los cuales el proceso vulnerable esté autorizado por la política del sistema sin tener ningún efecto sobre el resto de archivos u objetos del sistema. SELinux también permite implementar un modelo adicional de seguridad (Multi-Level Security, MLS) en el que además de lo indicado hasta ahora es posible, para cada objeto, una capa de seguridad conocida como "altamente secreta", "secreta", "confidencial" y "sin restricción".

En este modelo, a los mecanismos descritos anteriormente se añade la restricción de que únicamente aquellos procesos y usuarios situados en la misma capa o una capa superior pueden acceder a los objetos, pero nunca en sentido contrario.

Características

Ventajas y desventajas

Instalación

SELinux viene distribuyéndose como una colección de parches para el código fuente del núcleo del sistema operativo, actualmente se ha cambiado la arquitectura constituyéndose en un módulo que utiliza los enganches de seguridad facilitados por el Linux Security Module (LSM), por lo que como paso previo a la instalación de SELinux debe instalarse el sistema operativo Linux.

Los requerimientos para la instalación del sistema operativo Linux son: Utilizar sistema de archivos ext2 o ext3, instalar las herramientas necesarias para compilar el núcleo e instalar los diversos componentes que deberá ejecutar el servidor (como BIND, Apache, Samba).

La distribución actual de SELinux incluye:

Fuentes