Jump to section

SELinux, qu'est-ce que c'est ?

Copier l'URL

Comment migrer depuis CentOS Linux vers un système d'exploitation conçu pour le cloud ?

Pour réussir une migration depuis CentOS Linux vers un système d'exploitation conçu pour le cloud, le choix d’un SE qui corresponde à vos objectifs cloud et adapté à la production est crucial pour la standardisation.

SELinux (Security-Enhanced Linux) est une architecture de sécurité pour systèmes Linux® qui permet aux administrateurs de mieux contrôler les accès au système. Cette architecture a initialement été conçue par la NSA, l'agence de sécurité nationale des États-Unis, comme une série de correctifs pour le noyau Linux sur la base de la structure LSM (Linux Security Modules).  

SELinux a été distribué à la communauté Open Source en l'an 2000 et intégré à la version en amont du noyau Linux en 2003.

SELinux définit les contrôles d'accès pour les applications, processus et fichiers d'un système. Il utilise des politiques de sécurité, c'est-à-dire des ensembles de règles qui lui indiquent ce à quoi un utilisateur peut accéder ou non, pour mettre en application les autorisations d'accès définies par une politique. 

Lorsqu'un sujet (une application ou un processus) envoie une requête pour accéder à un objet (par exemple un fichier), SELinux consulte un cache AVC (Access Vector Cache) où sont temporairement stockées les autorisations d'accès pour les différents sujets et objets.

Si SELinux n'est pas en mesure de prendre une décision relative à l'accès en se basant sur les autorisations stockées dans le cache AVC, il envoie une requête au serveur de sécurité. Celui-ci recherche alors le contexte de sécurité de l'application ou du processus et du fichier. Puis le contexte de sécurité est appliqué depuis la base de données de politiques SELinux. L'autorisation d'accès est ensuite accordée ou refusée. 

En cas de refus, le message « avc: denied » apparaît dans le fichier /var/log.messages.

Configuration de SELinux

Il existe différentes façons de configurer SELinux pour protéger un système. La politique ciblée et la politique de sécurité à plusieurs niveaux (MLS) sont les méthodes les plus couramment utilisées.

La politique ciblée est l'option par défaut. Elle couvre un certain nombre de processus, tâches et services. La politique MLS peut être très complexe. Elle est donc généralement utilisée uniquement par les organismes gouvernementaux. 

Pour consulter la liste des processus qui doivent s'exécuter sur un système, il suffit d'ouvrir le fichier /etc/sysconfig/selinux. Ce fichier comprend une section qui indique le mode de SELinux : Permissive (permissif), Enforcing (appliqué) ou Disabled (désactivé). Le type de politique qui devrait être chargée est également indiqué.

Étiquetage et application de types dans SELinux

L'application de types et l'étiquetage sont les principaux concepts de SELinux.

SELinux fonctionne comme un système d'étiquetage : chaque fichier, chaque processus et chaque port du système possède une étiquette SELinux. Les étiquettes constituent un moyen logique de regrouper plusieurs éléments. Le noyau gère les étiquettes lors du démarrage.

Les étiquettes sont rédigées au format suivant : user:role:type:level (utilisateur:rôle:type:niveau, où le niveau est facultatif). Les éléments « user », « role » et « level » sont utilisés pour des mises en œuvre de SELinux plus complexes, à l'instar de la politique MLS. Le type d'étiquette est essentiel pour la politique ciblée. 

SELinux utilise l'application de types pour appliquer une politique définie sur le système. L'application de types est l'élément de la politique SELinux qui détermine si un processus qui est exécuté avec un type donné est autorisé à accéder à un fichier étiqueté avec un type donné.

Activation de SELinux

Si SELinux est désactivé dans votre environnement, vous pouvez l'activer dans le fichier /etc/selinux/config avec le paramètre SELINUX=permissive. Il vaut mieux éviter de passer immédiatement en mode appliqué. En effet, comme SELinux n'était pas activé, certains éléments du système ne sont probablement pas étiquetés correctement, ce qui pourrait empêcher le démarrage.  

Vous pouvez obliger le système à ré-étiqueter le système de fichiers automatiquement en créant un fichier vide nommé .autorelabel dans le répertoire root avant de redémarrer. Si le système présente un trop grand nombre d'erreurs, vous devez redémarrer en mode permissif pour que le démarrage aboutisse. Une fois tous les éléments ré-étiquetés, passez SELinux en mode appliqué dans le fichier /etc/selinux/config avec le paramètre SELINUX=enforcing, puis redémarrez. Vous pouvez également exécuter directement la commande setenforce 1.

Pour les administrateurs système peu habitués à l'interface en ligne de commande, il existe des outils graphiques à utiliser pour la gestion de SELinux. 

SELinux fournit une couche de sécurité supplémentaire pour votre système, qui est intégrée aux distributions Linux. Il est recommandé de ne pas le désactiver pour qu'il protège votre système en cas d'attaque.

Les systèmes Linux et UNIX utilisent généralement le contrôle d'accès discrétionnaire (ou DAC). SELinux est un exemple de système de contrôle d'accès obligatoire (ou MAC) pour Linux. 

Dans le cadre du contrôle d'accès discrétionnaire, les fichiers et processus ont des propriétaires. Le propriétaire d'un fichier peut être un utilisateur, un groupe, ou autre, c'est-à-dire n'importe qui d'autre. Les utilisateurs ont la possibilité de modifier les autorisations d'accès à leurs propres fichiers.

Avec un système DAC, l'utilisateur root dispose d'un contrôle d'accès total. Si vous disposez d'un accès root, vous pouvez accéder aux fichiers de n'importe quel utilisateur ou faire ce que vous voulez sur le système. 

En revanche, sur les systèmes de type MAC tels que SELinux, des politiques d'accès sont définies par l'administrateur. Même si les paramètres du système DAC sont modifiés au niveau de votre répertoire principal, la sécurité du système sera préservée grâce à une politique SELinux mise en place pour empêcher d'autres utilisateurs ou processus d'accéder au répertoire. 

Les politiques SELinux permettent de gérer les accès de manière spécifique et couvrent un grand nombre de processus. Vous pouvez apporter des modifications avec SELinux pour limiter l'accès entre utilisateurs, fichiers, répertoires et plus encore.

Lorsque SELinux renvoie une erreur, c'est qu'il y a une anomalie à corriger. Le plus souvent, il s'agit de l'un des quatre problèmes suivants :

  1. Les étiquettes sont erronées. Si l'étiquetage est incorrect, vous pouvez utiliser les outils à disposition pour rétablir les étiquettes.
  2. Une politique doit être réparée. Ceci peut signifier que vous devez informer SELinux d'une modification que vous avez effectuée, ou que vous devez ajuster une politique. Vous pouvez résoudre ce problème à l'aide de variables booléennes ou des modules de la politique.
  3. Il y a un bogue dans la politique. La politique peut présenter un bogue qui nécessite une intervention.
  4. Le système a été infiltré. Même si SELinux peut protéger vos systèmes dans de nombreux cas, il est toujours possible que l'intégrité d'un système soit compromise. Si vous suspectez que c'est le cas, agissez immédiatement.

Que sont les variables booléennes ?

Les variables booléennes sont des paramètres de type activer/désactiver pour les fonctionnalités de SELinux. Des centaines de paramètres peuvent activer ou désactiver les capacités de SELinux, et un grand nombre d'entre eux sont prédéfinis. Pour trouver les variables booléennes déjà paramétrées dans votre système, vous pouvez exécuter la commande getsebool -a.

Red Hat Enterprise Linux est la première plateforme Linux Open Source au monde. Elle vous permet de réduire les risques, d'appliquer vos configurations et politiques de sécurité ainsi que de rationaliser votre stratégie de mise en conformité.

Les rôles système de Red Hat Enterprise Linux sont un ensemble de rôles Ansible® pris en charge qui assurent un workflow cohérent, capable de simplifier l'exécution des tâches manuelles. Les rôles système permettent d'automatiser les workflows de sécurité et de maintenir la cohérence sur l'ensemble des systèmes au fil du temps et en toute simplicité. Ils vous aident également à rationaliser la gouvernance et les exigences de conformité. Les rôles système SELinux vous donnent également la possibilité d'automatiser le déploiement et la gestion de SELinux, mais également de :

  • définir les modes permissif et appliqué pour SELinux afin de garantir une cohérence des contrôles,
  • personnaliser les booléens de politiques SELinux, les contextes de fichier, les ports et les identifiants selon vos besoins,
  • utiliser le rôle système pour réconcilier les contextes de fichier sur des fichiers ou répertoires spécifiés.

Keep reading

Article

Linux, qu'est-ce que c'est ?

Linux est un système d'exploitation Open Source dont le principal composant est le noyau, auquel sont intégrés des outils, applications et services.

Article

SELinux, qu'est-ce que c'est ?

SELinux (Security-Enhanced Linux) est une architecture de sécurité pour systèmes Linux® qui permet aux administrateurs de mieux contrôler les accès au système.

Article

Le noyau Linux, qu'est-ce que c'est ?

Le noyau Linux est le principal composant d'un système d'exploitation Linux et constitue l'interface entre le matériel d'un ordinateur et ses processus.

En savoir plus sur Linux

Produits

Base stable, éprouvée et suffisamment polyvalente pour prendre en charge le déploiement de nouvelles applications, la virtualisation des environnements et la création d'un cloud hybride plus sécurisé.

Ressources