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

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 38 : Ligne 38 :
* pour Nagios:  
* pour Nagios:  
  dnf install nagios-selinux
  dnf install nagios-selinux
Il faut chercher dans l'ensemble des paquets.
Il faut chercher dans l'ensemble des paquets contenant le mot "selinux".





Version du 10 septembre 2023 à 17:02


retour au menu de Linux


But

SELinux (Security-Enhanced Linux) est une architecture de sécurité pour systèmes Linux qui permet aux administrateurs de mieux contrôler les accès au système. SELinux définit les contrôles d'accès pour les applications, processus et fichiers d'un système lancé par un utilisateur donné. Il ajoute une couche de sécurité différente au traditionnel modèle de sécurité appliqué aux fichiers: propriétaires/groupes et permissions d'accès (lecture, écriture et exécution). Son modèle est basé sur un ensemble de règles.

Souvenons-nous que sous Unix toute ressources est accessible via un fichier donc en mettant une règle sur un fichier, on contrôle toute activité.


Nous n'allons pas expliquer en détail SELinux; de très nombreux sites le font bien mieux que nous. Je conseille de commencer par consulter quelques sites de base tels:

Il en existe bien d'autres.


Nous nous limiterons aux serveurs. Notre but est de présenter une approche pour arriver à mettre en route SELinux avec succès par étapes.


Installation

Sous Fedora, SELinux est installé de base; nous allons y ajouter divers paquets:

  • outils en lignes de commandes:
dnf install setools-console 
dnf install setroubleshoot-server
  • onglet additionnel à Cockpit:
dnf install cockpit-selinux
  • outils de développement afin d'ajouter un module personnel:
dnf install selinux-policy-devel selinux-policy-doc

Il faut s'assurer que le service "auditd.service" est installé:

dnf install audit

Chaque service vient normalement avec ses règles SELinux mais certains paquets demandent une installation séparée, par exemple:

  • pour PHP:
dnf install php-pecl-selinux php74-php-pecl-selinux php80-php-pecl-selinux php81-php-pecl-selinux
  • pour Nagios:
dnf install nagios-selinux

Il faut chercher dans l'ensemble des paquets contenant le mot "selinux".


Configuration

Le fichier de configuration central est "/etc/selinux/config".

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.
  • 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é.
  • enforcing : SELinux est activé, les règles sont testées et appliquées. Si une règle n'est pas respectée, un message d'erreur est ajoutée aux journaux et le blocage s'ensuit.

Dans un premier temps, nous utiliserons l'état "permissive" afin de nous familiariser avec SELinux et de régler à notre aise les différents problèmes. Quand le système nous semblera stable, on passera à l'état "enforcing".


Toute autre modification du paramétrage devra se faire au travers de commandes de ligne et jamais dans d'autres fichiers.


SELinux comporte trois niveaux de complexité:

  • minimum : Seuls les processus sélectionnés sont protégés.
  • targeted : Les processus des services sont protégés.
  • mls : Protection "Multi Level Security". (pour les experts)

Nous laissons le niveau par défaut "targeted" qui permet sur nos serveurs de surveiller les différents services. Notre but n'est pas de créer une politique de sécurité complète mais d'utiliser celles mise en place par la distribution et d'adapter certaines règles découlant d'imperfections ou de nos personnalisations de la configuration de base.


Première activation

On vérifie que le service "auditd.service" est actif

systemctl enable auditd
systemctl start auditd


Suite à la modification du fichier de configuration "/etc/selinux/config" ne sera effectif qu'après un redémarrage de la machine. Mais pour ce premier lancement, il faut s'assurer que tous les fichiers de la machine reçoivent bien leur bon label selon la politique de sécurité implémentée. Pour ce faire, on crée à la racine un fichier vide "/.autorelabel":

touch /.autorelabel 

Lors du redémarrage suivant, tous les fichiers du serveur vont être passé en revue et relabéllisés si nécessaire. Il ne faut pas vous étonner du temps de ce démarrage plus long qui dépend du nombre de fichiers et des performances de votre machine.


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.








retour au menu de Linux