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’ex­ploi­ta­tion à l’instar de Windows, Android ou iOS à ceci près que le dé­ve­lop­pe­ment de Linux n’est pas dû à une en­tre­prise in­di­vi­duelle et que Linux a dès le départ été prévu comme un projet open source. Le noyau Linux est un code source ac­ces­sible à tous les dé­ve­lop­peurs aussi bien pour des projets non lucratifs que com­mer­ciaux. Il existe ensuite dif­fé­rents systèmes d’ex­ploi­ta­tion basés sur le noyau Linux, que l’on appelle col­lec­ti­ve­ment des dis­tri­bu­tions. Ubuntu, Debian ou Fedora font partie des dis­tri­bu­tions Linux les plus connues.

Que signifie « Security-Enhanced » con­crè­te­ment ?

Le code du noyau Linux est cons­tam­ment développé par les en­tre­prises, les in­dé­pen­dants et les or­ga­ni­sa­tions à but non lucratif. Security-Enhanced Linux est une extension du noyau Linux dis­po­nible sous la forme d’un module de sécurité propre. SELinux fait of­fi­ciel­le­ment partie du noyau Linux depuis 2003. Certaines dis­tri­bu­tions Linux proposent SELinux par défaut mais le module peut être désactivé sim­ple­ment. SELinux aide les ad­mi­nis­tra­teurs à obtenir un contrôle strict sur tous les processus d’un système. Les processus con­si­dé­rés comme non né­ces­saires sont bloqués. SELinux réduit con­si­dé­ra­ble­ment le risque de failles de sécurité dans les pro­grammes uti­li­sa­teur.

Il peut être utile de limiter les droits d’accès même si l’on fait confiance aux pro­grammes. Un dé­tour­ne­ment de l’ap­pli­ca­tion par des tiers pourrait entraîner des dommages très im­por­tants. Si les pro­grammes infectés par des malwares ont la pos­si­bi­lité d’accéder à tous les processus et à tous les fichiers d’un système, ils ne man­que­ront 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’ex­ploi­ta­tion

SELinux offre une ar­chi­tec­ture de sécurité spéciale basée sur les principes du Mandatory Access Control (MAC). Con­trai­re­ment au noyau Linux habituel, avec SELinux, les accès aux processus et aux fichiers du système d’ex­ploi­ta­tion sont en principe limités à l’essentiel. Une stratégie de contrôle stricte ainsi que des règles de sécurité cor­res­pon­dantes doivent garantir la con­fi­den­tia­lité et l’intégrité des in­for­ma­tions. Les pro­grammes uti­li­sa­teur et le système d’ex­ploi­ta­tion sont clai­re­ment séparés par SELinux.

Comment les droits d’accès sont-ils limités par SELinux ?

La version tra­di­tion­nelle de Linux utilise le Dis­cre­tio­nary Access Control (DAC) comme contrôle des accès. Les uti­li­sa­teurs et les ap­pli­ca­tions disposant de droits cor­res­pon­dants bé­né­fi­cient gé­né­ra­le­ment d’un accès illimité aux fichiers et processus concernés du système d’ex­ploi­ta­tion. Avec le Mandatory Access Control de SELinux, l’ad­mi­nis­tra­teur détermine à travers des règles de sécurité clai­re­ment définies dans quelles con­di­tions et dans quel contexte un uti­li­sa­teur détenant des droits peut accéder à certains processus ou fichiers du système d’ex­ploi­ta­tion. Si ces con­di­tions ou ce contexte (c’est-à-dire les attributs) ne sont pas réunis, l’accès est refusé.

Pour dé­ter­mi­ner ces règles dans SELinux, on attribue dif­fé­rentes éti­quettes :

  • uti­li­sa­teur
  • rôle
  • type
  • niveau

Ces éti­quettes peuvent être définies pour chaque processus et fichier et reprises dans les règles dé­ter­mi­nées. Par con­sé­quent, une ap­pli­ca­tion peut uni­que­ment accéder aux dossiers disposant d’une étiquette précise. La vé­ri­fi­ca­tion des règles est appelée SELinux En­for­ce­ment.

Avantages et in­con­vé­nients de SELinux

SELinux rend plus difficile ou im­pos­sible l’uti­li­sa­tion abusive des droits d’uti­li­sa­teur, comme on peut le voir dans les pro­grammes uti­li­sa­teur com­por­tant des failles de sécurité. Par con­sé­quent, le système d’ex­ploi­ta­tion est mieux protégé. Les dis­tri­bu­teurs de Linux proposent le module SELinux avec dif­fé­rents paquets de polices et des règles de sécurité cor­res­pon­dantes ce qui simplifie la con­fi­gu­ra­tion de la couche de sécurité. Les ad­mi­nis­tra­teurs autorisés peuvent également définir per­son­nel­le­ment les règles de sécurité.

Bien que SELinux apporte davantage de contrôle aux ad­mi­nis­tra­teurs sur les processus de leurs systèmes, ce programme ne facilite la ré­so­lu­tion 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 re­la­ti­ve­ment complexe. De nombreux ad­mi­nis­tra­teurs trouvent la gestion des règles de sécurité et la dé­fi­ni­tion des attributs trop complexes et la­bo­rieuses. En outre, SELinux réduit lé­gè­re­ment la per­for­mance du système d’ex­ploi­ta­tion.

En résumé

SELinux est un outil de sécurité très efficace qui nécessite toutefois un travail sup­plé­men­taire. Ce logiciel peut uni­que­ment déployer son ef­fi­ca­cité si l’on ne craint pas les efforts né­ces­saires à la con­fi­gu­ra­tion. Un système à moitié paramétré n’apportera pra­ti­que­ment aucun avantage. Son uti­li­sa­tion est toutefois fortement re­com­man­dée pour les en­vi­ron­ne­ments pro­fes­sion­nels avec des données sensibles.

Comment est né SELinux ?

SELinux a prin­ci­pa­le­ment été développé par la NSA (les services secrets amé­ri­cains) et le dis­tri­bu­teur de Linux Red Hat. Red Hat En­ter­prise Linux 4 et la dis­tri­bu­tion de Linux Fedora, qui a reçu l’aide de Red Hat, ont été les premiers systèmes d’ex­ploi­ta­tion proposant une com­pa­ti­bi­lité totale avec SELinux. Outre Red Hat et Fedora, Gentoo Hardened Linux offre également un support de SELinux re­la­ti­ve­ment complet. Le module de sécurité AppArmor constitue une al­ter­na­tive à SELinux qui est prin­ci­pa­le­ment supporté par les dis­tri­bu­tions comme openSUSE ou les pla­te­formes basées sur Debian.

Aller au menu principal