Accéder au contenuNavigation Accéder à la page : page précédente [raccourci clavier p] / page suivante [raccourci clavier n]
documentation.suse.com / SELinux

SELinux

Date de publication : 26 fév 2025
CONTENU

La rubrique fournit des informations de base concernant Security-Enhanced Linux.

MOTIF

Vous voulez comprendre SELinux et comment le configurer sous SLE Micro.

EFFORT

La lecture de l'article prend environ 40 minutes.

1 À propos de SELinux

SELinux a été développé en tant que solution de sécurité Linux supplémentaire qui utilise l'infrastructure de sécurité du kernel Linux. L'objectif était de permettre une stratégie de sécurité plus granulaire allant au-delà des contrôles d'accès discrétionnaires (Discretionary Access Controls - DAC) standard, des autorisations de fichier traditionnelles du propriétaire/du groupe/du monde et de lecture/d'écriture/d'exécution.

SELinux utilise des étiquettes jointes aux objets (par exemple, des fichiers et des sockets réseau) et les utilise pour les décisions d'accès.

L'action par défaut de SELinux consiste à refuser tout accès. SELinux n'autorise que les opérations spécifiquement autorisées dans la stratégie SELinux. Une autre caractéristique de SELinux qui renforce la sécurité est que SELinux permet un confinement strict des processus à tel point que les processus ne peuvent pas accéder aux fichiers d'autres processus sur le même système.

SELinux a été conçu pour améliorer les solutions de sécurité existantes et non pour les remplacer. Par exemple, le contrôle d'accès discrétionnaire (DAC) est toujours d'application, même si le système utilise SELinux. En cas de refus d'accès par DAC, SELinux n'est alors pas utilisé, puisque l'accès a déjà été bloqué en amont par un autre mécanisme.

2 Obtention de SELinux

SELinux est installé par défaut lors de l'installation de SLE Micro par YaST ou fait partie des images prédéfinies.

Si SELinux n'est pas configuré sur votre système, exécutez la commande suivante :

# transactional-update setup-selinux

Redémarrez votre système une fois la commande terminée. La commande installe la stratégie SELinux si elle n'est pas installée, définit le mode SELinux enforcing, puis reconstruit initrd.

3 Modes SELinux

SELinux peut être exécuté dans l'un des trois modes suivants : disabled, permissive ou enforcing.

L'utilisation du mode disabled signifie qu'aucune règle de la stratégie SELinux n'est appliquée et que votre système n'est pas protégé. Nous vous déconseillons donc d'utiliser le mode disabled.

Avec le mode permissive, SELinux est actif, la stratégie de sécurité est chargée, le système de fichiers est étiqueté et des entrées sont consignées en cas de refus d'accès. Toutefois, la stratégie n'est pas appliquée et aucun accès n'est donc réellement refusé.

En mode enforced, la stratégie de sécurité est appliquée. Chaque accès qui n'est pas explicitement autorisé par la stratégie est refusé.

Pour plus d'informations sur la procédure pour passer d'un mode SELinux à un autre, reportez-vous à la Section 3.1, « Modification du mode SELinux »

3.1 Modification du mode SELinux

Vous pouvez changer de mode SELinux de façon temporaire ou permanente.

3.1.1 Changement temporaire du mode SELinux

Pour définir temporairement SELinux en mode permissive ou enforcing, utilisez la commande setenforce.

La commande setenforce présente la syntaxe suivante :

# setenforceMODE_ID

MODE_ID est 0 pour le mode permissive ou 1 pour le mode enforced.

N'oubliez pas que vous ne pouvez pas désactiver SELinux à l'aide de la commande setenforce.

3.1.2 Modification permanente du mode SELinux

Pour que les modifications apportées au mode SELinux restent applicables après le redémarrage du système, modifiez le fichier de configuration /etc/selinux/config. Dans ce fichier, vous pouvez également désactiver SELinux sur votre système. Toutefois, cette opération n'est pas recommandée. Si vous pensez que SELinux est peut-être à l'origine de certains problèmes sur votre système, passez alors en mode permissive et déboguez votre système.

Dans le fichier /etc/selinux/config, modifiez la valeur de SELINUX en disabled, permissive ou enforced comme suit :

SELINUX=disabled

Les modifications apportées au fichier seront appliquées après le prochain redémarrage.

Note
Note : réétiquetage de votre système après avoir quitté le mode disabled

Si vous désactivez SELinux sur votre système et que vous le réactivez par la suite, veillez à réétiqueter votre système. Lorsque SELinux est désactivé et que vous apportez des modifications à votre système de fichiers, les modifications ne sont plus prises en compte dans le contexte (par exemple, les nouveaux fichiers n'ont aucun contexte). Par conséquent, vous devez réétiqueter votre système à l'aide de la commande restorecon, du paramètre de démarrage autorelabel ou en créant un fichier qui déclenchera le réétiquetage au prochain démarrage. Pour créer le fichier, exécutez la commande suivante :

# touch /etc/selinux/.autorelabel

Après le redémarrage, le fichier /etc/selinux/.autorelabel est remplacé par un autre fichier d'indicateur (/etc/selinux/.relabelled) pour empêcher le réétiquetage lors des redémarrages suivants.

3.1.3 Vérification du mode SELinux actif

Pour vérifier le mode, exécutez la commande suivante :

# getenforce

La commande doit renvoyer permissive ou enforced selon l'ID de mode MODE_ID fourni.

3.2 Vérification du fonctionnement de SELinux

Pour apporter des modifications de configuration, il peut être utile de passer en mode permissif. Pendant ce temps, les utilisateurs risquent d'étiqueter les fichiers de manière incorrecte et provoquer des problèmes lors du retour au mode d'application.

Pour rétablir l'état sécurisé du système, procédez comme suit :

  1. Réinitialisez le contexte de sécurité :

    > sudo restorecon -R /
  2. Passez en mode d'application en définissant SELINUX=enforcing dans le fichier à l'emplacement suivant /etc/selinux/config.

  3. Redémarrez le système, puis reconnectez-vous.

  4. Exécutez la commande sestatus -v. Vous devriez obtenir une sortie similaire à ce qui suit :

    > sudosestatus -v
    SELinux status:                 enabled
    SELinuxfs mount:                /sys/fs/selinux
    SELinux root directory:         /etc/selinux
    Loaded policy name:             targeted
    Current mode:                   enforcing
    Mode from config file:          enforcing
    Policy MLS status:              enabled
    Policy deny_unknown status:     allowed
    Memory protection checking:     requested(insecure)
    Max kernel policy version:      33
    
    Process contexts:
    Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    Init context:                   system_u:system_r:init_t:s0
    /usr/sbin/sshd                  system_u:system_r:sshd_t:s0-s0:c0.c1023
    
    File contexts:
    Controlling terminal:           unconfined_u:object_r:user_tty_device_t:s0
    /etc/passwd                     system_u:object_r:passwd_file_t:s0
    /etc/shadow                     system_u:object_r:shadow_t:s0
    /bin/bash                       system_u:object_r:shell_exec_t:s0 \
                                    -> system_u:object_r:shell_exec_t:s0
    /bin/login                      system_u:object_r:login_exec_t:s0
    /bin/sh                         system_u:object_r:bin_t:s0 \
                                    -> system_u:object_r:shell_exec_t:s0
    /sbin/agetty                    system_u:object_r:bin_t:s0 \
                                    -> system_u:object_r:getty_exec_t:s0
    /sbin/init                      system_u:object_r:bin_t:s0 -> \
                                    system_u:object_r:init_exec_t:s0
    /usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0
  5. Si le système ne fonctionne pas correctement, vérifiez les fichiers journaux à l'emplacement suivant : /var/log/audit/audit.log. Pour plus d'informations, reportez-vous à la documentation SELinux troubleshooting.

4 Contexte de sécurité SELinux

Le contexte de sécurité est un ensemble d'informations assignées à un fichier ou à un processus. Il se compose de l'utilisateur SELinux, de son rôle, du type, du niveau et de la catégorie. Ces informations servent à prendre des décisions en matière de contrôle d'accès.

Champs de contexte SELinux
utilisateur SELinux

Identité définie dans la stratégie qui est autorisée pour un ensemble spécifique de rôles et pour une plage de niveau spécifique. Chaque utilisateur Linux est assigné à un seul utilisateur SELinux. Toutefois, un utilisateur SELinux peut avoir plusieurs rôles.

SELinux n'utilise pas la liste des comptes utilisateur gérée par Linux dans le fichier à l'emplacement /etc/passwd, mais utilise sa propre base de données et son assignation. Par convention, le nom de l'identité a le suffixe _u, par exemple : user_u.

Lorsqu'un nouveau compte Linux est créé et que l'utilisateur SELinux n'est pas assigné au compte, l'utilisateur SELinux par défaut est utilisé. Habituellement, la valeur par défaut est unconfined_u. Pour consulter la procédure de modification de la valeur par défaut, reportez-vous à la Section 7.5.2, « Commande semanage login ».

rôle

Définit un ensemble d'autorisations qu'un utilisateur peut se voir accorder. Un rôle définit les types auxquels un utilisateur assigné à ce rôle peut accéder. Par convention, le nom du rôle a le suffixe _r, par exemple : system_r.

type

Le type transmet des informations sur la façon dont certains fichiers et processus peuvent interagir. Un processus est constitué de fichiers d'un type SELinux bien spécifique et ne peut pas accéder aux fichiers qui ne sont pas de ce type. Par convention, le nom du type a le suffixe _t, par exemple : var_t

niveau

Attribut facultatif qui spécifie la plage de niveaux d'autorisation dans le cadre d'une sécurité à plusieurs niveaux.

catégorie

Attribut facultatif qui vous permet d'ajouter des catégories à des processus, à des fichiers et à des utilisateurs. Un utilisateur peut alors accéder aux fichiers d'une même catégorie.

Voici un exemple de contexte SELinux :

allow user_t bin_t:file {read execute gettattr};

Cet exemple de règle indique que l'utilisateur qui possède le type de contexte user_t (cet utilisateur est appelé l'objet source) est autorisé à accéder aux objets du fichier de classe dont le type de contexte est bin_t (la cible), à l'aide des autorisations read, execute et getattr.

5 Présentation de la stratégie SELinux

La stratégie est le composant clé de SELinux. Votre stratégie SELinux définit des règles qui spécifient les objets qui peuvent accéder aux fichiers, répertoires, ports et processus d'un système. Pour ce faire, un contexte de sécurité est défini pour l'ensemble de ces éléments.

Une stratégie SELinux contient un grand nombre de règles. Pour faciliter leur gestion, les stratégies sont souvent divisées en modules. De cette façon, l'administrateur peut activer ou désactiver la protection pour différentes parties du système.

Lors de la compilation de la stratégie pour votre système, vous aurez le choix entre une stratégie modulaire ou monolithique. La stratégie monolithique est une stratégie gigantesque qui servira à protéger l'ensemble de votre système. Nous vous recommandons vivement d'utiliser une stratégie modulaire plutôt qu'une stratégie monolithique. Les stratégies modulaires sont beaucoup plus simples à gérer.

SLE Micro est fourni avec la stratégie SELinux targeted.

5.1 Utilisation des modules SELinux

En tant qu'administrateur, vous pouvez activer ou désactiver des modules. Cela peut être utile si vous souhaitez désactiver uniquement une partie de la stratégie SELinux et que vous ne souhaitez pas exécuter un service spécifique sans la protection SELinux.

Pour afficher tous les modules de stratégie SELinux en cours d'utilisation, exécutez la commande :

        semodule -l

Une fois que vous avez obtenu le nom du module que vous souhaitez désactiver, exécutez la commande :

> sudo semodule -d MODULENAME

Pour activer le module de stratégie, exécutez la commande :

> sudo semodule -e MODULENAME

5.2 Création de stratégies pour les conteneurs

SLE Micro est fourni avec une stratégie qui, par défaut, n'autorise pas les conteneurs à accéder aux fichiers en dehors des données de conteneur. En revanche, tous les accès au réseau sont autorisés. En règle générale, les conteneurs sont créés avec des montages liés et doivent pouvoir accéder à d'autres répertoires, tels que /home ou /var. Vous souhaiterez peut-être avoir la possibilité d'autoriser l'accès à ces répertoires ou, au contraire, de limiter certains ports au conteneur, même si SELinux est utilisé sur votre système. Dans ce cas, vous devez créer de nouvelles règles de stratégie qui activent ou désactivent l'accès. SLE Micro fournit l'outil Udica pour ce faire.

La procédure suivante décrit comment créer une stratégie personnalisée pour vos conteneurs :

  1. Assurez-vous que SELinux est en mode d'application. Pour plus d'informations, reportez-vous à la Section 3.1, « Modification du mode SELinux ».

  2. Démarrez un conteneur à l'aide des paramètres suivants :

    # podman run -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bash

    Le conteneur s'exécute avec la stratégie par défaut qui n'autorise pas l'accès aux points de montage, mais ne limite pas les autres ports.

  3. Vous pouvez quitter le conteneur.

  4. Obtenez l'ID du conteneur :

    # podman ps -a
    
    CONTAINER ID  IMAGE                                                                              COMMAND     CREATED        STATUS            PORTS               NAMES
    e59f9d0f86f2  registry.opensuse.org/devel/bci/tumbleweed/containerfile/opensuse/bci/ruby:latest  /bin/bash   8 minutes ago  Up 8 seconds ago  0.0.0.0:21->21/tcp  zen_ramanujan
  5. Créez un fichier JSON qu'Udica utilisera pour créer une stratégie personnalisée pour le conteneur :

    # podman inspect e59f9d0f86f2 >OUTPUT_JSON_FILE

    Par exemple, remplacez OUTPUT_JSON_FILE par container.json.

  6. Exécutez Udica pour générer une stratégie en fonction des paramètres du conteneur :

    # udica -jOUTPUT_JSON_FILECUSTOM_CONTAINER_POLICY

    Par exemple :

    # udica -j container.json custom_policy
  7. Selon les instructions fournies, chargez les modules de stratégie en exécutant :

    # semodule -i custom_policy.cil /usr/share/udica/templates/{base_container.cil,net_container.cil,home_container.cil}
  8. Exécutez un conteneur avec le nouveau module de stratégie en utilisant l'option --security-opt comme suit :

    # podman run --security-opt label=type:custom_policy.process -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bash

6 Attributs booléens SELinux

Les attributs booléens SELinux prennent en charge une approche flexible de gestion des stratégies. Par exemple, les attributs booléens vous permettent de désactiver une stratégie spécifique d'un serveur, tout en maintenant la même stratégie active sur un autre. Autrement dit, un attribut booléen peut être interprété comme un paramètre de règle de stratégie. Au lieu de modifier une stratégie particulière, vous pouvez la désactiver. Dans le code de la stratégie, les attributs booléens sont appelés variables programmables. Étant donné que les attributs booléens sont inclus dans la stratégie, ils sont disponibles dès qu'une stratégie est chargée.

Les modifications apportées aux valeurs booléennes peuvent être permanentes ou temporaires et dans ce cas, ne durer que jusqu'à la fin de la session.

SELinux propose des outils qui vous permettent de lister et d'afficher les détails ou de modifier l'état des attributs booléens. Reportez-vous aux sections suivantes pour plus de détails.

6.1 Utilisation d'attributs booléens

6.1.1 Liste des attributs booléens

Vous pouvez utiliser la commande getsebool ou semanage pour lister les attributs booléens actuellement définis. Pour lister tous les attributs booléens actuellement définis, ainsi que leur état, exécutez la commande suivante :

# getsebool -a

abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
...

Pour obtenir plus de détails sur des attributs booléens spécifiques, vous pouvez utiliser la commande semanage comme suit :

# semanage boolean -l

SELinux boolean               State   Default     Description

abrt_anon_write               (off  ,  off)       Allow abrt to anon write
abrt_handle_event             (off  ,  off)       Allow abrt to handle event
abrt_upload_watch_anon_write  (on   ,   on)       Allow abrt to upload watch anon write

Pour obtenir l'état d'un attribut booléen individuel, vous pouvez utiliser la commande suivante :

# getseboolBOOLEAN_NAME

Vous pouvez également utiliser la commande grep sur la sortie semanage boolean :

# semanage boolean -l | grepBOOLEAN_NAME

6.1.2 Affichage/masquage des attributs booléens

Les commandes setsebool et semanage peuvent être utilisées pour changer la valeur des attributs booléens. Vous pouvez modifier l'état d'un attribut booléen de façon permanente ou temporaire (jusqu'à la fin de la session). Pour modifier temporairement une valeur booléenne, exécutez la commande suivante :

# setseboolBOOLEAN_NAMEBOOLEAN_VALUE

BOOLEAN_VALUE est soit on, soit off.

Pour modifier une valeur booléenne de façon permanente, exécutez l'une des deux commandes suivantes :

# setsebool -PBOOLEAN_NAMEBOOLEAN_VALUE

Vous pouvez également utiliser la commande semanage :

# semanage boolean -m --BOOLEAN_VALUEBOOLEAN_NAME

BOOLEAN_VALUE est soit on, soit off

Un seul attribut booléen peut activer ou désactiver plusieurs règles de stratégie. Pour afficher les règles de stratégie activées ou désactivées par les attributs booléens, employez l'outil sedispol qui permet d'analyser le fichier de stratégie :

# sedispol /etc/selinux/targeted/policy/policy.32

Les règles de stratégie étant généralement très volumineuses, nous vous recommandons de définir un fichier de sortie en sélectionnant f et en spécifiant un nom de fichier. Après avoir spécifié le nom du fichier, appuyez sur 6. Vous pouvez ensuite inspecter le fichier.

7 Outils de gestion de SELinux

SLE Micro vous fournit des outils pour gérer SELinux sur votre système. Si les outils décrits ci-dessous ne sont pas installés sur votre système, installez-les en exécutant :

# transactional-update pkg install policycoreutils-python-utils

Une fois l'installation réussie, redémarrez le système.

7.1 Utilisation de l'option Z

Lorsque SELinux est installé et configuré, vous pouvez utiliser l'option -Z dans les commandes standard telles que ls, id, ou ps. Cette option vous permet d'afficher le contexte de sécurité des fichiers ou des processus. Par exemple, pour la commande ls :

> ls -Z /etc/shadow

        system_u:object_r:shadow_t:s0 /etc/shadow

7.2 Commande chcon

Le nom de la commande chcon signifie « change context » (modifier le contexte). La commande peut modifier l'ensemble du contexte de sécurité d'un fichier par la valeur fournie dans l'interface de ligne de commande ou n'en modifier que certaines parties. Vous pouvez également fournir un fichier pour qu'il serve de référence.

Pour modifier l'ensemble du contexte de sécurité d'un fichier, la syntaxe de la commande se présente comme suit :

# chconSECURITY_CONTEXTFILENAME

où :

  • SECURITY_CONTEXT est au format : SELinux_USER:ROLE:TYPE:LEVEL:CATEGORY. Par exemple, le contexte peut être : system_u:object_r:httpd_config_t:s0.

  • FILENAME est le chemin d'accès au fichier dont le contexte doit être modifié.

Pour définir un contexte de sécurité en fonction d'un fichier fourni à titre de référence, exécutez chcon comme suit :

# chcon --reference=REFERENCE_FILEFILENAME

où :

  • REFERENCE_FILE est le chemin d'accès à un fichier qui doit servir de référence.

  • FILENAME est le chemin d'accès au fichier dont le contexte doit être modifié.

Vous pouvez également modifier uniquement une partie du contexte de sécurité. La syntaxe générale de la commande chcon est la suivante :

# chconCONTEXT_OPTIONCONTEXT_PARTFILENAME

Les options et arguments ont la signification suivante :

  • En fonction de la partie du contexte, CONTEXT_OPTION peut être l'un des éléments suivants :

    -u resp --user

    Indique qu'un contexte utilisateur SELinux sera modifié dans le fichier fourni :

    # chcon -u system_u logind.conf
    -r resp --role

    Seule la partie role (rôle) sera modifiée dans le contexte du fichier fourni :

    # chcon -r object_r logind.conf
    -t resp --type

    Seule la partie type (type) sera modifiée dans le contexte du fichier fourni :

    # chcon -t etc_t logind.conf
    -l resp --range

    Seule la partie range (plage) du contexte de sécurité sera modifiée :

    # chcon -l s0 logind.conf
  • CONTEXT_PART est la valeur spécifique du contexte de sécurité à définir.

  • FILENAME est un chemin d'accès au fichier dont le contexte sera modifié.

Note
Note : utilisation de chcon sur des liens symboliques

Par défaut, lorsque vous modifiez le contexte de sécurité d'un lien symbolique, le contexte du lien cible est modifié et le contexte du lien symbolique n'est pas modifié. Pour forcer chcon à modifier le contexte du lien symbolique et non de la cible du lien, utilisez l'option --no-dereference ci-dessous :

# chcon --no-dereference -u system_u -t etc_t network.conf

Vous pouvez modifier le contexte de tous les fichiers d'un répertoire à l'aide de l'option récursive :

# chcon --recursive  system_u:object_r:httpd_config_t:s0 conf.d

7.3 Commandes getenforce et setenforce

La commande getenforce renvoie le mode SELinux actuel : Enforcing, Permissive ou Disabled.

# getenforce

Permissive

La commande setenforce change temporairement le mode SELinux en mode d'application ou permissif. Vous ne pouvez pas utiliser cette commande pour désactiver SELinux. N'oubliez pas que la modification ne reste active que jusqu'au prochain redémarrage. Pour modifier l'état de façon permanente, lisez la description de la Section 3.1, « Modification du mode SELinux ».

# setenforceMODE_ID

MODE_ID est 0 pour le mode permissive ou 1 pour le mode enforced.

7.4 Script fixfiles

Le script vous permet d'effectuer la tâche suivante avec le contexte de sécurité :

  • Vérifier si le contexte est correct

  • Modifier les étiquettes de contexte de fichier incorrectes

  • Renommer votre système si vous avez ajouté une nouvelle stratégie

La syntaxe du script est la suivante :

# fixfiles [OPTIONS] ARGUMENT

où :

  • OPTIONS peut être l'une des commandes suivantes :

    -l LOGFILE

    Enregistre la sortie dans le fichier fourni.

    -o OUTPUT_FILE

    Enregistre les noms de tous les fichiers dont le contexte de fichier diffère de celui par défaut dans le fichier de sortie fourni.

    -F

    Force une réinitialisation du contexte.

  • ARGUMENT peut être l'une des commandes suivantes :

    check

    Affiche le contexte du fichier précédent et du fichier actuel pour une étiquette incorrecte sans apporter de modifications.

    relabel

    Réétiquette les contextes de fichier incorrects en fonction de la stratégie actuellement chargée.

    restore

    Restaure les valeurs par défaut des contextes de fichier incorrects.

    verify

    Dresse une liste de tous les fichiers dont les étiquettes de contexte de fichier sont incorrectes sans apporter de modifications.

7.5 Commande semanage

La commande semanage peut être utilisée pour configurer des parties de la stratégie sans devoir recompiler la stratégie à partir des sources. La commande vous permet d'effectuer les tâches suivantes :

  • Gérer les attributs booléens à l'aide de l'argument boolean. Pour plus d'informations concernant les attributs booléens, reportez-vous à la section Section 6.1, « Utilisation d'attributs booléens ».

  • Ajuster le contexte des fichiers à l'aide de l'argument fcontext.

  • Gérer les assignations d'utilisateurs à l'aide de l'argument login.

  • Gérer les utilisateurs SELinux à l'aide de l'argument user.

  • Gérer les modules de stratégie SELinux à l'aide de l'argument module.

La syntaxe générale de la commande se présente comme suit :

# semanageARGUMENTOPTIONS [OBJECT_NAME]

où :

  • ARGUMENT est l'un des opérateurs suivants : login, user, fcontext, boolean, module.

  • OPTIONS dépend de l'argument ARGUMENT fourni. Ces options sont décrites dans la rubrique Options courantes.

  • OBJECT_NAME en fonction de l'argument ARGUMENT fourni, il peut s'agir d'un nom de connexion, d'un nom de module, d'un nom de fichier ou d'un utilisateur SELinux.

Options courantes
-a, --add

Ajoute un objet fourni.

-h, --help

Affiche l'aide de la commande.

--extract

Affiche les commandes utilisées pour modifier le système (attributs booléens, contexte de fichier, etc.).

-l, --list

Dresse la liste de tous les objets.

-m, --modify

Modifie l'objet fourni.

-n, --noheading

Modifie la sortie de l'opération établissant la liste en omettant les titres.

-s, --seuser

Spécifie l'utilisateur SELinux.

D'autres options sont spécifiques à des commandes semanage particulières et sont décrites dans les sections correspondantes.

7.5.1 Commande semanage fcontext

La commande semanage fcontext vous permet d'effectuer les tâches suivantes :

  • Demander les définitions des contextes de fichiers

  • Ajouter des contextes aux fichiers

  • Ajouter vos propres règles

Les modifications apportées au contexte de fichier à l'aide de la commande semanage fcontext ne nécessitent pas de modification ni de recompilation de la stratégie.

En plus des options courantes décrites dans la rubrique Options courantes, la commande semanage fcontext utilise les options suivantes :

-e, --equal

Cette option vous permet d'utiliser le contexte du chemin d'accès fourni pour étiqueter les fichiers dans un autre répertoire (chemin cible fourni). Par exemple, vous voulez assigner le même contexte que /home à un autre répertoire privé /export/home. Si vous utilisez cette option, vous devez fournir les chemins source cible :

# semanage fcontext -a -e /home /export/home
-f, --ftype

Spécifiez un type de fichier. Utilisez l'une des valeurs suivantes :

  • a : tous les fichiers. Il s'agit aussi de la valeur par défaut

  • b : un périphérique de bloc

  • c : un périphérique de caractères

  • d : un répertoire

  • f : fichiers normaux

  • l : un lien symbolique

  • p : un canal nommé

  • s : un socket

7.5.2 Commande semanage login

La commande semanage login vous permet d'effectuer les tâches suivantes :

  • Assignation d'utilisateurs Linux à un utilisateur SELinux spécifique. Par exemple, pour assigner l'utilisateur Linux tux à l'utilisateur sysadm_u exécutez la commande :

    # semanage login -a -s sysadm_u tux
  • Assignation d'un groupe d'utilisateurs Linux à un utilisateur SELinux spécifique. Par exemple, pour assigner les utilisateurs du groupe writers (utilisateurs disposant de droits en écriture) à l'utilisateur user_u, exécutez la commande :

    # semanage login -a -s user_u %writers

    Le groupe est ensuite répertorié dans la sortie de semanage login -l, précédé du caractère %.

    N'oubliez pas que le groupe d'utilisateurs doit être primaire, car l'assignation d'utilisateurs SELinux à des groupes supplémentaires peut entraîner des assignations incompatibles.

    # semanage login -m -s staff_u %writers
  • Assignation d'utilisateurs Linux à une plage de sécurité SELinux MLS/MCS spécifique.

  • Modification de l'assignation déjà créée. Pour ce faire, remplacez simplement l'option -a par -m dans les commandes précédentes.

  • Définition de l'utilisateur SELinux par défaut pour les nouveaux utilisateurs Linux. Par défaut, l'utilisateur SELinux est habituellement unconfined_u. Pour modifier la valeur sur staff_u, exécutez la commande :

    # semanage login -m -s staff_u __default__

7.5.3 Commande semanage boolean

La commande semanage boolean permet de contrôler les attributs booléens dans la stratégie SELinux.

Le synopsis de la commande se présente comme suit :

semanage boolean [-h] [-n]  [ --extract |
       --deleteall | --list [-C] | --modify ( --on | --off | -1 | -0 ) boolean ]

En plus des options courantes, vous pouvez utiliser les options spécifiques suivantes dans la commande semanage boolean :

--list -C

Permet d'afficher une liste des modifications locales apportées aux attributs booléens.

-m --on | -1

Permet d'activer l'attribut booléen fourni.

-m --off | - 0

Permet de désactiver l'attribut booléen fourni.

-D, --deletall

Permet de supprimer toutes les modifications locales apportées aux attributs booléens.

L'utilisation la plus courante de la commande consiste à activer ou à désactiver un attribut booléen spécifique. Par exemple, pour activer l'attribut booléen authlogin_yubikey, exécutez :

# semanage boolean -m on authlogin_yubikey

7.5.4 Commande semanage user

La commande semanage user contrôle l'assignation entre l'utilisateur SELinux, les rôles et les niveaux MLS/MCS.

En plus des options courantes décrites dans la rubrique Options courantes, la commande semanage use utilise les options suivantes :

-R [ROLES], --roles [ROLES]

Liste des rôles SELinux. Vous pouvez placer plusieurs rôles entre guillemets et les séparer par des espaces ou utiliser plusieurs fois -R.

Cette commande vous permet d'effectuer les tâches suivantes :

  • Dresser la liste de l'assignation des utilisateurs SELinux aux rôles en exécutant la commande :

    # semanage user -l
  • Modifier les rôles assignés à l'utilisateur SELinux user_u :

    # semanage user -m -R "system_r unconfined_r user_r"
  • Assigner à l'utilisateur admin_u le rôle staff_r et une catégorie s0 :

    # semanage user -a -R "staff_r -r s0 admin_u
  • Créer un nouvel utilisateur SELinux, par exemple, admin_u avec le rôle staff_r. Vous devez également définir le préfixe d'étiquetage pour cet utilisateur à l'aide de l'option -P :

    # semanage user -a -R "staff_r" -P admin admin_u

7.5.5 Commande semanage module

La commande semanage module peut installer, supprimer, désactiver ou activer des modules de stratégie SELinux.

En plus des options courantes décrites dans la rubrique Options courantes, la commande semanage fcontext utilise les options suivantes :

-d, --disable

Pour désactiver le module de stratégie SELinux fourni :

# semanage module --disable MODULE_NAME
-e, --enable

Pour activer le module de stratégie SELinux fourni :

# semanage module --enable MODULE_NAME

7.6 Commande sestatus

La commande sestatus obtient l'état d'un système sur lequel SELinux est exécuté.

La syntaxe générique de la commande est la suivante :

sestatus [OPTION]

Lorsqu'elle est exécutée sans options ni arguments, la commande génère les informations suivantes :

# sestatus

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     requested (insecure)
Max kernel policy version:      33

La commande peut accepter les options suivantes :

-b

Affiche l'état des attributs booléens sur le système.

-v

Affiche le contexte de sécurité des fichiers et des processus répertoriés dans le fichier /etc/sestatus.conf.