Un constat terrible
Il arrive encore aujourd'hui de lire des procédures d'installation de logiciels destinés aux entreprises, grandes ou petites, qui commencent par cette directive, avancée comme un pré-requis mais qui sonne comme un terrible aveu, directive qui dit à peu près ceci :
Avant de débuter l'installation sur Linux, vérifiez que SELinux est désactivé.
Il arrive, toujours aujourd'hui, de lire sur des forums de solutions pour administrateurs système, et parfois même sur des forums de support d'éditeurs, des contributions qui disent à peu prés ceci :
J'ai désactivé SELinux et finalement ça marche. Pas la peine de chercher plus loin !
![]()
Nous vous expliquons pourquoi...
Désactiver SELinux pour installer et faire fonctionner un logiciel sur un serveur, c'est un peu comme supprimer les portes blindées d'une banque pour installer une nouvelle machine à compter les billets. C'est vrai, tout circule plus librement: le personnel, les clients, les billets, les documents de santé qui accompagnent les demandes de prêt immobilier, les braqueurs, les concurrents...
Le distributeur de votre système GNU/Linux livre une politique SELinux adaptée à ce système d'exploitation et prévue pour les principaux usages qu'en font les entreprises : serveur de base de données, serveur web, serveur d'application, serveur d'impression, ...
Cette politique SELinux par défaut est ajustable à loisir de deux façons:
- au moyen de commutateurs booléens, qui activent/désactivent certains pans de la politique déjà prévus par le distributeur Linux,
- au moyen de modules complémentaires de politique SELinux développés par des éditeurs de logiciels tiers pour accompagner le logiciel qu'ils vendent/distribuent, ou par des ingénieurs système tels que ceux de LHQG.
Écrire une politique SELinux n'est pas une tâche insurmontable. Mais c'est surtout une tâche importante pour assurer une bonne intégration du logiciel avec le système d'exploitation.
La politique SELinux, ou le module de politique, dédié à un logiciel donné garantit que le système Linux n'autorisera que les actions légitimes prévues par l'équipe de développement.
Si les comportements qui consistent à :
- exécuter un shell,
- devenir root,
- effacer des traces système ou des logs applicatifs,
- se connecter à un port réseau distant autre que celui d'une base donnée de l'entreprise
- lire toute une série de fichiers et les envoyer...
ne font pas partie des actions prévues, alors il n'y a aucune raison de prendre le risque de laisser ces comportements illicites se produire !
Toute application, tout logiciel, toute bibliothèque de fonctions ou d'API, contient quelques défauts, c'est inévitable, la perfection n'est pas de ce monde. Chaque bug ou chaque défaut porte en lui le potentiel de se transformer un jour en faille par laquelle une personne aux motivations douteuses tentera de s'introduire.
Par conséquent, recommander de désactiver SELinux pour permettre à son logiciel de fonctionner, revient d'une certaine façon pour l'éditeur à confesser qu'il n'a pas fait ce travail indispensable, soit qu'il n'ait pas pu ou su le faire, soit qu'il n'en ait pas vu la valeur.
Dans certains cas, heureusement rares mais bien pires encore, cela pourrait revenir à confesser que l'éditeur ne sait pas ou plus vraiment ce qu'est censé faire son logiciel !
SELinux n'est pas un empêcheur de tourner en rond, c'est un empêcheur de pirater dans tous les sens !