SELinux/Dépannage
- Astuces pour analyser les messages AVC
- Arborescence de résolution des messages AVC
- SELinux a trois modes.
- Strict (enforcing)
- Ce devrait être le mode par défaut.
- Le noyau bloque tous les accès à moins qu'ils aient été explicitement autorisés. Tous les accès refusés sont reportés dans le système de journalisation en tant que AVC (Access Vector Cache) à moins que les auteurs de la politique aient explicitement dit au noyau de ne pas vérifier (
dontaudit
) les messages. - Permissif (permissive)
- Le noyau va rapporter les violations d'accès sous la forme de messages AVC mais va autoriser les accès.
- Le noyau va également continuer à créer des fichiers convenablement étiquetés.
- Il y a un couple de différences majeures dans la façon dont le noyau va rapporter ces messages AVC.
- Le noyau va seulement rapporter les premières violations d'accès en mode permissif pour un domaine restreint sur un objet particulier, alors qu'en mode strict il va rapporter chaque accès refusé.
- Vous pouvez obtenir beaucoup de messages AVC additionnels qui ne seraient jamais apparus en mode strict. Par exemple si un domaine restreint n'était pas autorisé à lire un répertoire ou n'importe lequel de ses fichiers situés à l'intérieur. En mode strict l'accès au répertoire serait refusé et un message AVC serait généré. En mode permissif l'accès au répertoire générerait un message AVC et chaque lecture d'un fichier en générerait d'autres.
- Nous préférerions que vous reportiez des messages AVC en mode strict. Mais parfois le mode permissif est indispensable pour obtenir tous les messages AVC. Vous pouvez amorcer le noyau en mode permissif à l'aide du commutateur
enforcing=0
. - Vous pouvez utiliser
setenforce 0
pour lancer le mode permissif etsetenforce 1
pour lancer le mode strict. - Désactivé
- Éteint l'application SELinux complètement et arrête également la création d'étiquettes sur les fichiers.
- Vous devez seulement désactiver SELinux si vous ne comptez pas l'utiliser. Vous devriez utiliser le mode permissif pour diagnostiquer un problème.
- Si vous voulez désactiver SELinux, vous devez éditer
/etc/selinux/config
et changer la ligneSELINUX
àdisabled
. Vous aurez ensuite besoin de relancer la machine étant donné que SELinux fonctionne à l'intérieur du noyau. - Si vous souhaitez réactiver SELinux vous aurez besoin de réétiquetter tout le système de fichiers.
- Gérer un contexte de fichier
cp
vs.mv
- La commande
cp
crée le nouveau fichier avec soit le contexte du fichier de destination, s'il existe, ou le contexte de sécurité du répertoire de destination. - La commande
mv
tente de maintenir le contexte de sécurité du fichier déplacé. - Cela peut conduire à certains problèmes dans les contextes de fichier. Par exemple, dans une politique ciblée, si vous étiez amené à
cp /etc/resolv.conf /tmp
et à éditer/tmp/resolv.conf
. Ensuite vous déplaceriezresolv.conf
de retour dans/etc
avecmv /tmp/resolv.conf /etc
. Le fichier se retrouverait avec le type de contexte de sécuritétmp_t
au lieu du typenet_conf_t
. Beaucoup de domaines ne seraient maintenant pas capables de lireresolv.conf
ce qui provoquerait des défaillances. Vous pouvez aisément régler ceci avecrestorecon /etc/resolv.conf
. - Messages AVC
- Parfois les informations du journal d'audit sont compliquées à lire et à comprendre. Très souvent je lance dessus
audit2allow
pour clarifier la sortie. - Démon d'audit
- Dans Fedora Core 5/Rawhide le système d'audit a déplacé une partie des messages AVC dans
/var/log/audit/audit.log
. Cependant certains messages AVC continuent d'apparaître dans le fichier/var/log/messages
. D'habitude cela se produit lorsque le démon d'audit n'est pas lancé. - Vous pouvez utiliser la commande
ausearch -m avc
pour afficher les messages AVC à partir du journal d'audit. Il y a d'autres commandes utiles telles que-x
pour spécifier l'exécutable. L'option-ts
vous permet de paramétrer la durée à partir de laquelle vous voulez voir les messages après coup.
- Des messages AVC manquent
SELinux a certains messages qu'il ne vérifiera pas. Il y a des règles dontaudit
écrites dans la politique. Habituellement ce sont des messages qu'il ne va pas vérifier et elles sont là uniquement pour forcer l'application à prendre un autre chemin de code. Parfois ces règles dontaudit
peuvent cacher un échec. Avant de faire référence à la politique vous étiez obligé d'installer selinux-policy-targeted-sources
et d'exécuter make -C /etc/selinux/targeted/src/policy enableaudit reload
.
Quand vous en aviez fini avec les messages d'audit vous exécutiez make -C /etc/selinux/targeted/src/policy reload
. Avec la politique recommandée vous avez besoin de remplacer le paquet de la politique de base par le paquet de la politique enableaudit
. semodule -b /usr/share/selinux/targeted/enableaudit.pp
. Quand vous avez fini votre vérification, vous devez exécuter semodule -b /usr/share/selinux/targeted/base.pp
.