3.8. Confiner un administrateur à l'aide de sudo et du rôle sysadm_r

Vous pouvez associer un utilisateur spécifique disposant de privilèges administratifs à l'utilisateur SELinux staff_u et configurer sudo de manière à ce que l'utilisateur puisse obtenir le rôle d'administrateur SELinux sysadm_r. Ce rôle permet à l'utilisateur d'effectuer des tâches administratives sans être confronté à des refus SELinux. Lorsque l'utilisateur se connecte, la session s'exécute dans le contexte SELinux staff_u:staff_r:staff_t, mais lorsque l'utilisateur entre une commande à l'aide de sudo, la session passe dans le contexte staff_u:sysadm_r:sysadm_t.

Par défaut, tous les utilisateurs Linux de Red Hat Enterprise Linux, y compris les utilisateurs disposant de privilèges administratifs, sont mappés à l'utilisateur SELinux non confiné unconfined_u. Vous pouvez améliorer la sécurité du système en assignant des utilisateurs à des utilisateurs SELinux confined. Ceci est utile pour se conformer au Guide de mise en œuvre technique de la sécurité V-71971.

Conditions préalables

  • L'utilisateur root s'exécute sans contrainte. Il s'agit de la configuration par défaut de Red Hat Enterprise Linux.

Procédure

  1. Créez un nouvel utilisateur, ajoutez-le au groupe d'utilisateurs wheel et associez-le à l'utilisateur SELinux staff_u:

    # adduser -G wheel -Z staff_u example.user
  2. Facultatif : Associez un utilisateur existant à l'utilisateur SELinux staff_u et ajoutez l'utilisateur au groupe d'utilisateurs wheel:

    # usermod -G wheel -Z staff_u example.user
  3. Pour permettre à example.user d'obtenir le rôle d'administrateur SELinux, créez un nouveau fichier dans le répertoire /etc/sudoers.d/, par exemple :

    # visudo -f /etc/sudoers.d/example.user
  4. Ajoutez la ligne suivante au nouveau fichier :

    example.user ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL

Vérification

  1. Vérifiez que example.user est associé à l'utilisateur SELinux staff_u:

    # semanage login -l | grep example.user
    example.user     staff_u    s0-s0:c0.c1023   *
  2. Connectez-vous en tant que example.user, par exemple en utilisant SSH, et passez à l'utilisateur root:

    [example.user@localhost ~]$ sudo -i
    [sudo] password for example.user:
  3. Afficher le contexte de sécurité de root:

    # id -Z
    staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023
  4. Essayez une tâche administrative, par exemple en redémarrant le service sshd:

    # systemctl restart sshd

    S'il n'y a pas de sortie, la commande s'est terminée avec succès.

    Si la commande ne se termine pas avec succès, elle affiche le message suivant :

    Failed to restart sshd.service: Access denied
    See system logs and 'systemctl status sshd.service' for details.