Comment sécuriser vos serveurs Linux avec SELinux

SELinux peut vous aider à sécuriser votre serveur contre les processus ou applications défaillants. Développé par la NSA (National Security Agency) pour sécuriser les dispositifs gouvernementaux contre les attaquants, l’architecture Linux renforcement de la sécurité (SE) utilise des protocoles de sécurité pour restreindre l’accès aux ressources système. Découvrez comment vous pouvez l’utiliser pour votre serveur.
Table des matières
- Architecture SELinux
- Comment installer ou activer SELinux
- Comment configurer SELinux
- Politiques SELinux
- Comment gérer les erreurs SELinux
- Comment désactiver SELinux
- Questions fréquentes
Lisez aussi : Qu’est-ce que le shell Rc et comment l’installer dans Linux
Architecture SELinux
SELinux est un module de noyau qui peut être activé ou désactivé par l’administrateur système. Comme l’accès aux fichiers et aux ports réseau est limité par une politique de sécurité, un programme défectueux ou un démon mal configuré ne peut pas avoir un impact énorme sur la sécurité du système.
Lorsqu’une application ou un processus demande un accès au fichier dans le système SELinux, il vérifie d’abord le cache des vecteurs d’accès (AVC). Si l’autorisation est déjà mise en cache, elle renvoie le fichier pour l’application demandée. Si l’autorisation n’est pas mise en cache, alors elle envoie la demande au serveur de sécurité. Le serveur de sécurité vérifie toutes les politiques de sécurité dans sa base de données. Selon la politique de sécurité, l’autorisation est alors accordée ou refusée.
Il n’y a pas de concept de root ou de superutilisateur dans SELinux. La sécurité d’une distribution Linux non modifiée sans SE Linux dépend de la correction du noyau, de toutes les applications privilégiées et de leurs configurations. Une faute ou un bogue dans l’un de ces composants peut créer une surface d’attaque et compromettre le système.
D’un autre côté, un système Linux modifié avec SELinux dépend principalement de la correction du noyau et des politiques de sécurité.
Lisez aussi : Comment utiliser la commande Rm dans Linux
Comment installer ou activer SELinux
SELinux signifie Linux renforcé en matière de sécurité. SELinux fait partie du noyau Linux depuis 2003. Par conséquent, vous n’avez pas à l’installer séparément. Dans la plupart des distributions Linux de bureau, cependant, il est désactivé par défaut.

SELinux possède trois modes principaux : Appliqué, Permissif et Désactivé. Discutons brièvement de chacun :
- Appliqué : Cela active et protège le système Linux en utilisant des politiques de sécurité.
- Permissif : Il n’applique pas les politiques de sécurité mais enregistre tout. Ce mode est utile pour le dépannage.
- Désactivé : Il désactive SELinux. Cette option n’est pas recommandée, et si vous réactivez SELinux dans votre système, cela peut entraîner des erreurs à cause des modifications d’étiquetage.
Remarque : Ubuntu est livré avec AppArmor, une alternative à SELinux. Bien que SELinux soit disponible sur Ubuntu, il n’est pas compatible avec AppArmor et peut rendre votre système instable s’il est activé. Si vous avez vraiment besoin d’utiliser SELinux sous Ubuntu, assurez-vous de désactiver AppArmor et de faire des tests intensifs (commencez par le mode permissif) avant de l’utiliser pour un usage en production.
- Pour activer SELinux dans votre système, vous devez éditer le fichier “/etc/selinux/config”. Ouvrez ce fichier dans votre éditeur de texte.
sudo nano /etc/selinux/config- À l’intérieur du fichier de configuration, définissez
SELINUX=permissif. Appuyez sur Ctrl + O et appuyez sur Entrée pour enregistrer le fichier, puis appuyez sur Ctrl + X pour quitter l’éditeur. SELinux est maintenant activé dans votre système.
Remarque : si vous essayez d’appliquer SELinux directement avant de le rendre permissif, cela peut mal étiqueter les fichiers et les processus et vous empêcher de démarrer.
- Pour réétiqueter automatiquement le système de fichiers, créez un fichier appelé “.autorelabel” dans votre système de fichiers racine. Lorsque vous démarrez votre système, SELinux réétiquettera automatiquement votre système de fichiers. Pour réduire les erreurs, maintenez l’option
SELINUX=permissiftelle quelle dans le dossier de configuration. Après que tout a été réétiqueté, définissez SELinux surSELINUX=appliquédans “/etc/selinux/config” et redémarrez.
SELinux sera alors appliqué avec succès dans votre système.
Lisez aussi : Comment personnaliser votre invite de terminal Linux en utilisant Starship
Comment configurer SELinux
SELinux est une architecture qui permet aux administrateurs système de contrôler ce qui peut accéder aux ressources système. SELinux limite l’accès au système en utilisant des politiques de sécurité. Il existe plusieurs façons de configurer SELinux pour protéger votre système, avec les plus populaires étant la “politique ciblée” et la “sécurité multi-niveau” (MLS).
Une politique ciblée est la politique de sécurité par défaut. Elle couvre un ensemble de politiques de sécurité, telles que l’accès aux fichiers, les tâches, les services, etc. La sécurité multi-niveau (MLS) est généralement utilisée par les gouvernements et les grandes organisations, elle est très compliquée à mettre en place et nécessite une équipe dédiée pour la gérer.
Vous pouvez vérifier votre mode SELinux actuel avec les commandes getenforce et sestatus.
Si vous n’avez besoin de changer le mode SELinux que pour la session en cours, vous pouvez exécuter les deux commandes suivantes.
sudo setenforce 0: Pour définir SELinux en mode permissif pour la session en cours.sudo setenforce 1: Pour définir SELinux en mode appliqué pour la session en cours.
Politiques SELinux
SELinux fonctionne comme un système d’étiquetage. Il associe chaque fichier, port et processus à une étiquette. Les étiquettes sont une manière logique de regrouper les éléments ensemble. Le noyau est responsable de la gestion de l’étiquette lors du démarrage.

Les politiques SELinux peuvent être gérées par des booléens. Par exemple, définissons un booléen pour un démon appelé httpd. httpd est un démon serveur HTTP Apache que nous utilisons pour exécuter des serveurs web sous Linux.
Pour lister tous les modules spécifiques à httpd, exécutez la commande suivante dans votre terminal :
getsebool -a | grep httpdIci, l’option -a liste tous les booléens, et nous utilisons grep pour filtrer uniquement les booléens liés à httpd. Lisez cet article pour en savoir plus sur grep dans Linux.
La sortie de la commande ci-dessus ressemble à l’image ci-dessous.
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythty --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd_dbus_sssd --> offÀ partir de la liste ci-dessus, prenons le booléen httpd_can_connect_ftp et changeons sa valeur. D’abord, vérifiez la valeur de httpd_can_connect_ftp, qu’elle soit activée ou désactivée :
getsebool httpd_can_connect_ftpDéfinissons la valeur de httpd_can_connect_ftp sur autoriser.
setsebool -P httpd_can_connect_ftp 1Ici, 1 représente autoriser ou activé. Le tag -P est utilisé pour rendre le changement permanent. Si vous listez à nouveau les booléens liés à httpd, nous pouvons voir le changement dans la valeur de httpd_can_connect_ftp à on.
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> on
httpd_can_connect_ldap --> off
httpd_can_connect_mythty --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd_dbus_sssd --> offLisez aussi : Comment configurer WordPress en utilisant Docker sous Ubuntu
Comment gérer les erreurs SELinux
SELinux a généralement 4 types d’erreurs :
- Le système a été compromis : SELinux protège votre système en restreignant l’accès, mais parfois, cela n’est pas suffisant. Si vous obtenez ces erreurs, cela signifie que votre système peut être compromis. Prenez les mesures nécessaires dès que possible.
- Erreur dans la politique : si un bogue dans la politique doit être corrigé, cette erreur apparaît.
- Les étiquettes sont incorrectes : Ce message d’erreur apparaît lors de la personnalisation des étiquetages par l’utilisateur ou lorsque l’auto-étiquetage par SELinux échoue. Il existe de nombreux outils sur le marché pour corriger ces erreurs d’étiquetage.
- Une politique doit être corrigée : Ces erreurs surviennent lorsque vous apportez des modifications au système sans en informer SELinux. Vous pouvez corriger cette erreur en utilisant des booléens ou des modules de politique.
Comment désactiver SELinux
Désactiver SELinux n’est jamais une bonne option pour les serveurs d’entreprise et gouvernementaux et les appareils exposés au public qui sont très susceptibles d’être attaqués. Mais si vous souhaitez désactiver SELinux dans votre système, suivez ces instructions.
- Allez au fichier de configuration SE Linux dans “/etc/selinux” et changez le mode de configuration SE Linux de
appliquéàpermissif, puis redémarrez votre système. - Changez le mode SELinux de
permissifàdésactivé.
Après le prochain redémarrage, SELinux dans votre système est désactivé et devient une machine Linux normale.
Lisez aussi : Comment configurer un pare-feu sous Linux
Questions fréquentes
SELinux est-il présent dans Android ?
Oui, SELinux est implémenté dans Android depuis la version 4.3. Cela a renforcé la sécurité d’Android pour protéger les utilisateurs d’Android contre les cyberattaques.
SELinux est-il un pare-feu ?
SELinux n’est pas un pare-feu. Le pare-feu contrôle le trafic entre l’ordinateur et le réseau. Bien que SELinux contrôle et régule l’accès au système de fichiers et au réseau de différents programmes à l’intérieur du système, nous pouvons considérer SELinux comme un pare-feu interne pour protéger le système de ses programmes.
SELinux est-il un système d’exploitation ?
SELinux n’est pas un système d’exploitation. C’est un module de sécurité du noyau qui existe dans le noyau Linux. Il fournit un support pour les politiques de sécurité de contrôle d’accès et les contrôles d’accès obligatoires (MAC). Pour l’appeler un système d’exploitation, il a besoin de plus que le noyau lui-même. Dans la plupart des systèmes d’exploitation basés sur Linux, vous pouvez utiliser SELinux.
Devez-vous utiliser SELinux ?
Si vous êtes un administrateur système et que vous connaissez le système Unix, vous devriez utiliser SELinux, car cela renforce la sécurité de votre serveur et minimise la surface d’attaque. Si vous n’êtes pas très familiarisé avec les systèmes Unix, vous pouvez également utiliser Apparmor. C’est relativement plus facile que SELinux. Si vous êtes un utilisateur domestique et utilisez Linux uniquement sur votre ordinateur de bureau, il n’est pas nécessaire d’utiliser SELinux. Cela ne fera que vous causer des maux de tête pour la configuration et réduire votre productivité.