Qu’est-ce que SELinux ?
SELinux signifie Security-Enhanced Linux, c’est-à-dire une version de Linux dont la sécurité est améliorée. Sur le fond, Linux est un système d’exploitation à l’instar de Windows, Android ou iOS à ceci près que le développement de Linux n’est pas dû à une entreprise individuelle et que Linux a dès le départ été prévu comme un projet open source. Le noyau Linux est un code source accessible à tous les développeurs aussi bien pour des projets non lucratifs que commerciaux. Il existe ensuite différents systèmes d’exploitation basés sur le noyau Linux, que l’on appelle collectivement des distributions. Ubuntu, Debian ou Fedora font partie des distributions Linux les plus connues.
Que signifie « Security-Enhanced » concrètement ?
Le code du noyau Linux est constamment développé par les entreprises, les indépendants et les organisations à but non lucratif. Security-Enhanced Linux est une extension du noyau Linux disponible sous la forme d’un module de sécurité propre. SELinux fait officiellement partie du noyau Linux depuis 2003. Certaines distributions Linux proposent SELinux par défaut mais le module peut être désactivé simplement. SELinux aide les administrateurs à obtenir un contrôle strict sur tous les processus d’un système. Les processus considérés comme non nécessaires sont bloqués. SELinux réduit considérablement le risque de failles de sécurité dans les programmes utilisateur.
Il peut être utile de limiter les droits d’accès même si l’on fait confiance aux programmes. Un détournement de l’application par des tiers pourrait entraîner des dommages très importants. Si les programmes infectés par des malwares ont la possibilité d’accéder à tous les processus et à tous les fichiers d’un système, ils ne manqueront pas d’exploiter cette faille. SELinux limite l’accès et donc la portée des dommages.
Un contrôle strict des accès au système d’exploitation
SELinux offre une architecture de sécurité spéciale basée sur les principes du Mandatory Access Control (MAC). Contrairement au noyau Linux habituel, avec SELinux, les accès aux processus et aux fichiers du système d’exploitation sont en principe limités à l’essentiel. Une stratégie de contrôle stricte ainsi que des règles de sécurité correspondantes doivent garantir la confidentialité et l’intégrité des informations. Les programmes utilisateur et le système d’exploitation sont clairement séparés par SELinux.
Comment les droits d’accès sont-ils limités par SELinux ?
La version traditionnelle de Linux utilise le Discretionary Access Control (DAC) comme contrôle des accès. Les utilisateurs et les applications disposant de droits correspondants bénéficient généralement d’un accès illimité aux fichiers et processus concernés du système d’exploitation. Avec le Mandatory Access Control de SELinux, l’administrateur détermine à travers des règles de sécurité clairement définies dans quelles conditions et dans quel contexte un utilisateur détenant des droits peut accéder à certains processus ou fichiers du système d’exploitation. Si ces conditions ou ce contexte (c’est-à-dire les attributs) ne sont pas réunis, l’accès est refusé.
Pour déterminer ces règles dans SELinux, on attribue différentes étiquettes :
- utilisateur
- rôle
- type
- niveau
Ces étiquettes peuvent être définies pour chaque processus et fichier et reprises dans les règles déterminées. Par conséquent, une application peut uniquement accéder aux dossiers disposant d’une étiquette précise. La vérification des règles est appelée SELinux Enforcement.
Avantages et inconvénients de SELinux
SELinux rend plus difficile ou impossible l’utilisation abusive des droits d’utilisateur, comme on peut le voir dans les programmes utilisateur comportant des failles de sécurité. Par conséquent, le système d’exploitation est mieux protégé. Les distributeurs de Linux proposent le module SELinux avec différents paquets de polices et des règles de sécurité correspondantes ce qui simplifie la configuration de la couche de sécurité. Les administrateurs autorisés peuvent également définir personnellement les règles de sécurité.
Bien que SELinux apporte davantage de contrôle aux administrateurs sur les processus de leurs systèmes, ce programme ne facilite la résolution des problèmes que dans une mesure limitée. Si un accès est bloqué, SELinux renvoie un message d’erreur pouvant être très vague ce qui complique la recherche des erreurs. Par ailleurs, SELinux est un module relativement complexe. De nombreux administrateurs trouvent la gestion des règles de sécurité et la définition des attributs trop complexes et laborieuses. En outre, SELinux réduit légèrement la performance du système d’exploitation.
SELinux est un outil de sécurité très efficace qui nécessite toutefois un travail supplémentaire. Ce logiciel peut uniquement déployer son efficacité si l’on ne craint pas les efforts nécessaires à la configuration. Un système à moitié paramétré n’apportera pratiquement aucun avantage. Son utilisation est toutefois fortement recommandée pour les environnements professionnels avec des données sensibles.
Comment est né SELinux ?
SELinux a principalement été développé par la NSA (les services secrets américains) et le distributeur de Linux Red Hat. Red Hat Enterprise Linux 4 et la distribution de Linux Fedora, qui a reçu l’aide de Red Hat, ont été les premiers systèmes d’exploitation proposant une compatibilité totale avec SELinux. Outre Red Hat et Fedora, Gentoo Hardened Linux offre également un support de SELinux relativement complet. Le module de sécurité AppArmor constitue une alternative à SELinux qui est principalement supporté par les distributions comme openSUSE ou les plateformes basées sur Debian.