Gentoo Logo

[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


2. Guide SELinux

Table des matières :

2.a. Charger une politique dans un noyau SELinux

Vous devez vous placer dans le rôle sysadm_r.

Exemple de code 1.1 : La commande semodule

# semodule -B

2.b. Changer de rôle

Votre utilisateur doit avoir accès au rôle cible. Dans cet exemple, nous nous mettons dans le rôle sysadm_r.

Exemple de code 2.1 : La commande newrole

# newrole -r sysadm_r

2.c. Spécifier les rôles disponibles pour un utilisateur

Il y a une correspondance entre les utilisateurs Linux et les identités SELinux. La politique dispose d'utilisateurs SELinux génériques selon les configurations des rôles. Par exemple, pour associer l'utilisateur pebenito à l'identité SELinux staff_u :

Exemple de code 3.1 : Associer pebenito à staff_u

# semanage login -a -s staff_u pebenito

La politique n'a pas besoin d'être rechargée. Si l'utilisateur est connecté, il doit simplement se reconnecter afin que les changements soient pris en compte.

2.d. Ré-étiqueter les systèmes de fichiers

Vous devez vous placer dans le rôle sysadm_r.

Exemple de code 4.1 : Ré-étiqueter

# rlpkg -a

2.e. Ré-étiqueter un paquet individuel

En plus de pouvoir ré-étiqueter des systèmes de fichiers entiers, vous pouvez aussi ré-étiqueter des paquets de Portage individuellement. Pour cela, vous devez vous placer dans le rôle sysadm_r.

Exemple de code 5.1 : Exemple de rlpkg

# rlpkg shadow sash

On utilise le script rlpkg avec un nombre quelconque de noms de paquets comme arguments.

2.f. Chercher les bibliothèques qui utilisent les relocations de textes

SELinux contient des protections améliorées de la mémoire. Une des fonctionnalités supportées et d'autoriser les relocations de textes ELF. Les bibliothèques avec des relocations de textes ont une étiquette spéciale et l'outil rlpkg possède une option pour rechercher ces bibliothèques.

Exemple de code 6.1 : Chercher les TEXTREL

# rlpkg -t

Cela sera également effectué après un ré-étiquetage complet.

2.g. Démarrer les démons dans le bon domaine

Contrôler les démons qui possèdent des scripts d'initialisation dans /etc/init.d est très légèrement différent avec SELinux. La commande run_init doit être utilisée pour lancer les scripts, afin de s'assurer qu'ils soient exécutés dans le bon domaine. La commande est identique, excepté qu'elle est préfixé par run_init. Vous devez être dans le rôle sysadm_r.

Exemple de code 7.1 : Exemples d'utilisation de run_init

# run_init /etc/init.d/ntpd start
# run_init /etc/init.d/apache2 restart
# run_init /etc/init.d/named stop

Intégration de run_init dans Gentoo

run_init a été intégré dans le système de scripts d'initialisation de Gentoo. Avec SELinux installé, les services peuvent être démarrés et arrêtés comme d'habitude, sauf que maintenant ils authentifieront l'utilisateur.

Exemple de code 7.2 : Exemple avec run_init une fois intégré

# /etc/init.d/sshd restart
Authenticating root.
Password:
 * Stopping sshd...                       [ ok ]
 * Starting sshd...                       [ ok ]

2.h. Basculer entre les modes enforcing et permissive

Basculer entre les différents modes de SELinux est très simple. Envoyez 1 pour enforcing ou 0 pour permissive au fichier /selinux/enforce pour définir le mode. En lisant le contenu du fichier, vous obtiendrez le mode courant. Si l'option du noyau « NSA SELinux Development Support » est désactivée, le système sera toujours en mode enforcing et ne pourra pas être passé en mode permissive.

Exemple de code 8.1 : Lire et régler le mode enforce

(Lire le mode courant.)
# cat /selinux/enforce
(Passer en mode enforcing.)
# echo 1 > /selinux/enforce
(Passer en mode permissive.)
# echo 0 > /selinux/enforce

Une machine dont le support du développement a été activé dans le noyau peut être démarrée en mode enforcing en spécifiant l'option enforcing=1 sur la ligne de commande de démarrage du noyau dans le chargeur de démarrage (Grub, LILO, etc.).

Définir le mode au démarrage

En sus des options du noyau mentionnées précédemment, le mode de démarrage peut être défini dans le fichier /etc/selinux/config.

Exemple de code 8.2 : /etc/selinux/config

# SELINUX can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=permissive

Le réglage défini dans ce fichier sera écrasé par la valeur donnée en argument du noyau décrite précédemment.

2.i. Comprendre le retour de la commande sestatus

L'outil sestatus nous permet de récupérer des informations détaillées à propos des spécificités de SELinux. L'option -v nous fournit des détails supplémentaires à propos des contextes des processus et des fichiers. Le résultat de la commande est divisé en quatre sections. Sestatus ne donne des informations complètes qu'à un utilisateur connecté en root ou bien se trouvant dans le rôle sysadm_r.

Exemple de code 9.1 : Exemple de rapport sestatus

SELinux status:         enabled
SELinuxfs mount:        /selinux
Current mode:           enforcing
Policy version:         18

Les informations principales du rapport sont fournies dans la première section. La première ligne montre si les fonctions du noyau SELinux existent et sont activées. Si le statut est désactivé (disabled), soit le noyau n'a pas le support SELinux, soit la politique n'est pas chargée. La seconde ligne montre le point de montage du système de fichiers SELinux. Lors d'une utilisation normale, ce sera /selinux. La troisième ligne montre le mode SELinux courant, soit enforcing, soit permissive. La quatrième ligne montre la version de la base de données de la politique supportée par le noyau actuel.

Exemple de code 9.2 : Quelques booléens

Policy booleans:
secure_mode             inactive
ssh_sysadm_login        inactive
user_ping               inactive

La seconde section affiche l'état des booléens concernant la politique. La colonne de gauche contient le nom du booléen et celle de droite son état : active ou inactive. Cette section n'existe pas avec les noyaux en version 15.

Exemple de code 9.3 : Exemple de contextes de processus

Process contexts:
Current context:        pebenito:sysadm_r:sysadm_t
Init context:           system_u:system_r:init_t
/sbin/agetty            system_u:system_r:getty_t
/usr/sbin/sshd          system_u:system_r:sshd_t

La troisième section affiche les contextes des processus courants ainsi que de quelques processus importants. Si un processus est exécuté dans un contexte incorrect, il ne fonctionnera pas correctement.

Exemple de code 9.4 : Exemple de contextes de fichiers

File contexts:
Controlling term:       pebenito:object_r:sysadm_devpts_t
/sbin/init              system_u:object_r:init_exec_t
/sbin/agetty            system_u:object_r:getty_exec_t
/bin/login              system_u:object_r:login_exec_t
/sbin/rc                system_u:object_r:initrc_exec_t
/sbin/runscript.sh      system_u:object_r:initrc_exec_t
/usr/sbin/sshd          system_u:object_r:sshd_exec_t
/sbin/unix_chkpwd       system_u:object_r:chkpwd_exec_t
/etc/passwd             system_u:object_r:etc_t
/etc/shadow             system_u:object_r:shadow_t
/bin/sh                 system_u:object_r:bin_t -> system_u:object_r:shell_exec_t
/bin/bash               system_u:object_r:shell_exec_t
/bin/sash               system_u:object_r:shell_exec_t
/usr/bin/newrole        system_u:object_r:newrole_exec_t
/lib/libc.so.6          system_u:object_r:lib_t -> system_u:object_r:shlib_t
/lib/ld-linux.so.2      system_u:object_r:lib_t -> system_u:object_r:shlib_t

La quatrième section affiche les contextes du terminal contrôlant le processus courant ainsi que de quelques fichiers importants. Pour les liens symboliques, le contexte du lien ainsi que celui de la cible de celui-ci sont affichés. Si un fichier a un contexte incorrect, le fichier peut être inaccessible ou posséder des permissions incorrectes par rapport à un processus en particulier.


[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


Imprimer

Voir tout

Dernière mise à jour le 15 octobre 2006

Résumé : Ce chapitre décrit les opérations courantes à effectuer avec SELinux.

Chris PeBenito
Author

Camille Huot
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.