1.3. Exemples de SELinux
Les exemples suivants montrent comment SELinux renforce la sécurité :
- L'action par défaut est le refus. S'il n'existe pas de règle SELinux autorisant l'accès, par exemple pour un processus ouvrant un fichier, l'accès est refusé.
-
SELinux peut confiner les utilisateurs de Linux. Il existe un certain nombre d'utilisateurs SELinux confinés dans la politique SELinux. Les utilisateurs Linux peuvent être associés à des utilisateurs SELinux confinés afin de tirer parti des règles et mécanismes de sécurité qui leur sont appliqués. Par exemple, en associant un utilisateur Linux à l'utilisateur SELinux
user_u
, on obtient un utilisateur Linux qui n'est pas en mesure d'exécuter, sauf configuration contraire, les applications set user ID (setuid), telles quesudo
etsu
. - Séparation accrue des processus et des données. Le concept de SELinux domains permet de définir quels processus peuvent accéder à certains fichiers et répertoires. Par exemple, avec SELinux, sauf configuration contraire, un attaquant ne peut pas compromettre un serveur Samba, puis utiliser ce serveur Samba comme vecteur d'attaque pour lire et écrire dans des fichiers utilisés par d'autres processus, tels que les bases de données MariaDB.
-
SELinux permet d'atténuer les dommages causés par les erreurs de configuration. Les serveurs du système de noms de domaine (DNS) répliquent souvent les informations entre eux lors d'un transfert de zone. Les attaquants peuvent utiliser les transferts de zone pour mettre à jour les serveurs DNS avec de fausses informations. Lorsque le Berkeley Internet Name Domain (BIND) est utilisé comme serveur DNS dans RHEL, même si un administrateur oublie de limiter les serveurs pouvant effectuer un transfert de zone, la stratégie SELinux par défaut empêche les mises à jour des fichiers de zone [1] les mises à jour des fichiers de zone sont effectuées par les serveurs qui utilisent les transferts de zone, par le démon BIND
named
lui-même et par d'autres processus. -
Sans SELinux, un pirate peut abuser d'une vulnérabilité à la traversée de chemin sur un serveur web Apache et accéder aux fichiers et répertoires stockés sur le système de fichiers en utilisant des éléments spéciaux tels que
../
. Si un pirate tente une attaque sur un serveur fonctionnant avec SELinux en mode d'exécution, SELinux refuse l'accès aux fichiers auxquels le processushttpd
ne doit pas accéder. SELinux ne peut pas bloquer complètement ce type d'attaque, mais il l'atténue efficacement. -
SELinux en mode exécutoire empêche avec succès l'exploitation des opérateurs de déréférencement de pointeur NULL du noyau sur les plates-formes non-SMAP (CVE-2019-9213). Les attaquants utilisent une vulnérabilité dans la fonction
mmap
, qui ne vérifie pas le mappage d'une page nulle, pour placer du code arbitraire sur cette page. -
Le booléen
deny_ptrace
SELinux et SELinux en mode exécution protègent les systèmes contre la vulnérabilité PTRACE_TRACEME (CVE-2019-13272). Une telle configuration permet d'éviter les scénarios dans lesquels un attaquant peut obtenir les privilègesroot
. -
Les booléens SELinux
nfs_export_all_rw
etnfs_export_all_ro
constituent un outil facile à utiliser pour éviter les mauvaises configurations du système de fichiers réseau (NFS), telles que le partage accidentel de répertoires/home
.
Ressources supplémentaires
- SELinux en tant que pilier de sécurité d'un système d'exploitation - Avantages et exemples concrets Article de la base de connaissances
[1]
Fichiers texte contenant des informations DNS, telles que les correspondances entre les noms d'hôtes et les adresses IP.