====== Configuration de SELinux ====== {{indexmenu_n>80}} ===== Introduction ===== Dans Pandora FMS, l'installation doit toujours être effectuée avec Security-Enhanced Linux (**SELinux**) désactivé. Après l'installation et compte tenu de la nécessité de l'activer dans certains environnements. Les paramètres de configuration pour les différentes distributions GNU/Linux sont détaillés. ===== Rocky Linux 8 ===== ==== Installation de Audit2allow ==== Pour créer ce type de règles, on utilise **Audit2allow**, qui se chargera d'autoriser les actions nécessaires. Avant de commencer à créer des règles, vous devrez peut-être installer un certain nombre de paquets afin d'utiliser **Audit2allow**. Entrez dans le terminal de commande avec la clé **root** ou des droits équivalents (préfixez la commande **sudo**): dnf install selinux-policy-devel -y dnf install policycoreutils-python-utils -y ==== Emplacement du répertoire du journal SELinux ==== Les erreurs renvoyées par **SELinux** peuvent être trouvées dans les chemins suivants: * ''/var/www/html/pandora_console/log/audit.log'' * ''/var/log/messages'' En cas de mise à jour de Pandora FMS par **OUM**, vous devez modifier le fichier **logrotate** [[:fr:documentation:pandorafms:management_and_operation:11_managing_and_administration#ks6|correspondant]]. Pour vérifier plus clairement ce que **SELinux** bloque, il est recommandé de supprimer les //logs// précédents et d'attendre qu'ils soient régénérés avec de nouveaux logs. Le **syslog** doit être arrêté (ce service peut également être appelé **rsyslog**). Entrez dans le terminal de commande avec la clé **root** ou des droits équivalents (préfixez la commande **sudo**): systemctl stop syslog Le fichier ''audit.log'' et le fichier de messages système //log// doivent être supprimés: rm /var/www/html/pandora_console/log/audit.log /var/log/messages Redémarrez **syslog** (ce service peut également être appelé **rsyslog**): systemctl start syslog ==== Configuration SELinux ==== Pour donner à **SELinux** la valeur souhaitée, vous modifiez son fichier de configuration ''/etc/selinux/config'': # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted * Si vous avez besoin que **SELinux** fonctionne en mode restrictif, n'autorisant que ce qui apparaît dans les règles du module à s'exécuter, vous devez le mettre à ''enforcing'', supprimant ainsi (via ''audit.log'') les exécutions refusées par **SELinux**. * Si vous avez besoin d'imprimer des avertissements (//warnings//) au lieu de bloquer des actions, laissez-les ''permissive'', puis vérifiez ces //warnings// dans le fichier ''audit.log''. ==== Localiser les entrées pour la création de règles de politique ==== Pour afficher les dernières entrées de //logs//, entrez dans le terminal de commande avec **root** ou des droits équivalents (préfixez la commande avec **sudo**): tail -f /var/www/html/pandora_console/log/audit.log /var/log/messages Il est à noter que des erreurs de ce type seront rencontrées: type=AVC msg=audit(1431437562.755:437): avc: denied { write } for pid=1835 comm="httpd" name="collections" dev=dm-0 ino=266621 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_spool_t:s0 tclass=dir Pour convertir ces erreurs en règles que **SELinux** peut interpréter, vous devez exécuter la commande suivante: grep collections /var/www/html/pandora_console/log/audit.log | audit2allow -M pandora Cela créera deux fichiers dans le répertoire actuel: pandora.pp pandora.te Pour activer la nouvelle règle, exécutez: sudo semodule -i pandora.pp Répétez le processus pour ajouter les règles manquantes. Lorsque toutes les règles ont été ajoutées, **SELinux** cesse de signaler les erreurs. ==== Règles nécessaires au bon fonctionnement de Pandora FMS ==== Pour que Pandora FMS puisse exécuter correctement tous les services, des règles doivent être créées pour les fonctionnalités suivantes: * Créer, mettre à jour et supprimer des collections. * Envoi de messages électroniques par le biais de tâches programmées (**Cronjob**). * Configuration à distance des agents. * Contrôle **snmptrapd**. * Contrôle **NetFlow**. Dans le cas contraire, **SELinux** bloquera toute action associée à ces fonctionnalités. Un moyen de réunir toutes ces règles en une seule, afin de pouvoir utiliser complètement le Pandora FMS, serait: grep -e data_in -e collections -e var_spool_t -e zip -e md5 -e denied /var/log/audit/audit.log | audit2allow -M pandora Répétez ensuite l'étape décrite ci-dessus pour activer la règle. Cela couvrira tous les conflits possibles entre Pandora FMS et **SELinux**. Entrez dans le terminal de commande avec la clé **root** ou des droits équivalents (préfixez la commande **sudo**): sudo semodule -i pandora.pp === Résumé pratique === Les règles d'utilisation de **SELinux** avec Pandora FMS sont résumées, //en tenant compte du fait que, dans chaque cas particulier, les valeurs et les paramètres doivent être modifiés de manière personnalisée// tels que ''dev=sdaX'' ou ''pid=XXX''. La commande **setsebool** est un outil permettant de définir des //booléens// pour **SELinux**. L'option ''-P'' indique que la valeur définie doit persister à travers les redémarrages, et le ''1'' à la fin de la déclaration indique vrai, activant ainsi votre application. Entrez dans le terminal de commande avec la clé **root** ou des droits équivalents (préfixez la commande **sudo**): setsebool -P httpd_unified 1 setsebool -P httpd_read_user_content 1 setsebool -P httpd_can_network_connect 1 setsebool -P httpd_execmem 1 setsebool -P httpd_can_network_connect_db 1 setsebool -P httpd_can_connect_ldap 1 setsebool -P authlogin_nsswitch_use_ldap 1 setsebool -P nis_enabled 1 setsebool -P httpd_setrlimit 1 La commande **chcon** modifie le contexte **SELinux** des fichiers. L'option ''-t'' indique un type de fichier **SELinux** et l'option ''-R'' l'applique à un répertoire et à tout son contenu de manière récursive. Entrez dans le terminal de commande avec la clé **root** ou des droits équivalents (préfixez la commande **sudo**): chcon -R -t httpd_sys_content_rw_t /var/www/html/pandora chcon -R -t httpd_sys_content_rw_t /var/spool/pandora/ chcon -R -t httpd_sys_content_rw_t /tmp/ Les règles suivantes sont ajoutées, en tenant compte des adaptations nécessaires dans chaque cas. Entrer dans le terminal de commande avec la clé **root** ou des droits équivalents (préfixer la commande **sudo**): echo 'type=AVC msg=audit(1709637797.944:2074063): avc: denied { write } for pid=176072 comm="php-fpm" name="collections" dev="sda5" ino=142704842 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_spool_t:s0 tclass=dir permissive=1' | audit2allow -a echo 'type=AVC msg=audit(1709639101.328:2100929): avc: denied { unlink } for pid=152354 comm="php-fpm" name="gotty_cron_tmp.log" dev="sda5" ino=134725871 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_t:s0 tclass=file permissive=1' | audit2allow -a echo 'type=AVC msg=audit(1710850539.491:32359350): avc: denied { write } for pid=3895348 comm="connection" name="tmp" dev="sda5" ino=8398230 scontext=system_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:httpd_sys_rw_content_t:s0 tclass=dir permissive=1' | audit2allow -a La commande suivante est utilisée pour créer les règles dans un fichier nommé ''rules_apply.pp'': audit2allow -a -M rules_apply Les règles créées à l'étape précédente sont appliquées à l'aide de la commande **semodule**: semodule -i rules_apply.pp [[:fr:documentation:start|Retour à l'index de documentation Pandora FMS]].