====== 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]].