Il existe 3 modes sous SELinux :
Le mode Enforcing active SELinux, Permissive désactive SELinux mais log les actions qui auraient eu lieu dans le mode Enforcing et Disabled désactive totalement SELINUX.
Pour connaître le mode dans lequel on se trouve, on peut utiliser la commande : getenforce. Les commandes setenforce 0 ou setenforce 1 permettent de changer de mode (respectivement Permissive et Enforcing). Attention, ces chagements seront perdus au redémarrage. Pour les conserver, il faut éditer le fichier /etc/selinux/config
.
Pour afficher les informations relatives au contexte de sécurité, il faut ajouter l’option -Z : ls -Z
ou ps -Z
.
Le contexte SELinux se présente avec 4 éléments : utilisateur, rôle, type et niveau. Celui qui va nous intéresser ici est le type.
Pour redéfinir le type par défaut du contexte, on utilise la commande restorecon
. Cela peut notamment être utile lorsque nous avons créer des dossiers, ou sous-dossier à la main et qu’il n’ont pas pris le bon type de contexte.
La commande matchpathcon
affiche le contexte de sécurité par défaut d’un répertoire. Celui-ci peut être modifié en exécutant les commandes suivantes (l’option a permet l’ajout et t agit sur le type) :
semanage fcontext -a -t httpd_sys_content_t /home/user/www(/.*)?
restorecon -R /home/user/www
Pour faciliter la configuration de SELinux, certaines options sont activées ou desactivées via des booléens. Ces configurations sont enregistrées dans le fichier /etc/selinux/targeted/active/booleans.local. Ce fichier ne doit cependant pas être modifié à la main, mais via des commandes spécifiques :
getsebool -a
permet d’afficher l’ensemble des variables disponiblessemanage boolean -l
permet d’afficher une brève desciption du role de la variablesetsebool (-P) var on
permet d’activer une variable. L’option -P rend la modification persistante (écriture dans le fichier booleans.local) et var est une variable issue de getsebool -a
Il existe un outil qui permet de parser les logs audit.log afin d’afficher un retour plus lisible : sealert
.
Il est installé sous RHEL / CentOS via le paquet setroubleshoot-server
, sous Debian, voir le paquet setools
.