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
Créez un nouvel utilisateur, ajoutez-le au groupe d'utilisateurs
wheel
et associez-le à l'utilisateur SELinuxstaff_u
:# adduser -G wheel -Z staff_u example.user
Facultatif : Associez un utilisateur existant à l'utilisateur SELinux
staff_u
et ajoutez l'utilisateur au groupe d'utilisateurswheel
:# usermod -G wheel -Z staff_u example.user
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
Ajoutez la ligne suivante au nouveau fichier :
example.user ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL
Vérification
Vérifiez que
example.user
est associé à l'utilisateur SELinuxstaff_u
:# semanage login -l | grep example.user example.user staff_u s0-s0:c0.c1023 *
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:
Afficher le contexte de sécurité de
root
:# id -Z staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023
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.