6.8. Séparer l'administration du système de l'administration de la sécurité dans MLS
Par défaut, le rôle sysadm_r
a les droits du rôle secadm_r
, ce qui signifie qu'un utilisateur ayant le rôle sysadm_r
peut gérer la politique de sécurité. Si vous avez besoin de plus de contrôle sur les autorisations de sécurité, vous pouvez séparer l'administration du système de l'administration de la sécurité en attribuant à un utilisateur Linux le rôle secadm_r
et en désactivant le module sysadm_secadm
dans la stratégie SELinux.
Conditions préalables
-
La politique SELinux est définie sur
mls
. -
Le mode SELinux est défini sur
enforcing
. -
Le paquet
policycoreutils-python-utils
est installé. Un utilisateur Linux auquel sera attribué le rôle
secadm_r
:-
L'utilisateur est assigné à l'utilisateur SELinux
staff_u
- Un mot de passe a été défini pour cet utilisateur.
AvertissementAssurez-vous que vous pouvez vous connecter en tant qu'utilisateur auquel sera attribué le rôle
secadm
. Si ce n'est pas le cas, vous pouvez empêcher toute modification future de la politique SELinux du système.-
L'utilisateur est assigné à l'utilisateur SELinux
Procédure
Créez un nouveau fichier
sudoers
dans le répertoire/etc/sudoers.d
pour l'utilisateur :# visudo -f /etc/sudoers.d/<sec_adm_user>
Pour que les fichiers
sudoers
restent organisés, remplacez<sec_adm_user>
par l'utilisateur Linux auquel sera attribué le rôlesecadm
.Ajoutez le contenu suivant dans le fichier
/etc/sudoers.d/<sec_adm_user>
le contenu suivant :<sec_adm_user> ALL=(ALL) TYPE=secadm_t ROLE=secadm_r ALL
Cette ligne autorise
<secadmuser>
sur tous les hôtes à exécuter toutes les commandes, et attribue à l'utilisateur le type et le rôle SELinuxsecadm
par défaut.Connectez-vous en tant qu'utilisateur de <sec_adm_user>:
NotePour s'assurer que le contexte SELinux (qui comprend l'utilisateur SELinux, le rôle et le type) est modifié, connectez-vous en utilisant
ssh
, la console ouxdm
. Les autres moyens, tels quesu
etsudo
, ne peuvent pas modifier l'ensemble du contexte SELinux.Vérifier le contexte de sécurité de l'utilisateur :
$ id uid=1000(<sec_adm_user>) gid=1000(<sec_adm_user>) groups=1000(<sec_adm_user>) context=staff_u:staff_r:staff_t:s0-s15:c0.c1023
Exécute l'interpréteur de commandes interactif pour l'utilisateur root :
$ sudo -i [sudo] password for <sec_adm_user>:
Vérifier le contexte de sécurité de l'utilisateur actuel :
# id uid=0(root) gid=0(root) groups=0(root) context=staff_u:secadm_r:secadm_t:s0-s15:c0.c1023
Désactiver le module
sysadm_secadm
de la politique :# semodule -d sysadm_secadm
ImportantUtilisez la commande
semodule -d
au lieu de supprimer le module de politique du système à l'aide de la commandesemodule -r
. La commandesemodule -r
supprime le module du stockage de votre système, ce qui signifie qu'il ne peut pas être chargé à nouveau sans réinstaller le paquetageselinux-policy-mls
.
Vérification
En tant qu'utilisateur assigné au rôle
secadm
et dans le shell interactif de l'utilisateur root, vérifiez que vous pouvez accéder aux données de la politique de sécurité :# seinfo -xt secadm_t Types: 1 type secadm_t, can_relabelto_shadow_passwords, (...) userdomain;
Se déconnecter de l'interpréteur de commandes racine :
# logout
Se déconnecter de l'utilisateur
<sec_adm_user>
l'utilisateur :$ logout Connection to localhost closed.
Affiche le contexte de sécurité actuel :
# id uid=0(root) gid=0(root) groups=0(root) context=root:sysadm_r:sysadm_t:s0-s15:c0.c1023
Tentative d'activation du module
sysadm_secadm
. La commande devrait échouer :# semodule -e sysadm_secadm SELinux: Could not load policy file /etc/selinux/mls/policy/policy.31: Permission denied /sbin/load_policy: Can't load policy: Permission denied libsemanage.semanage_reload_policy: load_policy returned error code 2. (No such file or directory). SELinux: Could not load policy file /etc/selinux/mls/policy/policy.31: Permission denied /sbin/load_policy: Can't load policy: Permission denied libsemanage.semanage_reload_policy: load_policy returned error code 2. (No such file or directory). semodule: Failed!
Tentative d'affichage des détails concernant le type SELinux
sysadm_t
. La commande doit échouer :# seinfo -xt sysadm_t [Errno 13] Permission denied: '/sys/fs/selinux/policy'