Suite Expose Monitoring (Enregistré Automatiquement) PDF
Suite Expose Monitoring (Enregistré Automatiquement) PDF
Suite Expose Monitoring (Enregistré Automatiquement) PDF
1
I- HISTORIQUE
Nagios est un logiciel libre distribué sous licence GPL qui permet de superviser un système
d’information complet. Utilisé par de nombreuses sociétés, il fait l’objet de contribution et
recherche très actives.
Etant le successeur de NetSaint dont la première version date de 1999, ce logiciel est
considéré comme une évolution de ce dernier auquel a été ajoutée, entre autre, la gestion du
protocole SNMP. Il apparaît sous le nom de Nagios le 10 mai 2002 aux conditions de la GNU
General Public License. Cet outil repose sur une plate-forme de supervision, fonctionnant sous
Linux et sous la plupart des systèmes Unix. Il centralise les informations récoltées
périodiquement par le fonctionnement modulaire dont il est caractérisé, ce qui le rend beaucoup
plus attractif que ses produits concurrents. En revanche sa configuration peut se révéler
complexe.
2
II- PRESENTATION
Nagios (anciennement appelé Netsaint) est une application permettant la surveillance système
et réseau. Elle surveille les hôtes et services spécifiés, alertant lorsque les systèmes ont des
dysfonctionnements et quand ils repassent en fonctionnement normal. C'est un logiciel libre
sous licence GPL.
Pour vouloir monitorer un système informatique individuel, une base de données ou un serveur,
il n’est pas nécessaire d’installer le logiciel sur chaque dispositif, en effet l’installer sur un
serveur Nagios séparé est amplement suffisant. A partir de là nous pouvons simplement
configurer quel système ou quel processeur doit être surveillé. Tout cela s’articule autour des
quatre composants ou objets suivants :
Hôte : en tant que hôte, vous définissez les serveurs, bases de données et appareils, etc.
du réseau que vous souhaitez surveiller. L’indicateur le plus important pour un hôte est
l’adresse IP respective.
Contacts : avec la définition des contacts, Nagios peut alors envoyer des notifications
à des contacts administratifs via un email, un message texte ou encore un message vocal.
Même si Nagios n’est pas installé sur les différents hôtes, les plugins (qui vérifient les données
internes) fonctionnent eux directement sur les hôtes. L’accès à distance peut également être
utilisé pour cette exécution, mais cette méthode est rarement employée puisqu’elle demande
plus d’effort et l’utilisation d’un système disproportionnée (avec une connexion sécurisée).
C’est pourquoi l’alternative la plus simple est l’installation de programmes spécifiques sur les
hôtes. Cela s’effectue seulement à partir des requêtes du système qui sont préconfigurées
et transmettent les résultats via les ports réseau vers le serveur Nagios. Le NRPE (Nagios
3
Remote Plugin Executor) est utilisé par défaut et avec cette combinaison, Nagios peut aussi
monitorer les systèmes Windows.
Superviser des services réseaux : (SMTP, POP3, HTTP, NNTP, ICMP, SNMP,
LDAP, etc.)
Superviser les ressources des serveurs (charge du processeur, occupation des disques
durs, utilisation de la mémoire paginée) et ceci sur les systèmes d'exploitation les plus
répandus.
Interface avec le protocole SNMP.
La supervision à distance peut utiliser SSH ou un tunnel SSL (notamment via un agent
NRPE).
Les plugins sont écrits dans les langages de programmation les plus adaptés à leur
tâche : scripts shell (Bash, ksh, etc.), C++, Perl, Python, Ruby, PHP, C#, etc.
La vérification des services se fait en parallèle.
Possibilité de définir une hiérarchie dans le réseau pour pouvoir faire la différence
entre un serveur en panne et un serveur injoignable.
La remontée des alertes est entièrement paramétrable grâce à l'utilisation de plugins
(alerte par courrier électronique, SMS, etc.).
Acquittement des alertes par les administrateurs.
Gestion des escalades pour les alertes (une alerte non acquittée est envoyée à un
groupe différent).
4
Limitation de la visibilité, les utilisateurs peuvent avoir un accès limité à quelques
éléments.
Capacité de gestion des oscillations (nombreux passages d'un état normal à un état
d'erreur dans un temps court).
Créer ses propres plugins, dans le langage désiré. Il suffit de respecter la norme
Nagios des Codes retour
o 0 OK (tout va bien)
o 1 WARNING (le seuil d'alerte est dépassé)
o 2 CRITICAL (le service a un problème)
o 3 UNKNOWN (impossible de connaître l'état du service)
Les possibilités de tests deviennent donc infinies, il suffit d'écrire tout plugin qui
n'existerait pas déjà sur les sites spécialisés.
1- Fonctionnalité
Nagios est un système de surveillance de services réseau (SMTP, HTTP…) et de
ressources système (CPU, espace disque…).
Plus précisément, dans la terminologie Nagios, il s'agit de monitorer des services et des
hosts, chaque service étant affecté à un host ou à un groupe de hosts. A un instant "t",
un host se trouve dans un état down, unreachable ou ok, et un service dans un état
critical, warning, unknown ou ok.
Conceptuellement, Nagios est un moteur :
5
L'outil s'adresse aussi bien à de petites infrastructures (une dizaine de service) qu'à des
architectures conséquentes (plusieurs milliers de serveurs repartis sur plusieurs sites)
pour lesquelles il propose un modèle de supervision distribuée.
Nagios offre une interface web qui permet de visualiser l'état des services et des hosts
que l'on veut surveiller (tableau de bord). Cette interface web permet également
l'administration (très partielle) du monitoring.
Autres fonctionnalités
Interopérabilité
6
La description de l’infrastructure à monitorer (hosts, services, etc.) et du contexte
(contacts, commandes, périodes, etc.) est exprimée dans un formalisme objet (avec
notion d'héritage), sous forme de fichiers textes.
Il existe nombre d'outils permettant de générer cette base de données d'objets
(notamment via une interface web).
Les états courants des hosts/services sont mémorisés dans des fichiers textes et exprimés
dans un formalisme objet.
Les informations collectées sont archivées dans des logs au format texte. L’addon
NDOutils, téléchargeable sur le site officiel, permet de stocker ces informations dans
une base MySQL.
D'autres addons sont téléchargeables sur le site officiel, les deux plus connus étant
NRPE et NSCA, qui permettent de faire du client/serveur entre Nagios et ses plugins.
Toutes ces fonctionnalités sont assurées grâce la gestion et supervision du réseau et ses
différentes entités d’une manière centralisée. La figure suivante modélise cet aspect :
7
2- Architecture
8
3- Plugins
Nagios fonctionne grâce à des plugins écris en Perl ou en C. Sans eux, il est totalement
incapable de superviser et se résume en un simple noyau.
Ces plugins sont des programmes externes au serveur, des exécutables qui peuvent se
lancer en ligne de commande afin de tester une station ou service. Ils fonctionnent sous le
principe d’envoi de requêtes vers les hôtes ou services choisis lors d’un appel du processus de
Nagios, et la transmission du code de retour au serveur principale qui par la suite se charge
d’interpréter les résultats et déterminer l’état de l’entité réseau testée.
La relation entre le noyau et les plugins est assuré d’une part par les fichiers de configuration
(définitions des commandes) et d’autre part par le code retour d’un plugin. Cette relation peut
se résumer par le tableau suivant:
Nagios est livré avec un « package » de greffons standards regroupant les plus utilisés. Pour
une utilisation basique et simple, ils devraient être suffisants. En voilà quelques exemples:
9
check_ssh : Vérifie la présence d'un service SSH.
check_tcp : Vérifie l'ouverture d'un port TCP (passé en argument).
check_users : Compte le nombre d'utilisateurs sur la machine locale.
Il est possible de créer son propre plugin et l’interfacer avec Nagios tout en respectant les
conventions des codes de retours précédemment expliqués. La vivacité de la communauté Open
Source et celle de Nagios 2 en particulier permet de disposer d'un grand nombre de plugins
supplémentaires. Comme on peut le constater sur la figure suivante, les plugins peuvent
fonctionner soit en effectuant des tests en local, à distance par le biais de divers moyen comme
l’installation des agents NRPE ou NSClient ou autres.
Nagios s'appuie sur différents fichiers textes de configuration pour construire son
infrastructure de supervision. Nous allons à présent citer et définir ceux qui sont les plus
importants :
10
Resource.cfg permet de définir des variables globales réutilisables dans les autres
fichiers. Etant inaccessible depuis les CGI qui génèrent l'interface, ce fichier peut être
utilisé pour stocker des informations sensibles de configuration.
Commands.cfg contient les définitions des commandes externes, telles que celles qui
seront utiles pour la remontée d'alerte.
Checkcommands.cfg contient les définitions des commandes de vérification
prédéfinies et celles définies par l'utilisateur.
Hosts.cfg définit les différents hôtes du réseau à superviser. A chaque hôte est associé
son nom, son adresse IP, le test à effectuer par défaut pour caractériser l'état de l'hôte,
etc.
Services.cfg associe à chaque hôte ou à chaque groupe d'hôtes l'ensemble des services
qui doivent être vérifiés.
Hostsgroups.cfg définit des groupes d'hôtes pour regrouper des hôtes selon des
caractéristiques communes. Un hôte peut appartenir à plusieurs groupes.
Contacts.cfg déclare les contacts à prévenir en cas d'incident et définit les paramètres
des alertes (fréquences des notifications, moyens pour contacter ces personnes, plages
horaires d'envoi des alertes...).
11
IV- LES VARIABLES DU MODELE NAGIOS
12
V- LA SECURITE
Pour une meilleure sécurité
Ne pas faire fonctionner Nagios en tant que root ! Il n'est pas nécessaire d'être root
pour faire fonctionner Nagios, alors ne le faîte pas. Vous pouvez obliger Nagios à abandonner
des privilèges après le lancement et à fonctionner avec les droits d'un autre utilisateur/groupe
en utilisant les paramètres nagios_user et nagios_group dans le fichier principal de
configuration. Si vous avez besoin d'exécuter des gestionnaires d'événements ou des plugins
qui requièrent des accès root, vous pouvez essayer d'utiliser sudo.
13
potentiellement envoyer des résultats de contrôles erronées au démon Nagios. Cela pourrait
vous valoir quelques désagréments comme des notifications erronées ou des problèmes de
sécurité (gestionnaires d'événements déclenchés).
Utilisez les chemins complets dans la définition des commandes. Lorsque vous
définissez des commandes, assurez-vous d'avoir bien précisé le chemin d'accès complet de
tous les scripts ou binaires que vous exécutez.
14
Cachez les informations sensibles à l'aide des macros $ARGn$. Les CGIs
parcourent le fichier de configuration principal et le(s) fichier(s) de configuration des objets,
n'y laissez donc pas d'informations sensibles (noms d'utilisateur, mots de passe, etc.). Si vous
avez besoin de préciser un mot de passe ou un nom d'utilisateur dans une définition de
commande, utilisez $USERn$ macro pour le cacher. $USERn$ Les macros $USERn$ sont
définies dans un ou plusieurs fichiers de ressources. Les CGIs ne parcourant pas les fichiers
de ressources, vous pouvez leur donner des permissions beaucoup plus restrictives (600 ou
660). Consultez le fichier resource.cfg dans la distribution de base de Nagios, il vous
donnera un exemple de définition de la macro $USERn$.
Sécurisez l'accès aux agents distants. Assurez-vous d'avoir verrouiller l'accès aux
agents (NRPE, NSClient, SNMP, etc.) sur les systèmes distants en utilisant des pare-feu, des
listes d'accès, etc. Vous ne voulez pas que n'importe qui soit capable d'interroger vos systèmes
sur leurs états. Cette information peut être utilisée par un attaquant pour exécuter des
gestionnaires d'événements distants ou pour déterminer une fenêtre de temps pour une attaque
discrète.
15
Sécurisez vos canaux de communication. Assurez-vous d'avoir chiffré les canaux de
communication entre vos différents serveurs Nagios et entre Nagios et les agents de supervision
quand cela est possible. Vous ne voulez pas que quelqu'un puisse sniffer les informations d'états
lorsqu'elles transitent sur le réseau. Ces informations peuvent être utilisées par un attaquant
pour déterminer un intervalle de temps pour une attaque discrète.
Choix du logiciel
Les différentes solutions commerciales déjà présentées (HPOpenview, Patrol,
BigBrother, etc..) nécessitent un investissement important pour leur mise en place, et pour des
raisons propres à l’entreprise, toutes ces solutions sont à écarter de mon liste de choix. Parmi
les solutions les plus connues, recommandées et surtout Libres, on citera Nagios et Zabbix.
Voici un tableau comparatif des deux logiciels choisis.
16
-Requêtes SNMP. log en temps réel vers un serveur
-Check externes qui sert à tester les centrale offrant les informations
services réseaux (rien à installer sur nécessaires à la supervision.
l’équipement surveillé, tests limités à -Supervision active des services
des pings ou test de protocoles). et infrastructure qui nous
permet de garder l’historique
des performances.
Fonctionnalités -Offre une interface web de -Offre une interface web basée
consultation et d’administration. sur les CGL avec gestion des
-Peut générer des graphes. droits pour la consultation.
-Peut lever des alertes en envoyant -Génère des rapports de
des mails. surveillance.
-Supervise des équipements SNMP. - -Il a la possibilité de monitorer à
Gère les pannes et les performances distance à travers un firewall.
-Il peut définir des serveurs
esclaves qui prennent le relais si
le serveur maitre tombe en
panne.
-Surveillance des ressources des
serveurs (CPU, mémoire…)
-Surveillance des services
réseaux.
-Arrêt temporaire de la
supervision locale ou globale.
-Génère des graphes par
l’interfaçage avec RRDTools.
Architecture Architecture généralement basée sur Architecture généralement
: -Serveur Zabbix, le cœur et moteur basée sur :
de l’application programmé en C. -Le moteur de l’application qui
-Agent Zabbix pour la collection des sert à ordonnancer les tâches de
informations locales. supervision écrit en C.
-Une interface web d’administration -Une interface web réalisée à
et consultation des données. l’aide des GCI, décrivant la vue
-Une base de données SQL.
17
d’ensemble su système et les
anomalies possibles.
-Plusieurs plugins qui peuvent
être complétés en fonction des
besoins.
Dans cette série d'articles nous allons avoir besoin de compiler des sources de logiciels, il faut
donc dans un premier temps installer le package "build-essential" qui comporte les librairies de
développement de bases:
# sudo apt-get install build-essential
18
Nagios offre aux utilisateurs une interface de type Web. Il faut donc installer un serveur http
sur notre machine de supervision. On ne va pas être très original... On va utiliser Apache 2.
Bien qu’il soit possible d’utiliser des solutions plus légères et rapides comme Nginx.
# sudo apt-get install apache2 wget
19
Pour des raisons évidentes de sécurité, le processus Nagios ne sera pas lancé en root (droit
administrateur). Nous allons créer un utilisateur système nommé nagios et un groupe associé
également nommé nagios. Le groupe nagios comprendra les utilisateurs nagios et www-data
(utilisateur avec lequel le serveur Apache est lancé par défaut).
20
21
On installe ensuite le script de démarrage pour que Nagios se lance automatiquement avec votre
serveur de supervision:
Nous allons donc tester les fichiers de configuration grâce à la commande suivante:
22
Ensuite, on peut lancer le serveur Nagios
Il ne reste plus qu'à lancer un navigateur Web sur un PC de votre réseau et à saisir l'URL
suivante (attention de bien mettre le / à la fin de l’URL): http : //l’adresse IP du
serveur/nagios/
23
24
VII- AVANTAGES ET INCONVENIENTS
Avantages
Administration du stockage
Sécurité
25
Réutilisation des composants sécuritaires dans le développement d'application
Solution ouverte et multiplateformes
Support technique IBM de qualité
INCONVENIENTS
Bien que Nagios soit l’outil de supervision le plus utilisé, il dispose de plusieurs handicapes à savoir :
Le déploiement de l’agent assez robuste
Configuration compliquée qui oblige une très bonne connaissance de Nagios
Graphes pas assez clairs.
Administration compliquée.
26
CONCLUSION GENERALE
27
WEBOGRAPHIE
28