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
CentOS 7
Installation d'Audit2allow
CentOS 7 atteindra bientôt sa fin de vie (EOL). Cette documentation est conservée à des fins historiques.
Pour créer ce type de règles utilisez Audit2allow, qui sera chargé de permettre les actions nécessaires.
Avant de commencer à créer des règles pour les stratégies, vous devrez peut-être installer un certain nombre de paquets pour pouvoir utiliser Audit2allow. Entrez dans le terminal de commande avec la clé root ou des droits équivalents (précédez la commande sudo) :
yum install selinux-policy-devel -y yum install policycoreutils-python -y
Localisation du répertoire journal de 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
Dans les versions précédentes à la version 747, le fichier
audit.log
se trouve dans/var/log/audit/audit.log
.
Dans le cas d'une mise à jour par OUM, le fichier logrotate correspondant doit être modifié.
Pour vérifier plus proprement ce qui bloque SELinux, nous vous recommandons de supprimer les journaux précédents et d'attendre qu'ils soient générés à nouveau avec de nouveaux enregistrements.
Arrêtez syslog (ce service pourrait également être appelé rsyslog) :
/etc/init.d/syslog stop
Supprimez le audit.log
et le fichier journal des messages système :
rm /var/www/html/pandora_console/log/audit.log /var/log/messages
Redémarrez syslog (ce service pourrait également être appelé rsyslog) :
/etc/init.d/syslog start
Configuration de SELinux
CentOS 7 atteindra bientôt sa fin de vie (EOL). Cette documentation est conservée à des fins historiques.
Pour configurer SELinux avec la valeur souhaitée, modifiez votre fichier de configuration :
# 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 voulez que SELinux s'exécute en mode restrictif en ne laissant exécuter que ce qui apparaît dans les règles des modules, configurerez-le en mode
enforcing
, en obtenant les exécutions refusées par SELinux paraudit.log
. - Si, au contraire, vous voulez que les warnings soient imprimés au lieu de bloquer les actions, laissez
permissive
, vous pourrez vérifier ces warnings dans le fichieraudit.log
.
Localiser les entrées pour la création des règles de politiques
CentOS 7 atteindra bientôt sa fin de vie (EOL). Cette documentation est conservée à des fins historiques.
Pour visualiser les dernières entrées des journaux, exécutez :
tail -f /var/www/html/pandora_console/log/audit.log /var/log/messages
Vous verrez qu'il y aura des erreurs comme par exemple :
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 transformer ces erreurs en règles que SELinux peut interpréter, exécutez :
grep collections /var/www/html/pandora_console/log/audit.log | audit2allow -M pandora
Cela créera 2 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. Après avoir ajouté toutes les règles, SELinux cessera de signaler des erreurs.
Règles nécessaires au bon fonctionnement de Pandora FMS
CentOS 7 atteindra bientôt sa fin de vie (EOL). Cette documentation est conservée à des fins historiques.
Pour que Pandora FMS puisse exécuter tous les services correctement, des règles doivent être créées pour les fonctionnalités suivantes :
- Créer, mettre à jour et supprimer des collections.
- Envoyer des e-mails en utilisant les tâches planifiées (Cronjob).
- Configuration à distance des agents.
Sinon, SELinux bloquera toute action associée à ces fonctionnalités.
Une façon de combiner toutes ces règles en une seule pour pouvoir utiliser Pandora FMS à 100% 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 couvrirait tous les conflits possibles entre Pandora FMS et SELinux.
sudo semodule -i pandora.pp