Security-Enhanced Linux o SELinux, es una arquitectura de seguridad integrada en el kernel 2.6.x usando los módulos de seguridad linux (o linux security modules, LSM). Este es un proyecto de la Agencia de Seguridad Nacional (NSA) de los Estados Unidos y de la comunidad SELinux. La integración de SELinux en Red Hat Enterprise Linux fue un esfuerzo conjunto entre al NSA y Red Hat.
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.
Para más información sobre el funcionamiento de SELinux, consulte la Sección 21.3.