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 (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 « 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

Retour à l'index de documentation Pandora FMS.