Étiquetage des fichiers SELinux
Tous les fichiers, répertoires, périphériques et processus sont associés à un contexte de sécurité (ou étiquette). Pour les fichiers, ce contexte est stocké dans les attributs étendus du système de fichiers. Les problèmes avec SELinux surviennent souvent lorsque le système de fichiers est mal étiqueté. Si vous voyez un message d'erreur contenant file_t , c'est généralement un bon indicateur que vous avez un problème avec l'étiquetage du système de fichiers.
Il existe plusieurs façons de réétiqueter le système de fichiers :
- Créez le fichier /.autorelabel et redémarrez.
- La vue État de l'interface graphique SELinux offre une option pour réétiqueter au prochain redémarrage.
- Trois utilitaires de ligne de commande, restorecon, setfiles et fixfiles, réétiquettent les fichiers.
Contexte SELinux
Le contexte SELinux contient des informations supplémentaires telles que l'utilisateur, le rôle, le type et le niveau SELinux. Les décisions de contrôle d'accès sur les processus, les utilisateurs Linux et les fichiers sont basées sur ces informations contextuelles. Le contrôle d'accès est basé sur les informations ci-dessous :
- Utilisateur SELinux :les utilisateurs Linux sont mappés sur les utilisateurs SELinux.
- Rôle :Un attribut de RBAC qui agit comme un intermédiaire entre les domaines et les utilisateurs de SELinux
- Tapez :Un attribut de TE qui définit un domaine pour les processus
- Niveau :Information optionnelle; un attribut de MLS et MCS
Affichage des informations de contexte SELinux
Afficher les informations de contexte SELinux sur les fichiers
Pour afficher les informations de contexte du système de fichiers à partir de la ligne de commande, utilisez la commande "ls –Z ” commande :
# ls -Z -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg -rw-r--r--. root root system_u:object_r:admin_home_t:s0 initial-setup-ks.cfgREMARQUE :Ces informations sont également stockées dans le répertoire /etc/selinux/[SELINUXTYPE]/contexts/files.
Afficher les informations de contexte SELinux sur les processus
Pour afficher les informations de contexte SELinux sur les processus, utilisez la commande "ps –Z ” commande :
# ps -Z LABEL PID TTY TIME CMD unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 6617 pts/0 00:00:00 sudo unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 6623 pts/0 00:00:00 su unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 6624 pts/0 00:00:00 bash unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 8188 pts/0 00:00:00 ps
Afficher les informations de contexte SELinux sur les utilisateurs
Pour afficher le contexte SELinux associé à votre utilisateur Linux, utilisez le "id -Z ” commande :
# id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Le contexte SELinux est affiché en utilisant la syntaxe suivante :
user:role:type:level
Modification du type de fichier de contexte
Les images de disque de la machine virtuelle KVM sont créées dans /var/lib/libvirt/images répertoire par défaut. SELinux exige que les fichiers image aient le virt_image_t étiquette qui leur est appliquée. Vous pouvez utiliser la commande « ls –dZ » pour confirmer que cette étiquette est appliquée au répertoire /var/lib/libvirt/images :
# ls -dZ /var/lib/libvirt/images drwx--x--x. root root system_u:object_r:virt_image_t:s0 /var/lib/libvirt/images
Vous pouvez utiliser un répertoire différent pour vos images de machine virtuelle, mais vous devez d'abord ajouter le nouveau répertoire à votre politique SELinux et le renommer. Les étapes suivantes permettent d'ajouter le répertoire /kvmimages à la stratégie SELinux ciblée et de renommer le répertoire :
# semanage fcontext -a -t virt_image_t "/kvmimages(/.*)?"
La commande ci-dessus ajoute le répertoire /kvmimages à la politique SELinux en ajoutant une ligne au fichier suivant :
# cat /etc/selinux/targeted/contexts/files/file_contexts.local /kvmimages(/.*)? system _u:object_r:virt_image_t:s0
Vous devez toujours définir le nouveau contexte de sécurité sur le répertoire et tous les fichiers du répertoire. Vous pouvez utiliser l'une des commandes suivantes pour modifier les contextes SELinux sur le répertoire /kvmimages :
- fixfiles :Corrige le contexte de sécurité sur les systèmes de fichiers
- restorecon :Réinitialise le contexte de sécurité sur un ou plusieurs fichiers
- setfiles :Initialise le contexte de sécurité sur un ou plusieurs fichiers
Chacune de ces commandes lit les fichiers dans /etc/selinux/targeted/contexts/files annuaire. L'exemple suivant montre les contextes SELinux avant d'exécuter la commande restorecon :
# ls -dZ /kvmimages drwx--x--x. root root system_u:object_r:unlabeled_t:s0 /var/lib/libvirt/images
Notez que le type SELinux est défini sur unlabeled_t . L'exemple suivant exécute la commande restorecon pour modifier le type tel que défini dans /etc/selinux/targeted/contexts/files/file_contexts.local fichier :
# restorecon -R -v /kvmimages
# ls -dZ /var/kvmimages drwx--x--x. root root system_u:object_r:virt_image_t:s0 /kvmimages
Il existe également des booléens SELinux qui affectent KVM lorsqu'il est lancé par libvirt. Deux de ces booléens sont répertoriés comme suit :
- virt_use_nfs :Autoriser virt à gérer les fichiers NFS.
- virt_use_samba :Autoriser virt à gérer les fichiers CIFS.
Ces booléens doivent être activés lors de l'utilisation de partages NFS ou SAMBA, respectivement, pour stocker des images de disque de machine virtuelle. Il existe d'autres booléens SELinux qui affectent KVM. Certains d'entre eux sont répertoriés comme suit :
# getsebool -a | grep virt staff_use_svirt --> off unprivuser_use_svirt --> off virt_read_qemu_ga_data --> off virt_rw_qemu_ga_data --> off virt_sandbox_use_all_caps --> on virt_sandbox_use_audit --> on virt_sandbox_use_fusefs --> off virt_sandbox_use_mknod --> off virt_sandbox_use_netlink --> off virt_sandbox_use_sys_admin --> off virt_transition_userdomain --> off virt_use_comm --> off virt_use_execmem --> off virt_use_fusefs --> off virt_use_nfs --> on virt_use_rawip --> off virt_use_samba --> off virt_use_sanlock --> off virt_use_usb --> on virt_use_xserver --> offQue sont les utilisateurs SELinux et comment mapper les utilisateurs Linux aux utilisateurs SELinux