Administration de SELinux dans Oracle Linux

Décrit SELinux et fournit des conseils sur l'administration de SELinux dans Oracle Linux.

La sécurité Linux traditionnelle est basée sur une politique de contrôle d'accès discrétionnaire (DAC). Dans le modèle DAC de sécurité du système, l'accès aux ressources telles que les fichiers et les processus est basé uniquement sur l'identité et la propriété de l'utilisateur. Si un logiciel malveillant ou cassé est présent sur le système, il peut faire n'importe quoi avec des fichiers et des ressources que l'utilisateur qui a commencé le processus a l'autorisation de faire. Si l'utilisateur est root ou si l'application s'exécute avec des privilèges élevés (setuid ou setgid à root), le processus dispose du contrôle d'accès root sur l'ensemble du système de fichiers.

Pour résoudre ce problème, la National Security Agency a créé Security Enhanced Linux (SELinux) pour fournir un plus grand niveau de contrôle sur les fichiers, les processus, les utilisateurs et les applications dans le système d'exploitation Linux. L'amélioration de SELinux pour le noyau Linux met en oeuvre la politique de contrôle d'accès obligatoire (MAC), qui vous permet de définir une politique de sécurité qui configure les autorisations granulaires pour tous les utilisateurs, programmes, processus, fichiers et périphériques. Les décisions de contrôle d'accès du noyau sont basées sur la sensibilité des ressources du point de vue de la sécurité, et pas uniquement sur l'identité de l'utilisateur authentifié.

Lorsqu'un accès lié à la sécurité se produit, par exemple lorsqu'un processus ouvre un fichier, SELinux intercepte l'opération dans le noyau. Si une règle de stratégie MAC autorise l'opération, elle continue. Sinon, SELinux bloque l'opération et retourne une erreur au processus. Le noyau vérifie et applique les règles de politique DAC avant les règles MAC, de sorte qu'il ne vérifie pas les règles de politique SELinux si les règles DAC ont déjà refusé l'accès à une ressource.

Descriptions des ensembles SELinux

SELinux contient plusieurs ensembles, chacun contenant des utilitaires spécifiques que vous pouvez utiliser pour administrer SELinux sur les systèmes Oracle Linux. Certains ensembles sont installés par défaut, tandis que d'autres sont facultatifs.

Le tableau suivant répertorie les ensembles SELinux installés par défaut avec Oracle Linux.

Paquetage

Description

policycoreutils

Fournit des utilitaires tels que load_policy, restorecon, secon, setfiles, semodule, sestatus et setsebool pour l'exploitation et la gestion de SELinux.

libselinux

Fournit l'API que les applications SELinux utilisent pour obtenir et définir des contextes de sécurité de processus et de fichiers, et pour obtenir des décisions de politique de sécurité.

python3-libselinux

Contient des liaisons Python pour le développement d'applications SELinux.

selinux-policy

Fournit la politique de référence SELinux, qui sert de base à d'autres politiques, telles que la politique ciblée SELinux.

selinux-policy-targeted

Fournit la politique ciblée SELinux, où les objets en dehors des domaines ciblés s'exécutent sous DAC.

libselinux-utils

Fournit les utilitaires avcstat, getenforce, getsebool, matchpathcon, selinuxconlist, selinuxdefcon, selinuxenabled et setenforce.

Le tableau suivant répertorie les ensembles SELinux utiles qui ne sont pas installés par défaut. Installez les ensembles requis à l'aide de la commande dnf.

Paquetage

Description

mcstrans

Convertit les niveaux SELinux, tels que s0-s0:c0.c1023, en un formulaire plus facile à lire, tel que SystemLow-SystemHigh.

policycoreutils-python-utils

Fournit des utilitaires Python pour le fonctionnement de SELinux, tels que audit2allow, audit2why, chcat et semanage.

policycoreutils-sandbox

Fournit l'utilitaire de bac à sable permettant de créer des bacs à sable SELinux pour exécuter des commandes dans un domaine SELinux étroitement confiné.

selinux-policy-mls

Fournit une politique de sécurité multiniveau stricte (MLS) comme alternative à la politique ciblée SELinux.

selinux-policy-doc Fournit des pages manuelles pour de nombreux éléments de politique SELinux.

setroubleshoot

Permet de voir les messages setroubleshoot-server à l'aide de la commande sealert.

setroubleshoot-server

Convertit les messages de refus d'accès de SELinux en descriptions détaillées que vous pouvez voir sur la ligne de commande à l'aide de la commande sealert.

setools-console

Fournit la distribution des outils et des bibliothèques Tresys Technology SETools, que vous pouvez utiliser pour analyser et interroger les politiques, surveiller et produire des rapports sur les journaux de vérification et gérer le contexte des fichiers.

Pour plus d'informations, voir Wiki SELinux Project pour la documentation sur la communauté et les pages de manuel de commande selinux(8) et autres SELinux.

Utilitaires SELinux

Le tableau suivant décrit les principaux utilitaires que vous pouvez utiliser pour administrer SELinux et les ensembles qui les contiennent.

Services publics

Paquetage

Description

audit2allow

policycoreutils-python-utils

Génère des règles allow de politique SELinux (et des entrées dontaudit facultatives) à partir des journaux de vérification des opérations refusées.

audit2why

policycoreutils-python-utils

Analyse les journaux de refus pour expliquer pourquoi l'accès a été bloqué et recommande des ajustements SELinux pertinents.

avcstat

libselinux-utils

Affiche les statistiques pour le cache du vecteur d'accès SELinux (AVC).

chcat

policycoreutils-python-utils

Modifie ou supprime la catégorie de sécurité d'un fichier ou d'un utilisateur.

chcon

coreutils

Modifie le contexte SELinux des fichiers et des répertoires.

fixfiles

policycoreutils

Corrige le contexte de sécurité des systèmes de fichiers.

getenforce

libselinux-utils

Indique le mode SELinux courant.

getsebool

libselinux-utils

Signale les valeurs booléennes SELinux.

load_policy

policycoreutils

Charge une nouvelle politique SELinux dans le noyau.

matchpathcon

libselinux-utils

Interroge la stratégie système et affiche le contexte de sécurité par défaut associé au chemin d'accès au fichier.

restorecon

policycoreutils

Réinitialise le contexte de sécurité sur un ou plusieurs fichiers.

restorecond

policycoreutils

Démon qui surveille la création de fichiers et définit le contexte de fichier par défaut.

runcon

coreutils

Exécute une commande dans le contexte spécifié.

sandbox

policycoreutils-sandbox

Exécute une commande dans un bac à sable SELinux.

sealert

setroubleshoot-server, setroubleshoot

Agit en tant qu'interface utilisateur du système setroubleshoot pour diagnostiquer et expliquer les refus AVC SELinux et fournir des recommandations sur la façon d'empêcher de tels refus.

sechecker

setools-console

Vérifie les politiques SELinux.

secon

policycoreutils

Affiche le contexte SELinux à partir d'un fichier, d'un programme ou d'une entrée utilisateur.

sediff

setools-console

Compare les politiques SELinux.

seinfo

setools-console

Interroge les politiques SELinux.

selinuxconlist

libselinux-utils

Affiche tous les contextes SELinux accessibles par un utilisateur.

selinuxdefcon

libselinux-utils

Affiche le contexte SELinux par défaut pour un utilisateur.

selinuxenabled

libselinux-utils

Indique si SELinux est activé.

semanage

policycoreutils-python-utils

Gère les politiques SELinux.

semodule

policycoreutils

Gère les modules de politique SELinux.

semodule_deps

policycoreutils

Affiche les dépendances entre les ensembles de politiques SELinux.

semodule_expand

policycoreutils

Développe un ensemble de module de politique SELinux.

semodule_link

policycoreutils

Relie les ensembles de module de politique SELinux.

semodule_package

policycoreutils

Crée un ensemble de module de politique SELinux.

sesearch

setools-console

Interroge les politiques SELinux.

sestatus

policycoreutils

Affiche le mode SELinux et la politique SELinux en cours d'utilisation.

setenforce

libselinux-utils

Modifie le mode SELinux.

setsebool

policycoreutils

Définit les valeurs booléennes SELinux.

setfiles

policycoreutils

Définit le contexte de sécurité pour un ou plusieurs fichiers.

Définition des modes SELinux

SELinux s'exécute en mode enforcing ou permissive :

enforcing

Le noyau refuse l'accès aux utilisateurs et aux programmes s'ils ne sont pas autorisés par les règles de politique de sécurité SELinux. Tous les messages de refus sont enregistrés en tant que refus AVC (Access Vector Cache). Il s'agit du mode par défaut.

permissive

Le noyau n'applique pas les règles de politique de sécurité, mais SELinux envoie des messages de refus à un fichier journal. Cela vous permet de voir quelles actions seraient refusées si SELinux s'exécute en mode enforcing. Utilisez ce mode pour vous aider à mettre en oeuvre SELinux efficacement dans un système.

Pour afficher le mode SELinux courant, exécutez la commande suivante :

getenforce

Pour régler le mode courant à enforcing, exécutez la commande suivante :

sudo setenforce enforcing

Pour régler le mode courant à permissive, exécutez la commande suivante :

sudo setenforce permissive
Note

La valeur que vous avez définie pour un mode à l'aide de setenforce n'est pas conservée lors des redémarrages. Pour configurer le mode SELinux par défaut, modifiez le fichier de configuration pour SELinux, /etc/selinux/config et réglez la valeur de la directive SELINUX à enforcing ou permissive.

Désactivation de SELinux

Vous pouvez désactiver entièrement SELinux en réglant le paramètre de noyau selinux à zéro.

Important

Oracle ne recommande pas de désactiver SELinux dans les systèmes de production. Utilisez plutôt le mode permissive.

  1. Définissez le paramètre de noyau requis.

    Utilisez l'utilitaire grubby pour régler le paramètre selinux à zéro :

    sudo grubby --update-kernel ALL --args selinux=0
  2. Redémarrez le système.
  3. Vérifiez que SELinux est désactivé.

    Exécutez la commande getenforce et vérifiez que la sortie est Disabled :

    getenforce
    Disabled
  4. (Facultatif) Réactiver SELinux

    Pour réactiver SELinux, entrez la commande suivante et redémarrez le système :

    sudo grubby --update-kernel ALL --remove-args selinux

Installation de la documentation sur les politiques

SELinux est complexe, avec de nombreuses options pour configurer l'accès, à l'aide de politiques. Vous pouvez obtenir des informations détaillées sur les politiques disponibles à partir des pages de manuel fournies par l'ensemble selinux-policy-doc. Cette tâche vous montre comment accéder à ces informations.

La documentation relative aux stratégies contient également des informations sur les utilisateurs et les rôles. Par exemple, vous pouvez en savoir plus sur l'utilisateur user_u sans privilèges SELinux et le rôle user_r dans la page de manuel user_selinux(8). La documentation de stratégie décrit les restrictions qui s'appliquent à différents contextes de sécurité et les options booléennes disponibles pour personnaliser la stratégie pour un environnement.

  1. Installez le package :
    sudo dnf install -y selinux-policy-doc
  2. Mettez à jour la base de données des pages manuelles :
    sudo mandb
  3. Parcourez les pages de manuel de politique SELinux. Pour obtenir la liste complète de toute la documentation manuelle de SELinux, exécutez :
    man -k _selinux