chevrenux
Bonsoir messieurs dames, je vous tire mon fedora même si on a du vous la faire souvent celle là.
Merci de votre indulgence car je débute sous Fedora.
Mon but est de confiner des applications courantes (vlc, mpv, firefox, etc...) avec SElinux en utilisant les modules chargeables fournis dans le "Policy Store"
et disponibles sans installation. Un peu de la même manière que sous Debian on peut confiner Firefox avec Apparmor en quelques clics à partir des "scripts" (profils) fournis. Je suis personnellement un peu déçu que l'opération soit aussi difficile sous Fedora alors que sous Debian c'est vraiment pratique.
Sous Fedora 31 et pour une Police SElinux de type Target, j'ai pu accéder aux règles dans les dossiers:
/usr/share/selinux/targeted/default/active/modules/100/
/var/lib/selinux/targeted/active/modules/100/
Ces dossiers contiennent les fichiers des modules qui s'affichent via la commande semodule -l
Il y notamment les modules mplayer (dans lequel apparaît "/usr/bin/vlc", donc voilà) et des modules mozilla.
Les fichiers de règles sont contenus dans des archives compressées et sont écrits apparement dans le language CIL.
Ces fichiers en language CIL, lisibles comme des scripts, ne sont pas chargeable directement par SElinux pour activer
le confinement. Il faut d'abord faire une compilation du "script" CIL, pour obtenir un binaire format *.pp, qu'on
peut charger avec la commande semodule -i *.pp, si j'ai bien suivi.
Donc il faut un compilateur pour le language CIL, que j'ai trouvé dans le paquet secilc, qui fournit la commande secilc.
Je tente une compilation avec la commande secilc, avec le module bluetooth (au hasard) pour voir si ça marche,
après l'avoir sorti de son archive, copié dans son dossier et renommé en ~/modules/100/bluetooth/bluetooth:
[ ~]$ sudo secilc --output=bluetooth.31 --policyvers=31 -m /usr/share/selinux/targeted/default/active/modules/100/bluetooth/bluetooth
Failed to resolve booleanif statement at /usr/share/selinux/targeted/default/active/modules/100/bluetooth/bluetooth:431
Failed to compile cildb: -2
[ ~]$
Et là paf cela me renvoie, non pas des chocapic, mais des erreurs de compilation. Même si j'essaie la commande avec ou sans
options ou si j'essaie avec d'autres modules, c'est d'autres erreurs. Or il ne peut pas y avoir d'erreurs, puisque les fichiers sont fournis par la distribution!
Je suis désemparé même s'il y a d'autres pistes: des fichiers hll à coté des fichiers cil, qui sont mentionnés dans l'option
-h de la commande semodule et qui semblent être des binaires (ne marche pas); le fait de devoir possiblement fournir un module de base base.pp;
Il y a un compilateur /usr/sbin/sefcontext_compile, mais je ne pense pas qu'il corresponde au language cil; Peut être y a-t-il une confusion entre les formats .hll .pp .31, etc...
Où est le compilateur? Quel format binaire doit-il générer? comment charger ensuite ce fichier?
Faut-il seulement compiler quelquechose? ou plutôt peut-être utiliser sudo semodule --enable=mplayer qui ne me renvoie rien?
Je ne peux pas non plus appliquer des labels mplayer_t ou bluetooth_t (apparaissant dans les fichiers CIL)
car cela me renvoie systematiquement (pour tout autre label que ceux qui sont déjà utilisable) :
[ ~]$ sudo semanage fcontext -a -t mplayer_t $HOME/Bureau/hop2
ValueError: Le type mplayer_t est invalide, il doit être un type de fichier ou de périphérique
[ ~]$
[ ~]$ sudo semanage fcontext -a -t mplayer_t /usr/bin/vlc
[sudo] Mot de passe de xxxx :
ValueError: Le type mplayer_t est invalide, il doit être un type de fichier ou de périphérique
[ ~]$
Et toutes les applications restent unconfined_u:unconfined_r:unconfined_t:s0 sous Fedora...
Merci d'avance pour vos conseils.