Configuration de SELinux pour Pandora FMS
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 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 (viaaudit.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 « permissifs », 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