Chapitre 21. SELinux

Security-Enhanced Linux (ou SELinux) est une architecture de sécurité intégrée dans le noyau 2.6.x à l'aide des modules LSM (ou linux security modules). Il s'agit d'un projet de l'organisation United States National Security Agency (NSA) et de la communauté SELinux. L'intégration de SELinux dans Red Hat Enterprise Linux est le fruit d'un effort commun entre l'organisation NSA et Red Hat.

21.1. Introduction à SELinux

SELinux fournit un système de contrôle d'accès obligatoire (ou MAC, de l'anglais mandatory access control) intégré au noyau Linux. Sous un système standard de contrôle d'accès discrétionnaire Linux (ou DAC, de l'anglais discretionary access control), une application ou un processus exécuté en tant qu'utilisateur (UID ou SUID) reçoit la permission de l'utilisateur sur des objets tels que des fichiers, des sockets et d'autres processus. L'exécution d'un noyau MAC SELinux permet de protéger le système contre des applications malveillantes ou défectueuses qui peuvent endommager ou détruire le système. SELinux définit les droits d'accès et de transition de chaque utilisateur, application, processus et fichier du système. SELinux gouverne alors les interactions de ces sujets et objets à l'aide d'une politique de sécurité qui spécifie le degré de rigueur ou de souplesse d'une installation donnée de Red Hat Enterprise Linux.

Dans l'ensemble, SELinux est presque complètement invisible pour les utilisateurs du système. Seuls les administrateurs système doivent se préoccuper de la rigureur d'une politique devant être implémentée dans leur environnement serveur. La politique, qui peut être aussi rigoureuse ou souple que nécessaire, est définie de manière très détaillée. Ce niveau de détails donne au noyau SELinux un contrôle complet et granulaire sur l'ensemble du système.

Lorsqu'un sujet tel qu'une application tente d'accéder à un objet tel qu'un fichier, le serveur d'application des politiques dans le noyau cherche un AVC (ou access vector cache), dans lequel les permissions sur des sujets et des objets sont mises en cache. Si une décision ne peut pas être prise en fonction des données présentes dans l'AVC, la requête continue son chemin vers le serveur de sécurité qui recherche le contexte de sécurité de l'application et du fichier dans la matrice. La permission est alors accordée ou refusée et un message avc: denied apparaît dans /var/log/messages de manière détaillée. Les sujets et les objets obtiennent leur contexte de sécurité de la politique installée, qui fournit également les informations peuplant la matrice du serveur de sécurité.

Outre l'exécution en mode d'application (ou enforcing mode), SELinux peut tourner dans un mode permissif (ou permissive mode), où l'AVC est consulté et les refus sont journalisés, mais SELinux n'applique pas cette politique.

Pour obtenir davantage d'informations sur la manière selon laquelle SELinux fonctionne, consultez la Section 21.3.