polux     Julien Thomas - TELECOM Bretagne frenchenglish

Commandes SELinux

Note : cette page fait référence aux notions mentionnés dans les pages et . N'hésitez pas à le consulter !

SELinux dispose d'un panel d'outils permettant d'administrer ou de consulter la politique de sécurité mise en place. Dans cette section, les outils les plus importantes (ie les plus utilisés) sont présentés, afin de faciliter la compréhension de la suite du rapport. Une documentation complète des différentes commandes est également disponible en ligne sur Section 8 : administration and privileged commands - linux man pages, die.net.

Consultation de la politique SELinux

Différents outils permettent d'obtenir des informations plus ou moins spécifiques sur la politique de sécurité en place. Premièrement, le module SELinux offre l'option -Z sur différentes commandes UNIX de base (ls, ps, ...). Cette option étend les commandes en prenant en compte les options SELinux. Par exemple, s -Z affiche les fichiers avec leur contexte SELinux.

L'outil secon permet d'obtenir des informations SELinux sur les fichiers (option --file) ou les processus (option --pid). Par exemple, secon --file «objet» (proche de ls -Z «objet») permet d'obtenir le contexte de sécurité de «objet». secon permet d'obtenir des informations sur l'utilisateur en cours.

D'une manière plus générale, sestatus (-v) permet d'obtenir les informations de base sur la configuration du système SELinux.

L'outil semanage permet d'effectuer un grand panel d'actions sur la politique de sécurité. Il est par exemple possible de gérer les identités UNIX (option login) ou SELinux (option user). D'une manière générale, semanage est appelé par la commande semanage {login|user|port|interface|fcontext|translation} -l [-n]

Personnalisation rapide de la politique SELinux

Un moyen rapide pour personnaliser la politique SELinux consiste à exploiter les modularités offertes par la politique en cours. Il existe en effet des valeurs booléennes permettant de donner des autorisations (ou de les retirer) à certains services.

L'outil setsebool permet d'agir sur les variables SELinux. La syntaxe de setsebool est simple : setsebool bool1=val1 bool2=val2 .... Par exemple, l'activation du support pour NFS (exportation), se fait par setsebool -P nfs_export_all_rw 1.

Un deuxième outil, getsebool permet de consulter les états des différentes variables booléennes. Sa syntaxe est getsebool [-a] [boolean] ou a équivaut à ALL.

Activation de la politique SELinux

La transition entre les modes actif (enforcing) et passif (permissive) de SELinux peut se faire avec l'outil setenforce (setenforce [ Enforcing | Permissive | 1 | 0 ]). Enforcing ou 1 active SELinux, Permissive ou 0 le désactive.

Une deuxième commande, Getenforce permet de récupérer le mode actuel de SELinux.

Gestion des labels

restorecon et chcon sont les deux outils de base permettant de modifier les types des objets SELinux.

En se basant sur un fichier de contextes (ou celui de SELinux, par défaut), restorecon permet de modifier les labels de fichiers afin qu'ils respectent les contraintes indiquer par ces contextes. Un appel assez classique de restorcecon est restorecon *. Cette commande permet de corriger les labels des fichiers du répertoire courant.

Si toutefois les fichiers de contextes ne sont pas satisfaisant ou si les changements ont pour but d'être des tests, il peut être plus simple d'utiliser l'outil chcon. Cette outil permet d'agir sur les labels des fichiers en modifiant leur type (option -t), leur rôle (option -r) ou encore l'utilisateur SELinux associé (option -u). Par exemple, la commande chcon -t httpd_tmp_t * affecte le type httpd_tmp_t (répertoire temporaire d'apache) aux fichiers du répertoire courant.

L'outil semanage présenté précédemment peut également intervenir sur le type des fichiers avec l'option semanage fcontext, ce qui a pour effet de modifier le fichier file_contexts de SELinux pour y insérer les nouvelles contraintes (ou pour en supprimer) définies par l'administrateur.

Génération de modules

Les modules SELinux sont gérés et générés par trois outils SELinux. Checkmodule permet de vérifier l'état d'un module (sous forme .te) et de le compiler. La compilation se fait soit en module de base ou non (option -m). Semodule_package, associé avec checkmodule, permet de créer la version définitive du module. L'appel à cet outil se fait via la commande semodule_package -o «output file» -m «module» [-f «file contexts»]. Le troisième outil, semodule, est l'outil de base pour la gestion des modules SELinux. Il permet par exemple d'installer (option -i) ou de supprimer (option -r) des modules de l'environnement SELinux.



«Design-by-assumption works as long as assumptions hold. Assumptions are shortcuts to useful efficiencies, provided they are not violated. »
David S. Isenberg

«If the kernel is not evaluated to an MLS-capable protection profile, MLS features cannot be trusted regardless of how impressive the demonstration looks.»
J. Davidson