Testez vos compétences sur tous nos services d'hébergement et bénéficiez de 15% de réduction!

Utilisez le code à la caisse :

Skills
25.08.2025

Qu’est-ce que SELinux et comment peut-il renforcer la sécurité sous Linux ?

Lorsqu’il s’agit de sécuriser les serveurs Linux, la plupart des administrateurs pensent à l’essentiel : maintenir les paquets à jour, configurer les pare-feu, limiter l’accès SSH. Pourtant, l’un des mécanismes de sécurité les plus puissants est souvent négligé : SELinux (Security-Enhanced Linux). Il ne s’agit pas d’un simple ajout, mais d’un cadre de sécurité au niveau du noyau conçu pour arrêter les intrusions avant qu’elles ne prennent de l’ampleur. Pour les VPS et les serveurs dédiés, SELinux peut faire la différence entre un incident mineur et une compromission totale du système.

Qu’est-ce que SELinux ?

SELinux est un module de sécurité du noyau Linux qui applique le contrôle d’accès obligatoire (MAC).

  • Dans le modèle DAC (Discretionary Access Control) traditionnel, l’accès est déterminé par les propriétaires de fichiers et la racine dispose d’un pouvoir illimité.
  • Dans le modèle MAC (SELinux), l’accès est régi par des règles de sécurité applicables à l’ensemble du système. Même la racine est soumise à des restrictions.

Initialement développé par la NSA en collaboration avec Red Hat, SELinux a été intégré au noyau Linux au début des années 2000 et est aujourd’hui standard dans les distributions d’entreprise telles que RHEL, CentOS, Fedora, AlmaLinux et Rocky Linux.

Le problème : les lacunes de la sécurité Linux traditionnelle

Le modèle de permission classique d’UNIX (DAC) présente des faiblesses critiques :

  • La racine est toute puissante. Tout exploit qui permet d’atteindre la racine compromet l’ensemble du système.
  • Compromission du service = compromission du système. Un module Apache ou un script PHP piraté peut accéder à des données sensibles.
  • Les vecteurs d’attaque modernes contournent le DAC. Les Web-shells, les exploits d’escalade des privilèges et les échappements de conteneurs sont courants.

Scénario réel :
Une vulnérabilité dans le téléchargement d’un CMS permet à un attaquant de lancer un web-shell. Sans SELinux, l’attaquant peut lire config.php, extraire les informations d’identification de la base de données et compromettre l’ensemble de la pile. Avec SELinux, le processus du serveur web (httpd_t) est confiné et ne peut pas accéder à des fichiers en dehors de son domaine désigné.

Fonctionnement de SELinux

Chaque processus, fichier, port et socket possède un contexte de sécurité (label).
Les politiques définissent quels contextes peuvent interagir.

Exemple :

  • Apache fonctionne dans le domaine httpd_t.
  • Les fichiers du site web sont étiquetés httpd_sys_content_t.
  • La politique autorise httpd_t à lire uniquement les fichiers httpd_sys_content_t.

Si Apache tente de lire /etc/shadow (shadow_t), le noyau refuse la requête et enregistre la violation.

Modes de fonctionnement

  • Enforcing : les politiques sont appliquées, les violations sont bloquées.
  • Permissif : les violations sont enregistrées mais ne sont pas bloquées (utile pour les tests).
  • Désactivé : SELinux est désactivé (non recommandé).

Meilleure pratique : commencer par Permissive, examiner les journaux, affiner les politiques, puis passer à Enforcing pour la production.

Pourquoi SELinux est important pour l’hébergement et le DevOps

  • Isolation des processus : limite les dommages lorsqu’un seul service est compromis.
  • Application du moindre privilège : même l’utilisateur root ne peut pas contourner les restrictions de la politique.
  • Forensics et visibilité : toutes les actions refusées sont enregistrées (/var/log/audit/audit.log).
  • Sécurité des conteneurs : empêche les conteneurs Docker/Podman de sortir de leurs limites.
  • Conformité : requise dans les environnements réglementés (PCI DSS, HIPAA, déploiements militaires).

Types de politiques

  • Ciblé (par défaut) : restreint uniquement les services orientés réseau (Apache, Nginx, Postfix, Dovecot).
  • Strict : applique le MAC à tous les processus.
  • MLS/MCS : politiques avancées pour une sécurité à plusieurs niveaux ou de niveau gouvernemental.

Pour la plupart des charges de travail des VPS et des serveurs dédiés, la politique ciblée est le meilleur équilibre entre la convivialité et la protection.

Exemples pratiques

Vérifier l’état de SELinux

getenforce sestatus

Restaurer les contextes de fichiers après avoir déplacé des fichiers web

restorecon -Rv /var/www/html

Lister les étiquettes de sécurité des fichiers

ls -Z /var/www/html

Autoriser les connexions sortantes des services web (par exemple, les appels API)

setsebool -P httpd_can_network_connect 1

Examiner les actions refusées dans les journaux

ausearch -m avc -ts recent

Conclusion

SELinux est plus qu’une fonction de sécurité supplémentaire ; c’est un cadre fondamental qui redéfinit la manière dont Linux applique le contrôle d’accès. En confinant les processus, en réduisant l’impact des vulnérabilités et en fournissant des pistes d’audit détaillées, SELinux transforme un système Linux en un environnement beaucoup plus résistant. Bien qu’il nécessite une configuration et une compréhension minutieuses, les avantages en matière de sécurité qu’il apporte aux infrastructures de serveurs modernes en font un composant essentiel pour tout déploiement de production.

Testez vos compétences sur tous nos services d'hébergement et bénéficiez de 15% de réduction!

Utilisez le code à la caisse :

Skills