« LINUX:SELinux » : différence entre les versions

Aucun résumé des modifications
Aucun résumé des modifications
 
(9 versions intermédiaires par le même utilisateur non affichées)
Ligne 53 : Ligne 53 :
Le fichier de configuration central est "/etc/selinux/config".
Le fichier de configuration central est "/etc/selinux/config".


SELinux possède trois états:
L'option "SELINUX" possède trois états:
* '''disable''' : SELinux est désactivé, non opérationnel; c'est l'état que j'ai longtemps utilisé comme de nombreux autres administrateurs afin d'éviter les difficultés de mise en oeuvre.
* '''disable''' : SELinux est désactivé, non opérationnel; c'est l'état que j'ai longtemps utilisé comme de nombreux autres administrateurs afin d'éviter les difficultés de mise en oeuvre.
* '''permissive''' : SELinux est activé, les règles sont testées mais non appliquées. Si une règle n'est pas respectée, un message d'erreur est ajoutée aux journaux mais aucun blocage n'est effectué.
* '''permissive''' : SELinux est activé, les règles sont testées mais non appliquées. Si une règle n'est pas respectée, un message d'erreur est ajoutée aux journaux mais aucun blocage n'est effectué.
Ligne 81 : Ligne 81 :
  systemctl start rsyslog.service
  systemctl start rsyslog.service
  systemctl status rsyslog.service
  systemctl status rsyslog.service
Ces services sont cruciaux, ce sont eux qui vont recueillir les messages et alertes.




Ligne 89 : Ligne 90 :




On redémarre la machine. Ce n'est qu'à cette condition que l'on pourra effectuer les commandes suivantes. C'est pour cette raison que nous n'avons pas commencé par une explication succincte de quelques base de SELinux car nous n'aurions pu les montrer par l'exemple.
On doit redémarrer la machine. Ce n'est qu'à cette condition que l'on pourra effectuer les commandes suivantes. C'est pour cette raison que nous n'avons pas commencé par une explication succincte de quelques base de SELinux car nous n'aurions pu les montrer par l'exemple.




Ligne 131 : Ligne 132 :


Et tout un immense ensemble de règles régissent les interactions entre ces divers contexts. Cet ensemble de règles définit la sécurité SELinux.
Et tout un immense ensemble de règles régissent les interactions entre ces divers contexts. Cet ensemble de règles définit la sécurité SELinux.
=[[LINUX:SELinux-Alertes et Journaux|Alertes et Journaux]]=
Quand une règle est enfreinte, outre que l'accès demandé est refusé, une alerte est déclenchée et un message est envoyé aux journaux.




=[[LINUX:SELinux-Module|Module]]=
=[[LINUX:SELinux-Module|Module]]=
Un module est un ensemble cohérent des différentes composantes de SELinux: Types, règles, Fcontext,...  
Un module est un ensemble cohérent des différentes composantes de SELinux: Types, règles, Fcontext,...  
Il se présente sous une forme ayant beaucoup d'analogie avec un programme
Il se présente sous une forme ayant beaucoup d'analogie avec un programme.




=[[LINUX:SELinux-Méthode de première mise en route|Méthode de première mise en route]]=
Je ne conseille pas de suivre aveuglément les conseils données par Cockpit ou les messages du service setroubleshootd.service. Je présente ici l'approche que j'ai utilisée.




=[[LINUX:SELinux-Alertes et Journaux|Alertes et Journaux]]=
=[[LINUX:SELinux-Exercice de création d'un module personnel|Exercice de création d'un module personnel]]=
Quand une règle est enfreinte, outre que l'accès demandé est refusé, une alerte est déclenchée et un message est envoyé aux journaux.  
J'ai voulu essayer de créer un module pour une application personnelle élémentaire.
 
 
=Problème=
Suite à une mise à jour classique sous Fedora 41, Selinux était en erreur. Plusieurs problèmes apparaissent de façon répétitives dont voici quelques cas:
* Lors d'un redémarrage, nombre de services ne démarrent plus comme SSHD, Fail2Ban,...
* Plusieurs accès sont refusés
* L'ajout et l'élimination de modules personnels sont impossibles avec des messages d'erreurs liés à la base des modules
* La recompilation de la base de modules s'avère impossible. Voici un extrait des messages d'erreur.
----
Found conflicting filecon rules
Problems processing filecon rules
Failed post db handling
Post process failed
semodule:  Failed!
----
On remarque que parmi les modules, celui nommé "extra_binsbin" (classe 400) pose problème et est nouveau mais il est impossible de le retirer.
 
 
Une solution proposée est d'éliminer Selinux du système et toutes ses traces et ensuite de recommencer la réinstallation et la configuration à partir de rien. Mais ceci s'avère impossible car il est protégé.
dnf remove selinux-policy-targeted
 


La solution trouvée est de réinstaller Selinux:
* On se met en mode permissif ou on le désactive.
* On le réinstalle.
dnf reinstall selinux-policy-targeted
* Eventuellement on recompile la base des modules
semodule -B -v
* Par sécurité, on active la labellisation à nouveau des fichiers.
touch /.autorelabel
* On réactive Selinux ou au moins on le met en mode permissif pour tester en modifiant le fichier "/etc/selinux/config".
* On redémarre la machine.