Suite à de nombreuses questions sur des dysfonctionnements récurrents, j’aimerai faire un rappel sur un utilitaire système nécessaire au bon fonctionnement de la supervision Centreon. Il s’agit de sudo contraction de la signification anglaise « Substitute User DO »
En clair : Exécuter une commande avec les droits du compte administrateur root et depuis n’importe quel compte utilisateur à condition qu’il soit autorisé.
Voici donc, l’importance de sudo dans notre environnement Centreon. Il autorisera certaines commandes telles que l’application de la configuration ou son rechargement.
En effet, lorsque vous utilisez l’interface Centreon, par exemple sous Debian, c’est le compte système www-data qui sera sollicité. Celui-ci n’est pas autorisé à lancer des commandes système comme le redémarrage du service du moteur de supervision.
Notre commande sudo prend toute son importance à cette étape. Avec une configuration adaptée à notre architecture inscrite dans son fichier de configuration /etc/sudoers, elle autorisera le compte www-data à exécuter le redémarrage du moteur de supervision, le rechargement du broker, etc…
Pour éditer ce fichier, nous utiliserons exclusivement la commande visudo. Cet éditeur permet la vérification de la syntaxe de la configuration.
En clair : Exécuter une commande avec les droits du compte administrateur root et depuis n’importe quel compte utilisateur à condition qu’il soit autorisé.
Voici donc, l’importance de sudo dans notre environnement Centreon. Il autorisera certaines commandes telles que l’application de la configuration ou son rechargement.
En effet, lorsque vous utilisez l’interface Centreon, par exemple sous Debian, c’est le compte système www-data qui sera sollicité. Celui-ci n’est pas autorisé à lancer des commandes système comme le redémarrage du service du moteur de supervision.
Notre commande sudo prend toute son importance à cette étape. Avec une configuration adaptée à notre architecture inscrite dans son fichier de configuration /etc/sudoers, elle autorisera le compte www-data à exécuter le redémarrage du moteur de supervision, le rechargement du broker, etc…
Pour éditer ce fichier, nous utiliserons exclusivement la commande visudo. Cet éditeur permet la vérification de la syntaxe de la configuration.
1 Centreon, une configuration spécifique
Dans une configuration standard, l’interface graphique de Centreon fonctionne avec un serveur Web Apache. Celui-ci utilise un compte système www-data pour Debian ou apache pour CES. Pour appliquer une configuration au moteur de supervision, le compte système du serveur Web doit avoir les droits suffisants pour relancer certains services. C’est toute l’importance d’une bonne configuration de notre fichier /etc/sudoers.
Lors de l’installation de Centreon, si vous avez demandé la configuration de sudo bien évidemment, le compte système du serveur Apache a été autorisé à exécuter certaines commandes avec l’utilisateur root.
Voici en détail, les modifications apportées :
Lors de l’installation de Centreon, si vous avez demandé la configuration de sudo bien évidemment, le compte système du serveur Apache a été autorisé à exécuter certaines commandes avec l’utilisateur root.
Voici en détail, les modifications apportées :
#Add by CENTREON installation script User_Alias CENTREON=www-data,centreon
un alias d’utilisateur (User_Alias) a été rajouté. Cet alias se nomme CENTREON. En général, il comprend plusieurs comptes système. En priorité le compte système du serveur web (www-data pour Debian, apache pour CES) est inscrit, puis les comptes centreon, nagios, centreon-broker et centreon-engine sont rajoutés en fonction des configurations.
Defaults:CENTREON !requiretty
La directive !requiretty est requise pour permettre l’utilisation de sudo sans terminal nécessaire lorsque ces commandes sont lancées depuis des scripts.
# Monitoring engine Restart CENTREON ALL = NOPASSWD: /etc/init.d/centengine* restart CENTREON ALL = NOPASSWD: /etc/init.d/centengine restart # Monitoring engine reload CENTREON ALL = NOPASSWD: /etc/init.d/centengine* reload CENTREON ALL = NOPASSWD: /etc/init.d/centengine reload # Monitoring engine force-reload CENTREON ALL = NOPASSWD: /etc/init.d/centengine* force-reload CENTREON ALL = NOPASSWD: /etc/init.d/centengine force-reload # Monitoring engine test config CENTREON ALL = NOPASSWD: /usr/local/centreon-engine/bin/centengine* -v * CENTREON ALL = NOPASSWD: /usr/local/centreon-engine/bin/centengine -v * # Monitoring engine test for optim config CENTREON ALL = NOPASSWD: /usr/local/centreon-engine/bin/centengine* -s * CENTREON ALL = NOPASSWD: /usr/local/centreon-engine/bin/centengine -s * # Snmptrapd Restart CENTREON ALL = NOPASSWD: /etc/init.d/snmptrapd restart # Centreontrapd restart CENTREON ALL = NOPASSWD: /etc/init.d/centreontrapd restart # Centreontrapd reload CENTREON ALL = NOPASSWD: /etc/init.d/centreontrapd reload # CentStorage Restart CENTREON ALL = NOPASSWD: /etc/init.d/centstorage restart # CentStorage stop CENTREON ALL = NOPASSWD: /etc/init.d/centstorage stop # CentStorage start CENTREON ALL = NOPASSWD: /etc/init.d/centstorage start # Broker engine Restart CENTREON ALL = NOPASSWD: /etc/init.d/cbd* restart CENTREON ALL = NOPASSWD: /etc/init.d/cbd restart # Broker engine reload CENTREON ALL = NOPASSWD: /etc/init.d/cbd* reload CENTREON ALL = NOPASSWD: /etc/init.d/cbd reload ## END: CENTREON SUDO
Ensuite, nous découvrons une suite de commandes autorisée à utiliser l’élévation de privilèges. Toutes les commandes ont l’option ALL = NOPASSWD permettant l’exécution de celles-ci sans le mot de passe du compte utilisateur. L'exemple ci-dessus est tiré d'une architecture Full Centreon (Centreon-Engine, Centreon-Broker).
La configuration de sudo diffère entre la distribution Debian et celle de CES basée sur Centos. Le fichier /etc/sudoers existe bien avec CES mais la configuration spécifique de Centreon se trouve dans le fichier /etc/sudoers.d/centreon.
2 Toujours vérifier son installation
Après une nouvelle installation, il est primordial d’effectuer des essais de fonctionnement et surtout bien déterminer le type de vérification que l’on peut faire.
Pour sudo, nous détecterons l’activité des logs lorsque nous utiliserons certaines commandes de l’interface Web.
Pour sudo, nous détecterons l’activité des logs lorsque nous utiliserons certaines commandes de l’interface Web.
2.1 Installation sous Debian
Le fichier de log utilisé par sudo se nomme /var/log/auth.log. Avant de lancer d'appliquer une configuration Centreon, lancez cette commande dans un terminal.
tail -f /var/log/auth.log
2.1a Application de la configuration Centreon
Lorsque vous appliquez la configuration, le serveur Web appelle la commande sudo pour lancer la commande de vérification de la configuration (encadré en rouge) et ensuite pour appliquer la configuration (encadré en bleu). Vous remarquerez que le compte système utilisant sudo se nomme www-data.
2.1b Génération de la configuration des traps
Le mécanisme est un peu plus complexe. Nous faisons appel au processus CentCore. Pour visualiser toutes les étapes, activer le mode debug de CentCore.
Surveillez l'activité du fichier /var/log/centreon/centcore.log dans un deuxième terminal. Sélectionnez le menu Configuration / SNMP traps / Generate
Dans notre exemple, la génération de la configuration des traps va déclencher une action dans le service CentCore. Celui-ci va lancer une commande sudo pour relancer le service centreontrapd. Lors de la lecture du fichier de log /var/log/auth.log, on constate que le compte système utilisé est centreon.
2.2 Installation sous CES
Le fichier de log utilisé par sudo se nomme /var/log/secure. Avant de lancer d'appliquer une configuration Centreon, lancez cette commande dans un terminal.
tail -f /var/log/secure
Comme précédemment, lorsque vous appliquez la configuration, le serveur Web appelle la commande sudo pour lancer la commande de vérification de la configuration (encadré en rouge) et ensuite pour appliquer la configuration (encadré en bleu). Vous remarquerez que le compte système utilisant sudo se nomme apache.