Enseignement suprieur de type long de niveau universitaire SUPERVISION CENTRALISEE D'INFRASTRUCTURES DISTANTES EN RESEAUX AVEC GESTION DES ALARMES ET NOTIFICATION DES ALERTES Travail de fin d'tudes prsent par CHUNG CHOONG LON Franois LOUSSE Jonathan en vue de l'obtention du titre et du grade INGENIEUR INDUSTRIEL ANNEE ACADEMIQUE2004-2005 Remerciements Tout dabord, nous remercions lensemble du personnel de EASI pour leur accueil, leur aide et leur courtoisie qui, dune manire globale, ont permis de nous intgrer dans lentreprise et donc, de mener notre Travail de Fin dEtudes dans les meilleures conditions. Tout particulirement, nous remercions Monsieur Jean-Michel Block, notre promoteur de stage, qui nous a non seulement permis de raliser notre stage dans la socit EASI dans de bonnes conditions, tant du point de vue matriel que de la disponibilit, mais qui nous a galement pauls et conseills dans les choix relatifs la ralisation de notre TFE. De mme, nous remercions Cdric Van Put qui a toujours t l pour nous aider lorsque nous avions des problmes. Nous exprimons galement toute notre reconnaissance envers le corps enseignant de lInstitut Suprieur Industriel de Bruxelles qui nous a aid durant toutes nos tudes et notamment envers Monsieur Giot sans qui ce stage naurait pas t possible. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 1 SUR 95 Rsum Pour assurer la disponibilit permanente de leur infrastructure informatique, les entreprises ont rapidement compris que la supervision tait devenue une ressource-cl. Bon nombre de logiciels de supervision existent mais, parmi tout ceux-l, Nagios est trs certainement le logiciel Open Source le plus rpandu et galement le plus suivi par la communaut de dveloppeurs. La supervision a trois objectifs principaux: prvenir les incidents sur le rseau par extrapolation des donnes fournies, agir rapidement ds qu'un systme est not en erreur et permettre l'analyse "post mortem" d'un problme grce aux informations collectes. Bien que Nagios soit reconnu comme difficile installer et configurer, il possde un nombre impressionnant de fonctionnalits telles que la surveillance de services rseau (SMTP, POP3, HTTP, NNTP, PING, .), la surveillance de ressources machine (charge du processeur, utilisation du disque, ...) et la conception simple des "plugins" qui permet des utilisateurs de dvelopper facilement leur propre service de vrification. Dans le cadre de ce TFE, nous avons mis en place une supervision centralise de linfrastructure informatique de EASI, une gestion dalarmes en cas de problmes sur le rseau et une notification des alertes par email. Pour effectuer cela, nous avons non seulement utilis les "plugins" standard de Nagios mais nous avons galement dvelopp nos propres "plugins". De plus, nous avons cr un mode multi-utilisateurs avec une authentification via lannuaire LDAP de EASI et nous avons scuris les changes dinformations entre les serveurs Nagios par un systme de cls publiques et prives. Lobjectif terme est dtendre cette architecture lensemble des clients de EASI. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 2 SUR 95 Summary To ensure the permanent availability of their data-processing infrastructure, the companies quickly understood that the supervision become a key resource. Many softwares of supervision are available but among all these, Nagios is certainly the most spread Open Source software and also the most followed by the developers community. The supervision has three principal objectives: prevent the incidents on the network by extrapolation of the provided data, act quickly as soon as a system is noted in error and allow the "post mortem" analysis of a problem thanks to collected informations. Although Nagios is recognized to be difficult to install and to configure, it has a impressing number of functionalities such as monitoring network services (SMTP, POP3, HTTP, NNTP, PING, ...), machine resources (load of the processor, use of the disc, ...) and the easy way to create their own service of checking thanks to a simple structure of plugins. Within the framework of this TFE, we develop a centralized monitoring of the data-processing infrastructure of EASI, a management of alarms in the event of problems on the network and a notification of alarms by email. To realize that, we use not only the standard plugins of Nagios but we also develop our own plugins. We also created a multi-user mode with an authentification via a LDAP directory and we made a secure exchange of informations between Nagios servers by a system of public and private key. The objective in the long term is to extend this architecture to all the EASIs custom. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 3 SUR 95 1. Introduction Ce Travail de Fin dEtudes dcrit la marche suivre pour superviser de manire centralise des infrastructures distantes en rseaux. En cas de problmes sur un composant rseau ou un service, nous allons expliquer comment grer les alarmes et les mthodes appliquer pour notifier ces problmes aux personnes responsables du bon fonctionnement de ces rseaux distants, en loccurrence le dpartement "Systems Integration" de EASI. Cette notification se fait par le biais dalertes, des emails dans notre cas. La supervision comprend un certain nombre dactivits telles que la surveillance, la visualisation, lanalyse et le pilotage. De notre ct, nous nous intresserons la supervision informatique qui permet de contrler les composants rseau et les applications dune entreprise. Le fait de pouvoir centraliser la supervision permet un contrle total des diffrents rseaux distants ainsi que de leurs quipements. Rapatrier les informations provenant de ces derniers est donc primordial. Mais il est galement important que les rseaux distants cherchent de manire indpendante leur configuration sur un serveur Central. Suivant le mme principe, cela permet une gestion centralise des diffrentes configurations. Quant linfrastructure, cest un vaste domaine dans lequel on retrouve des composants rseaux classiques (imprimantes, stations de travail, serveurs, routeurs, ...), des services (HTTP, FTP, SMTP, POP3, PING, .) mais galement des composants rseau non classiques (contrle de la temprature dun frigo, de la disponibilit dune pointeuse, .). Tous ces composants, par leur prsence sur le rseau, sont atteignables et donc supervisables. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 4 SUR 95 1.1. SNMP vs Nagios SNMP signifie Simple Network Management Protocol, ce qui se traduit par protocole simple de gestion de rseau. Il s'agit d'un protocole qui permet aux administrateurs rseau de grer les quipements du rseau et de diagnostiquer les problmes qui peuvent y survenir. Sur Internet, on retrouve des logiciels qui grent ce protocole. On peut citer entre autres HP OpenView, OpenNMS, SNMP MIB Browser et SNMP Watcher. Nagios, le logiciel que nous utilisons pour superviser, gre galement des trappes SNMP mme sil n'est pas destin ni crit pour tre un remplaant "point pour point" d'applications natives SNMP. Cependant, il peut tre configur de manire ce que les interruptions SNMP reues par un hte gnrent des alertes dans Nagios. Pour effectuer la supervision, nous prfrons de loin Nagios pour plusieurs raisons. Tout dabord, la mise en place est beaucoup moins contraignante car dans le cas de SNMP, il faut installer des dmons sur les composants que lon souhaite superviser ainsi qu'une base de donnes MIB (Management Information Base) qui contient toute les informations ncessaires la gestion d'un rseau informatique. Alors que Nagios ne requiert rien de particulier. Ce qui est non seulement un gain de temps considrable mais aussi une facilit pour limplmentation chez un client. De plus, Nagios est un logiciel Open Source, ce qui diminue trs clairement les cots. Les logiciels SNMP sont gnralement sous le cot de licences et si lon tient compte du fait que la supervision se fera pour plusieurs petites PME et non pour quelques grandes socits, il faudrait imaginer acheter plusieurs licences pour de petits parcs informatiques. Cette solution nest pas rentable du tout. Les licences sont rentabilises lorsque le parc informatique supervis reprsente un trs grand nombre dordinateurs, ce qui n'est pas notre cas. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 5 SUR 95 1.2. Linux DEBIN Debian est un systme d'exploitation libre. GNU/Linux fournit le systme de base et Debian fournit des logiciels trs divers. Cette structure est ralise par une communaut de dveloppeurs qui travaille bnvolement travers le monde. La distribution Debian GNU/Linux est rpute depuis longtemps pour sa stabilit due une longue priode de test, sa gestion des paquets mais aussi pour sa scurit. Cependant, les difficults d'installation et d'utilisation associes Debian GNU/Linux laissent trop souvent croire que ce systme d'exploitation n'est rserv qu' des utilisateurs chevronns. Pourtant, si Debian parat dconcertant pour un dbutant, aprs une courte priode de prise en main, Debian est un systme trs agrable. De plus, sa logithque impressionnante (environ 8710 paquets) en fait une distribution trs intressante aussi bien pour une utilisation professionnelle que prive. Il existe en permanence trois distributions Debian: "stable", "testing" et "unstable". Chacune de ces distributions porte un nom mais, mis part pour l'"unstable" o ceci est sans consquence, il ne faut pas confondre la distribution et son nom. La distribution "stable" reprsente la distribution officielle de Debian qui est recommande pour un usage professionnel. Les seules modifications qu'elle a subies au cours de son existence sont des corrections de "bugs" et de trous de scurit. Elle est la seule tre officiellement suivie par l'quipe de scurit de Debian. La distribution "testing", celle que nous avons utilise dans le cadre de ce Travail de Fin dEtudes, reprsente la future distribution "stable". Plus jour que cette dernire (notamment quand celle-ci arrive en fin de vie) elle bnficie, hormis l'aspect scurit, de la qualit et de tous les avantages du systme de gestion des paquets Debian. La distribution "testing" est recommande pour un usage personnel. Cest un excellent compromis entre la version "stable" et "unstable". En effet, elle en est assez proche, et est au got du jour tout en prsentant moins de risques de "bugs" que la version "unstable", c'est pour tous ces avantages que nous l'avons choisie. La distribution "unstable" est constitue de paquets l'essai avant d'tre admise dans la distribution "testing". Malgr quelle soit la plus jour de toutes, elle souffre de ruptures dans le systme de gestion des paquets. La distribution "unstable" s'adresse donc plutt aux dveloppeurs ou ceux qui sont la pointe quitte perdre un peu en facilit d'utilisation. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 6 SUR 95 1.!. "titude #dvanced Pac$aging %oo& ' P%( L'utilitaire APT est l'un des principaux outils de gestion de paquets sous Debian en ligne de commande. Cet utilitaire ne se limite pas l'installation des paquets mais permet galement une gestion complte de ceux-ci. Il donne galement la possibilit de dsinstaller, de recueillir les diffrentes informations sur les paquets, les dpendances, les conflits et les mises jour. En ce qui concerne l'installation et la dsinstallation de paquets Debian, cest- -dire dextension ".deb", APT possde un utilitaire trs performant bas sur DKPG appel "APT-GET". Celui-ci permet, entre autres, de tlcharger et dinstaller automatiquement un logiciel demand (par son nom) ainsi que toutes ses dpendances partir de sources logicielles afin que celui-ci fonctionne correctement. On peut galement supprimer un paquet, vrifier le cache et les problmes entre paquets, synchroniser les informations situes sur le systme avec celles dune source, installer la version la plus rcente du paquet prsent dans le systme, . Grce lutilitaire "APT-GET", nous avons install convenablement Nagios, logiciel de supervision, car, manuellement, les dpendances sont trs dures grer et installer. De mme, pour linstallation de modules de Nagios, lutilitaire APT-GET sest montr trs agrable et efficace. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 7 SUR 95 1.). L*diteur de texte +I VI est un des diteurs de texte les plus populaires sous Linux malgr son ergonomie trs limite. En effet, VI est un diteur entirement en mode texte, ce qui signifie que chacune des actions se fait l'aide de commandes texte. Cet diteur, bien que peu pratique premire vue, est trs puissant et est trs utile en cas de non fonctionnement de l'interface graphique. Il y a 3 modes en VI: le mode normal dans lequel on se trouve l'ouverture du fichier et qui permet de taper des commandes, le mode insertion qui insre les caractres saisis l'intrieur du document et le mode de remplacement qui remplace le texte existant par le texte saisi. Pour modifier les fichiers de commandes et de configuration de Nagios en mode console, l'diteur de texte a t plus quutile mme si au dbut, son utilisation a t fort rude. Dans le cas du serveur Nagios central, comme nous le contrlions distance et qu'un manque de mmoire ne nous permettait pas de disposer dune interface graphique, l'utilisation de l'diteur de texte a t invitable. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 8 SUR 95 1.,. La su"ervision en -re. 1.,.1. Descri"tion La supervision est un vaste domaine de l'informatique qui inclut plusieurs activits: surveiller, visualiser, analyser, piloter, agir, . La supervision informatique supervise l'ensemble du systme d'information de l'entreprise qui comprend notamment le rseau et ses quipements, les serveurs, les priphriques et les applications. Plusieurs mthodes existent: o analyser les fichiers log o rcuprer des rsultats de commandes et de scripts locaux ou distants o utiliser le protocole SNMP (Simple Network Management Protocol) Autour de la supervision, plusieurs modules coexistent: o La supervision rseau s'occupe de composants matriel tels que serveur, imprimante, pare-feu, . o La supervision systme s'occupe des applications et logiciels o La notification permet lenvoi d'alertes par email, par sms, par tlphone, par avertissement sonore, . o L'excution de commandes permet de relancer une application qui fait dfaut o La retranscription d'tat du systme permet de voir tout moment l'tat de tous les composants et applications superviss sous forme d'un graphique, d'une carte ou d'un tableau. Son but est de rendre les rsultats plus lisibles o La cartographie visualise le rseau supervis par l'intermdiaire de carte, de graphique, de tableau, . o Le "reporting" consiste en un historique complet de la supervision CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 9 SUR 95 Le march de la supervision, quant lui, est dcoup en deux grandes sous- parties: les offres diteurs et les offres du monde libre. Les gros diteurs logiciels ont rapidement compris que la supervision tait une ressource-cl pour les entreprises qui, de plus en plus, utilisent leur systme d'information et ont donc besoin d'une disponibilit toujours plus grande de leur infrastructure informatique. Par consquent, la supervision est un domaine dans lequel les socits n'hsitent pas investir depuis quelques annes. Ayant rapidement compris cela, les gros diteurs logiciels sont donc trs vites entrs dans la course aux logiciels de supervision. Aujourd'hui, la majorit des gros diteurs logiciels propose des outils complets de supervision. On retrouve, parmi les plus connus: o HP: la gamme Openview (NNM, OVO, ...) o BMC: Patrol o IBM: Tivoli o Computer Associates: Unicenter TNG Ces outils possdent tous leurs avantages face la concurrence. Cependant, tous ont galement le mme dfaut: le prix. En effet, il faut savoir que, pour une entreprise de taille moyenne, il lui faudra compter en moyenne 30 000 euros pour superviser son systme d'information, sans compter les jours de services ou de formation sur les produits, invitables vu la complexit de ces logiciels. Cette constatation faite, il est alors logique de voir de plus en plus de socits aujourd'hui regarder du ct du logiciel libre, o les projets CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 10 SUR 95 commencent depuis quelques annes devenir de plus en plus professionnels et suivis. Depuis une dizaine d'annes dj, plusieurs projets de supervision ont vu le jour au sein de la communaut du logiciel libre. On notera ainsi, parmi les plus populaires: o Nagios o Zabbix o OpenNMS Parmi tous les logiciels libres de supervision, Nagios est trs certainement le plus rpandu et galement le plus suivi par la communaut de dveloppeurs. Cest dailleurs celui que EASI a choisi pour superviser son infrastructure informatique ainsi que celle de ses clients, et qui va faire lobjet de notre Travail de Fin dEtudes. 1.,.2. /-0ecti.s Les systmes informatiques d'entreprises associent une diversit de services (routage, messagerie, proxy, serveur Web, services de fichiers et d'impressions, ...) plusieurs types de rseaux (LAN, Intranet, DMZ, Internet, ...). La disponibilit et le bon fonctionnement de chaque machine et logiciel participant cet ensemble ont besoin d'tre vrifis rgulirement. Des logiciels, les moniteurs, existent afin d'automatiser la vrification des systmes informatiques. Ces outils ne fonctionnent pas tous sur le mme principe (par exemple tester les services, interroger ces services sur leurs tats, ou attendre une ventuelle alerte mise par le service). Par ailleurs, l'outil de supervision ne doit pas remettre en cause l'architecture: il supervise dans les meilleures conditions toutes les machines du rseau sans l'affaiblir, cest--dire qu'il assure la scurit tout en absorbant la monte en charge. La supervision a deux objectifs principaux: o La "rvention des "annes La surveillance d'un systme permet de connatre sa disponibilit un instant t, mais aussi de mesurer dans le temps l'volution d'un certain nombre de paramtres tels que l'occupation de l'espace disque ou la charge mmoire. Il devient alors possible par extrapolation de prvenir le moment de rupture du systme en prenant des mesures prventives. o La re"rise sur incident En gnral, un incident est connu lorsque l'utilisateur final se plaint d'un disfonctionnement dans sa perception normale d'utilisation. Il faut alors CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 11 SUR 95 qualifier la panne, vrifier son origine s'il s'agit rellement d'une panne, puis rparer. Le cycle d'intervention peut tre grandement rduit par le biais de la supervision: dans le cas d'une panne avre, le systme prvient automatiquement l'quipe concerne, la rparation s'effectue alors avant mme que l'utilisateur ne se soit aperu du problme; d'autre part dans le cas d'une fausse alerte (erreur de manipulation de l'utilisateur), le systme de supervision s'assure du bon fonctionnement de tous les quipements d'un coup dil. Enfin, l'archivage des informations sur l'tat des systmes au cours du temps est une source d'information pour l'analyse "post mortem" d'un incident. En rsum, l'objectif est triple: prvenir les incidents par extrapolation des donnes fournies, agir rapidement ds qu'un systme est not en erreur et permettre l'analyse "post mortem" d'un problme grce aux informations collectes. Un logiciel dit de supervision doit permettre de remplir tous ces objectifs. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 12 SUR 95 2. 1a2ier des c2arges Un cahier des charges est un document ncessaire la russite d'un projet. Tout d'abord, il assure la pertinence du projet envisag. Ensuite, il permet au client de dfinir, de manire aussi prcise que possible, ses besoins. Enfin, il formalise le besoin et l'explique aux diffrents acteurs pour s'assurer que tout le monde est d'accord. Le projet consiste superviser de manire centralise les infrastructures des clients de EASI, la socit dans laquelle nous avons fait notre stage et notre Travail de Fin d'Etudes, et plus particulirement leurs applications et leur rseau informatique. Dans le cadre de notre dveloppement, nous supervisons linfrastructure du rseau informatique de EASI. Chaque client a un serveur Nagios Local, machine fonctionnant sous Linux et faisant tourner un programme Open Source s'appelant Nagios, pour superviser le parc informatique propre sa socit. Ce serveur fait partie du rseau de la socit, ce qui permet Nagios d'effectuer la supervision de manire optimale. Il a accs Internet pour communiquer avec le Serveur Nagios Central. Cette communication sert changer les fichiers de configuration ainsi qu' envoyer les diffrents tats des composants rseau et applications supervises. Le client voit tout moment le rsultat de la supervision grce l'interface Web scurise du serveur Nagios Central et son identifiant qui l'authentifie. Bien entendu, l'accs la configuration lui est interdit et il ne voit que les lments faisant partie de son propre rseau. Pour mettre en place la supervision d'un client, il est bon de savoir ce que celui-ci veut superviser. Un tableau dtaillant les diffrentes vrifications possibles ainsi que les diffrents composants rseau de la socit cliente doit tre complt par celui-ci. Dans un premier temps, cette liste de vrifications comprend les vrifications standard du programme Nagios, mais aussi les systmes non standard et terme, les demandes de supervision spcifiques propres un client. Le serveur Nagios Central rassemble les informations de tous les clients superviss et il contient les fichiers de configuration de tous les serveurs Nagios Locaux. En cas d'un problme signal sur le serveur Nagios Central, celui-ci prvient par le biais d'un mail le dpartement "Systems Integration" de EASI. Le personnel de ce dpartement rgle alors le problme et dans certains cas, prvient la socit de l'ventuel disfonctionnement. Un serveur Apache permet Nagios d'implmenter une interface Web, celle-ci est accessible tous les clients mais en lecture. Tandis que EASI visualise l'ensemble des composants superviss et peut intervenir sur la configuration de Nagios. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 13 SUR 95 Le serveur Nagios Central contient les fichiers de configuration des diffrents clients, ce qui a pour but de faciliter la maintenance due la centralisation des donnes. La rplication des fichiers de configuration est faite sur les serveurs Nagios Locaux lors de modifications. Pour viter une faille de scurit dans les rseaux des clients par l'ouverture de ports sur le pare-feu en entre, le serveur Nagios Local se connecte au serveur Central pour vrifier si ses fichiers de configuration sont diffrents de ceux stocks sur le serveur Central. Si les fichiers sont diffrents, le serveur Nagios Local les tlcharge et redmarre le programme Nagios avec la nouvelle configuration. En plus de cette scurit, la connexion entre les diffrents serveurs est scurise. Enfin, EASI ne souhaite pas vendre un produit de supervision mais bien un service. En effet, EASI gre l'infrastructure informatique d'une cinquantaine de clients. L'objectif de ce projet est d'inclure la supervision dans le contrat associ la gestion de leur infrastructure, afin d'augmenter l'efficacit de EASI. La vente d'un logiciel de supervision, tel qu'un logiciel SNMP, augmente les cots ce qui constitue une barrire importante pour le client. De plus, cela va l' encontre des objectifs de EASI car son but est bien d'augmenter la qualit du service sans apporter de surcot auprs du client. Nous devons galement concevoir des feuilles de documentation qui permettent au personnel de EASI d'installer, de configurer et de tenir jour le systme de supervision Nagios chez les clients. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 14 SUR 95 Pour raliser ce projet, nous avons notre disposition le matriel suivant: o 2 "orta-&es IBM %2in$Pad R!3 #PIII( Systme dexploitation : Windows 2000 Description : Stations de tests Les premiers essais sont raliss sur ces portables qui reprsentent des serveurs superviser. o 1 "orta-&e IBM %2in$Pad 21M #PIII( Systme dexploitation : Debian Description : serveur Nagios Local Cest sur ce portable que nous avons install et configur Nagios et que nous ralisons les premires vrifications dalarmes et de notifications. o 1 P1 .ixe IBM Net.inity !333 #PII( Systme dexploitation : Debian Description : serveur Nagios Central Possdant une mmoire de 64 Ram, nous sommes contraints de travailler en mode console avec VI, l'diteur de texte propre Linux. Pour plus de facilit, nous le contrlons distance travers une connexion SSH. Au dbut, cette machine est prsente dans la pice o nous travaillons. Ensuite, elle est place lextrieur de EASI chez Interxion, une socit spcialise notamment dans lhbergement, pour permettre une meilleure protection et un dtachement physique. Vu certains problmes de connexion, la machine a rintgr EASI o se sont drouls les derniers essais. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 15 SUR 95 !. Nagios !.1. Prsentation Anciennement appel Netsaint, Nagios fonctionne sous Linux et sous la plupart des systmes Unix. Ce logiciel a pour vocation la supervision de machines et de services sur un rseau htrogne complexe. Il excute des scripts intervalles programmables et ceux-ci vrifient le bon fonctionnement d'un service ou d'une machine. Nagios centralise toutes ces informations et celles- ci sont accessibles via une interface Web. Ainsi on connat la sant en temps rel d'un rseau, d'une machine ou mme d'un service. En cas de dfaillance d'une des tches supervises, Nagios met des messages dalerte sous diffrents formats et il gre galement certains types d'erreurs. Par exemple: lorsque Nagios dtecte que le serveur Web d'une machine Linux est bloqu, il avertit quelqu'un que le service est dfaillant et il rgle le problme par lui-mme en lanant un script qui redmarrera le serveur Web distance. Si l'opration a bien russi, la personne responsable reoit une notification disant que tout est rentr dans l'ordre. Dans le cas contraire, cette personne remet le serveur Web en fonction. Nagios ne se contente pas seulement de rcolter les informations provenant d'une interrogation intermittente mais il analyse les rponses provenant de modules externes ("plugins", ou greffons en franais) adapts chaque service et plate-forme superviss. Contrairement beaucoup dautres outils de supervision, Nagios ne dispose pas de mcanisme interne pour vrifier ltat dun service, dun hte, . la place, il utilise des "plugins". En fonction de la configuration dfinie par ladministrateur, Nagios, qui nest en fait quun noyau, excute les "plugins" et analyse les rsultats obtenus. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 16 SUR 95 Voici comment on schmatise le fonctionnement de base: Comme le montre ce schma, il est possible deffectuer des tests de toutes sortes sur la machine Nagios (fonctionnement de service, espace disque, charge, ...). Il excute galement des tests sur des machines distantes. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 17 SUR 95 !.2. 4istori5ue Nagios est entirement bas sur le moteur de Netsaint, ancien outil de supervision rseau. o Mars 1999 : premire version de NetSaint dveloppe par Ethan Galstad o Mars 2002 : dernire version de NetSaint o Mai 2002 : premire version de Nagios o Novembre 2002 : premire version stable de Nagios (1.0) o Fvrier 2004 : sortie de la version 1.2 de Nagios, dernire version stable actuelle o Courant 2005 : sortie de la version 2.0 de Nagios Dans le cadre de ce projet, nous utilisons la version 1.3 (du 24 octobre 2004) car celle-ci est la plus rcente et la plus stable. La version 2.0 sortie en fvrier 2005 n'est pas considre comme une version officielle mais comme une version beta. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 18 SUR 95 !.!. 6onctionna&its Le succs de Nagios provient du nombre impressionnant de fonctionnalits qu'il possde. Nous avons repris les plus importantes sous forme de liste: o Surveillance des facteurs environnementaux comme la temprature o Surveillance des ressources machine (charge du processeur, utilisation du disque, nombre d'utilisateurs connects, ...) o Conception simple des "plugins" qui permet des utilisateurs de dvelopper facilement leur propre service de vrification o Vision des diffrents rsultats, services et htes sur un mme cran en les comparant facilement de manire paralllise o Capacit de dfinir une hirarchie des priphriques rseau permettant la dtection et la distinction des serveurs en panne de ceux qui sont inaccessibles o Notification d'alertes envoyes lorsque des problmes de service ou de serveur se produisent et doivent tre rsolus (par lintermdiaire dun e-mail, dun SMS ou de la mthode dfinie par lutilisateur) o Intensification facultative des alertes de serveurs et de services diffrents groupes de contacts o Capacit de dfinir des vnements pour une rsolution proactive des problmes o Rotation automatique des fichiers log o Support pour l'implmentation de serveurs de supervision redondants et distribus o Interface Web pour suivre ltat du rseau, son volution, ses problmes, ses fichiers log, . o Systme simple d'autorisations dfinissant ce que les utilisateurs voient et font partir de l'interface Web o Rsolution des problmes via linterface Web o Temps d'arrt programms pour supprimer les alertes de serveurs et de services pendant les priodes de pannes prvues CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 19 SUR 95 !.). rc2itecture Nagios est une plate-forme de supervision part entire qui utilise un serveur Web et des fichiers CGI pour rendre l'interface plus conviviale et surtout plus lisible. Nagios place tous les rsultats de la supervision dans un fichier log ou dans une base de donnes, ceci rend bien entendu la lecture et l'interprtation des rsultats difficiles. L'interface Web a pour but de simplifier cette lecture fastidieuse. Nagios stocke ces rsultats dans une base de donnes de type MySQL ou PostgreSQL. La base de donnes n'est pas essentielle dans le fonctionnement de Nagios et peut tre remplace par de simples fichiers texte. Cest dailleurs ce que nous avons fait car dans ce cas-ci, la configuration est plus facile mettre en place. De plus, les bases de donnes ne sont plus reconnues dans les nouvelles versions. L'architecture standard de Nagios est donc reprsente de la manire suivante: CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 20 SUR 95 Nagios dispose dune srie de "plugins" standard qui supervise dj de nombreuses fonctionnalits sur un rseau, mais il est possible d'ajouter des "plugins" provenant de librairies spcifiques ou mme de crer ses propres "plugins". Nous verrons plus loin dans ce travail comment crire de nouveaux "plugins" et la faon de les utiliser via Nagios. Pour les "plugins" standard, nous les avons classs en plusieurs catgories en fonction de ce qu'ils supervisent: o Equipements o Rseaux/Protocoles o Applications o Services o Clients Lensemble des "plugins" standard, tris par catgorie et dtaills se trouve dans les annexes (Annexe 1). !.).1. Inter.ace 7e- L'interface Web de Nagios est accessible via un simple navigateur, permettant ainsi un utilisateur de voir l'tat de sant du rseau. Elle permet galement un administrateur de visualiser les rsultats de la supervision, de modifier quelques lments de la configuration et surtout d'accder aux historiques. Base sur des fichiers CGI, cette interface est donc scurise par les mcanismes associs au serveur Web et aux CGI afin de restreindre les accs aux informations en fonction des utilisateurs. L'interface Web est compose de deux grands types de vues: les vues de "monitoring" et de "reporting". Des captures d'cran de cette interface Web sont disponibles dans les annexes (Annexe 17). Premirement, les vues de "monitoring" permettent de connatre l'tat des quipements et des services superviss en temps rel, et ventuellement d'effectuer des actions sur ces derniers. Voici les vues principales disponibles: o %actica& /vervie89 est une vue gnrale rsumant l'ensemble des informations sur la sant du rseau, sur le nombre d'htes et de services superviss o Service Detai&9 vue dtaille de tous les services superviss sur le rseau avec leur tat, l'heure de leur dernire vrification, leur rponse et l'hte sur lequel ils tournent. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 21 SUR 95 o 4ost Detai&9 vue dtaille de tous les htes superviss sur le rseau avec leur tat et l'heure de leur dernire vrification o Status /vervie89 rsum de l'tat des services tris par hte et par groupe. Cette vue nous indique l'tat des htes et des services, ce qui est pratique dans de grands rseaux. o Status Summary9 aperu de ltat des services et des htes tris par groupes o Status :rid9 une vue de ltat des services ainsi que leurs dnominations rassembls par htes et tris par groupes o Status Ma"9 une cartographie du rseau supervis avec l'tat des diffrents htes o Service Pro-&ems9 une vue trs utile car elle visualise tous les problmes sur des services existant sur le rseau o 4ost Pro-&ems9 une liste des htes ayant un problme avec les diffrentes informations o Process In.o9 une feuille technique de Nagios, on y voit l'tat actuel du programme mais galement la possibilit d'y intervenir o Sc2edu&ing ;ueue9 une liste des vrifications que Nagios doit encore excuter Deuximement, les vues de "reporting" crent des rapports sur l'activit passe du rseau, en fonction des donnes collectes par Nagios. Coupl avec MRTG (Multi Router %raffic :rapher), un systme de gestion statistique et d'analyse graphique, nous avons des graphiques facilement interprtables. Il est alors trs facile de dtecter les problmes qui sont apparus sur le rseau. Voici les vues principales disponibles: o %rends9 une vue graphique de l'tat d'un hte ou d'un service dans le temps et des statistiques qui s'y rapportent o vai&a-i&ity9 des statistiques trs compltes sur un hte, un service ou mme un groupe d'htes o &ert 4istory9 un historique des alertes o &ert 4istogram9 un historique des alertes par hte ou par service sous forme de graphique o &ert Summary9 le dtail de l'historique de toutes les alertes o Noti.ications9 le dtail de toutes les notifications envoyes o Event Log9 le dtail de tous les vnements survenus par jour CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 22 SUR 95 !.).2. Su"ervision distante Le but de l'environnement de supervision distante ou rpartie est le dchargement de l'excs de charge cr par les contrles de services du serveur central sur un ou plusieurs serveurs rpartis. La plupart des petites et moyennes entreprises n'ont pas rellement besoin de mettre en uvre cet environnement. Cependant, quand il faut superviser des centaines, voire des milliers d'htes ou services l'aide de Nagios, cela devient important. Le rle d'un serveur rparti, ou local, est le contrle de tous les services dfinis pour un groupe d'htes du rseau. Selon la topographie du rseau, on peut avoir plusieurs groupes en un seul lieu, o chaque groupe est spar par un WAN, un pare-feu, . Pour chaque groupe d'htes, un serveur rparti sur lequel Nagios tourne supervise les services du groupe. Un serveur rparti est gnralement une installation simplifie de Nagios. Il n'y a pas besoin d'une interface Web, d'envoyer des notifications, de faire tourner les scripts de gestionnaires d'vnements ou de faire autre chose que l'excution des contrles de service. Le rle du serveur central est d'couter simplement les rsultats des contrles de services d'un ou de plusieurs serveurs rpartis. Mais il excute galement ses propres contrles. Comme le serveur central obtient des rsultats des contrles de services passifs (raliss par des applications tierces et traits par Nagios) d'un ou de plusieurs serveurs rpartis, il est utilis comme point central pour la logique de supervision: il envoie des notifications, excute les scripts de gestionnaires d'vnements, dtermine l'tat des htes, ... Pour faciliter la communication entre les serveurs Nagios ou bien entre un hte supervis et un serveur Nagios, des petits programmes appels agents de supervision existent. Ils offrent la possibilit de profiter de la puissance offerte par les "plugins". Il en existe deux types. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 23 SUR 95 Ci-dessous, le schma reprsentant le fonctionnement de la supervision centralise par Nagios. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 24 SUR 95 !.).2.1. gent NRPE Le principe de fonctionnement de l'agent NRPE (Nagios Remote Plugin Executor) est simple: les "plugins" sont installs sur l'quipement superviser, compils en fonction de son architecture car c'est elle qui les excute, ainsi que le dmon NRPE faisant office de serveur. Sur Nagios, le "plugin check_nrpe" fait alors office de client NRPE, rcuprant les informations en interrogeant le dmon NRPE sur l'quipement concern. Le "plugin check_nrpe" sur le serveur Nagios initie une connexion vers l'agent NRPE de l'hte cible en lui demandant d'excuter une vrification. L'agent NRPE retourne le rsultat au serveur Nagios. !.).2.2. gent NS1 L'agent NSCA (Nagios Service 1heck cceptor) diffre de l'agent NRPE car la vrification est planifie en local sur l'quipement supervis, excute, puis le rsultat est envoy au serveur Nagios. De mme que pour NRPE, NSCA demande la prsence du "plugin check_ncsa" sur la plate-forme Nagios. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 25 SUR 95 !.,. Insta&&ation L'installation de Nagios n'est pas chose facile, car ce programme a besoin, en plus des "plugins", de satisfaire un certain nombre de dpendances. Certaines d'entre elles ne sont pas obligatoires comme un serveur Web (Apache), une base de donnes ou encore des librairies d'images (libgd 1.6.3 ou plus, libjpeg et libpng). Mais d'autres dpendances sont obligatoires pour un bon fonctionnement de Nagios. Au dpart, nous avons install manuellement Nagios ainsi que ses dpendances, selon un ordre: o Un compilateur C o Un serveur Apache o Un module CGI o Les librairies suivantes: Gd 1.6.3 (carte de statut du rseau et courbes de tendances) Zlib (fichiers PNG) Libpng (fichiers PNG) Jpeg (fichiers JPEG) Freetype 2.x (police) Xpm (fichiers BMP) Ayant eu des problmes avec le paquet JPEG et GD, certains fichiers de configuration nont pas t correctement installs. De ce fait, linstallation a t bloque. Nous avons donc d reformater le serveur, rinstaller Debian et videmment Nagios mais cette fois aid de lutilitaire APT de Debian qui a install pour nous toutes les dpendances ncessaires. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 26 SUR 95 !.<. 1on.iguration !.<.1. Serveur "ac2e Tout comme pour Nagios, linstallation de Apache se fait facilement avec "APT". Nanmoins, il faut le configurer pour quil sadapte Nagios et sa structure. Dans le fichier de configuration, nous ajoutons quelques lignes. Pour ce faire, diffrentes possibilits s'offrent nous. La premire est de modifier le fichier dans le rpertoire d'Apache et la deuxime est de crer un fichier avec les modifications et d'ajouter dans le fichier de configuration de Apache le lien vers ce nouveau fichier. Cette mthode laisse les informations propres Nagios dans son dossier d'installation. Voici les ajouts dans le fichier de configuration de Apache: ScriptAlias /nagios/cgi-bin/ /usr/lib/cgi-bin/nagios/ <Directory "/usr/lib/cgi-bin/nagios"> AllowOverride AuthConfig Options !ecC"# Order allow$deny Allow fro% all </Directory>
Alias /nagios/ /usr/share/nagios/htdocs/ <Directory "/usr/share/nagios/htdocs"> Options &one AllowOverride AuthConfig Order allow$deny Allow fro% all </Directory> Apache permet galement de scuriser un site Web, cela est trs utile pour que seules les personnes autorises puissent avoir accs aux informations de l'entreprise. Le mode le plus utilis pour scuriser un site Web est d'associer un rpertoire un fichier contenant l'identifiant et le mot de passe des utilisateurs. Voici les ajouts dans le fichier de configuration de Apache: ScriptAlias /nagios/cgi-bin /usr/lib/cgi-bin/nagios <DirectoryMatch /usr/lib/cgi-bin/nagios> Options ExecCGI AllowOverride AuthConfig Order Allow,Deny Allow From All AuthName "Nagios Access" AuthType Basic AuthUserFile /etc/nagios/htpasswd.users CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 27 SUR 95 require valid-user </DirectoryMatch> Le fichier contenant les identifiants et les mots de passe utilise la syntaxe "nom_utilisateur:mot_de_passe_crypt". Voici le fichier htpasswd.users: nagiosadmin:6mU7.mzZYqS2M francois:6mU7.mzZYqS2M Grce ce fichier, seuls les utilisateurs inscrits dans le fichier peuvent sauthentifier et se connecter linterface Web de Nagios. !.<.2. Serveur Nagios La configuration de Nagios demande beaucoup plus de temps et n'est pas chose aise. En effet, l'ensemble de la configuration du logiciel s'effectue dans des fichiers textes d'extension ".cfg". Les fichiers de configuration sont dfinis selon le format suivant: define type { attribut1 valeurs attribut2 valeurs ... } Ce mcanisme de dfinition implique qu'aucun espace ne doit tre insr dans les paramtres et leurs valeurs. La cohrence des fichiers de configuration est teste en excutant Nagios avec l'option "-v" et en lui fournissant le fichier de configuration principal: debian:/# /usr/sbin/nagios -v /etc/nagios/nagios.cfg Nagios 1.3 Copyright (c) 1999-2004 Ethan Galstad (nagios@nagios.org) Last Modified: 10-24-2004 License: GPL Reading configuration data... Running pre-flight check on configuration data... Checking services... Checked 83 services. Checking hosts... Checked 23 hosts. Checking host groups... Checked 2 host groups. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 28 SUR 95 Checking contacts... Checked 1 contacts. Checking contact groups... Checked 2 contact groups. Checking service escalations... Checked 0 service escalations. Checking host group escalations... Checked 0 host group escalations. Checking service dependencies... Checked 0 service dependencies. Checking host escalations... Checked 0 host escalations. Checking host dependencies... Checked 1 host dependencies. Checking commands... Checked 111 commands. Checking time periods... Checked 3 time periods. Checking for circular paths between hosts... Checking for circular service execution dependencies... Checking global event handlers... Checking obsessive compulsive service processor command... Checking misc settings... Total Warnings: 0 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check debian:/# Nagios supervise les quipements travers le rseau, ceux-ci sont des serveurs, des quipements rseaux, ou tout autre type de machine relie au rseau. Ces htes sont dtaills dans le fichier "hosts.cfg" et sont regroups dans un ou plusieurs groupes dfinis dans le fichier "hostgroups.cfg", agissant ainsi sur un ensemble d'htes. Viennent ensuite les services, ils correspondent aux services tests par les "plugins". La vrification des services se droule selon des priodes de temps dfinies dans le fichier "timeperiods.cfg". Les contacts prvenir en cas d'alertes sont dfinis dans le fichier "contacts.cfg" et sont eux aussi groups et dfinis dans le fichier "contactgroups.cfg". L'escalade des alertes entre les groupes, en cas de non rponse de l'un d'entre eux, est dfinie dans le fichier "escalations.cfg". Il reste le fichier "checkcommands.cfg" dans lequel sont dclares les commandes destines au lancement de "plugins" et le fichier "misccommands.cfg" dans lequel se nichent les commandes ncessaires l'envoi de mails, de SMS, . Enfin, d'autres fichiers sont galement utiliss tels que "dependencies.cfg" pour dfinir des dpendances entre services, "cgi.cfg" pour la configuration des CGI, "hostextinfo.cfg" pour les infos supplmentaires sur les htes (icnes, coordonnes graphiques sur la carte de statut du rseau, ...) et "serviceextinfo.cfg" qui possde la mme utilit mais pour les services. Lensemble des fichiers de configuration sont dtaills avec des explications et des exemples dans les annexes (Annexe 7). CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 29 SUR 95 !.<.!. Serveur Post.ix Nagios envoie les alertes par diffrents moyens comme le mail, le sms, . Si on souhaite que Nagios envoie des alertes par mail, il est ncessaire d'installer un serveur SMTP. Par dfaut, Debian nen possde pas et nous installons donc Postifx, qui est un Agent de transport de courrier lectronique. Son objectif, la conception, tait de raliser un systme de courrier alternatif Sendmail, qui soit rapide, facile administrer et scuriser tout en tant compatible. Aprs lavoir install avec APT, un systme de configuration pour les paquets Debian propose immdiatement de configurer Postfix, cet utilitaire s'appelle "Debconf". Nous avons choisi la configuration "Internet Site" car la machine sert plusieurs machines clientes et elle a accs Internet de manire permanente. Ensuite, nous ditons le fichier "/etc/postfix/main.cf" pour vrifier ces valeurs: myhostname = debian alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydestination = debian, localhost.localdomain, , localhost relayhost = mynetworks = 127.0.0.0/8 mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all define type CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 30 SUR 95 ). Dve&o""ement de Nagios ).1. na&yse du "ro0et L'analyse du projet consiste se poser la question de savoir ce que nous pouvons et devons superviser. Il y a deux grandes catgories, invitables en informatique, c'est--dire le matriel et les applications. Tout dabord, nous tablissons une liste des composants rseau que nous pouvons superviser sur un rseau et nous la divisons en plusieurs catgories: o Serveurs o Serveurs Web o Sites Web o Imprimantes o Firewalls o Routeurs o Switchs La supervision dune machine implique invitablement la connaissance de ce quelle fait et donc, de ce qui est critique si son rle nest pas effectu. Pour un serveur Web, nous devons superviser le protocole HTTP, pour un serveur de mails, nous devons superviser le protocole SMTP, . Ce qui est supervis sur une machine a bien videmment un lien direct avec son rle sur le rseau. Pour les sites Web, la supervision consiste vrifier si le serveur rpond bien. Une requte propre au protocole HTTP, en l'occurrence une requte "GET", est envoye au serveur. Si la page dindex du site nexiste pas ou si le serveur ne rpond pas, une erreur est dtecte et une alerte au sein de Nagios apparat. Les imprimantes sont soit relies un ordinateur, soit relies directement sur le rseau avec une adresse IP. Dans ce cas, il est possible de contrler la connexion de limprimante au rseau en excutant une commande "PING". Il est galement possible de superviser des imprimantes en capturant les trames SNMP quelles envoient lorsquil manque du papier ou de lencre par exemple. Pour les lments constituant l'architecture du rseau tels que les pare-feux, les routeurs et les "switchs", nous vrifions leur prsence et leur bon fonctionnement par l'utilisation d'une commande "PING". Si l'un d'eux vient faire dfaut, l'quipe de EASI est prvenue le plus rapidement possible car ceci correspond une rupture critique dans le rseau. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 31 SUR 95 Aprs avoir tabli la liste des composants superviser, nous dfinissons la liste de ce qui peut tre supervis sur ces composants. Voici les diffrentes catgories: o Services standard o Rseau o Protocoles TCP/IP & UDP o Services o Mise en place de Nagios o Services spciaux Les services standard sont les services pour lesquels toutes les machines sont supervises, cest--dire que ce sont des services qui ne tiennent pas compte de la caractristique propre de la machine sur le rseau. On peut citer par exemple la charge moyenne du systme, le taux dutilisation du disque dur, lcart de temps avec un serveur de temps, . En ce qui concerne lespace du disque dur, nous avons cr notre propre "plugin" qui vrifie laccroissement du disque. Nous avons list ces diffrents services: o Charge moyenne du systme o Ecart de temps avec un serveur de temps o Espace disque (utilisation) o Espace disque (accroissement) o Nombre de processus o Taux d'utilisation de la mmoire SWAP o Temprature o Utilisation de la mmoire La catgorie "Rseau" reprend lensemble des supervisions purement orientes rseau tel que la vrification dun port en mode UDP, la vrification de la connexion TCP avec un port spcifi, le statut dune interface rseau, . La supervision la plus effectue dans cette catgorie est incontestablement la connexion au rseau, ce qui est bien videmment indispensable pour un serveur. Cest la commande "PING" qui est utilise et qui renvoie des statistiques de connexion. Il est important de noter que quasi toutes les machines possdent au minimum cette vrification. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 32 SUR 95 Voici les vrifications effectues dans la catgorie "Rseau": o Connexion au rseau o Imprimante HP avec carte JetDirect o Port en TCP o Port en UDP o Signal d'un rseau sans fil En ce qui concerne les protocoles TCP/IP et UDP, nous avons tabli une liste des protocoles les plus couramment utiliss et dont le bon fonctionnement est indispensable aux diffrents serveurs: o DHCP o DNS o FTP o HTTP (HTTPS) o IMAP o IRCD o LDAP o NNTP o POP3 o SMTP o SNMP o SSH o . Les services reprennent lensemble des applications tournant sur un serveur. Pour superviser ces services, nous surveillons ltat des ports mais nous vrifions galement, dans le cas dapplications sous Windows, que le service est bien dmarr. Nous supervisons donc ces services: o Citrix o Fax o MRTG o MySQL o NSClient CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 33 SUR 95 o Oracle o Sendmail La catgorie "Mise en place de Nagios" est constitue de deux vrifications fondamentales: la notification du bon fonctionnement du Nagios Local vers le serveur Nagios Central et la vrification de la validit de ses fichiers de configuration. Ce sont donc les deux scripts qui permettent la structure centralise de Nagios. En effet, il faut que le Nagios Central soit certain de la bonne disponibilit des serveurs Nagios Locaux. Pour cela, il faut que ceux-ci se manifestent intervalles rguliers. De mme, la structure centralise implique que ce soit le serveur Nagios Central qui gre les configurations des diffrents serveurs Nagios Locaux. Nous avons donc les deux vrifications suivantes: o Notification de fonctionnement vers NagServ o Vrification de la configuration Enfin, les services spciaux prennent en compte les services plus rares mais qui sont compris dans les standards de Nagios. On peut citer notamment les serveurs Novell, Radius et de licence Flexlm mais galement les quipements sans fil Breezecom. Cette catgorie contient galement les actions possibles en standard telle que lexcution de "plugins" locaux ou lexcution de commandes distance en utilisant SSH. Voici quelques services spciaux superviss par Nagios : o Equipement sans fil Breezecom o Excution de "plugins" locaux o Excution d'une commande en utilisant SSH o Onduleur UPS o Prsence d'une chane dans un fichier log o Rseaux Netware o Serveur de licence Flexlm o Serveur Novell o Serveur Radius o Serveur Unix CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 34 SUR 95 Pour une meilleure comprhension, nous avons cr un tableau reprenant la liste de toutes les vrifications ainsi que la liste des composants rseau propres un client. Ce tableau constitue une fiche que le client remplit afin de dterminer ce quil souhaite que EASI supervise sur son rseau. Cette fiche client est jointe en annexe (Annexe 10). La supervision des protocoles TCP/IP et UDP consiste tester la connexion de lhte sur le port utilis par le protocole, cest pour cela que nous ajoutons les ports par dfaut ct de chaque protocole dans le tableau qui constitue la fiche client. Dans ce tableau, une diffrence est faite entre ce qui est supervis par le Nagios Local et ce qui lest par le Nagios Central. Dans la partie locale, nous supervisons les composants rseau du client, par contre dans la partie centrale, nous supervisons des serveurs ou sites Web appartenant cette mme socit mais sur un autre rseau. Cette mthode permet en cas de problme sur le rseau du client de continuer superviser ces diffrents lments. Supposons par exemple que le serveur Nagios Local dtecte un problme mais qu'il n'ait plus de connexion Internet, il n'avise donc pas le serveur Central et la panne n'est pas dtecte. Enfin, titre dinformation, nous ajoutons galement le systme dexploitation prsent sur chaque machine supervise. Linux et Windows sont bien videmment prsents, mais il y a galement lOS/400 qui est un systme d'exploitation destin aux systmes AS/400 d'IBM. Il est important de noter que ce dernier peut contenir dautres partitions avec dautres systmes dexploitation tels que Windows et Linux CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 35 SUR 95 ).2. Dve&o""ement de ="&ugins= Pour effectuer la supervision, il existe un nombre important de "plugins" standard fournis avec le programme Nagios ou que l'on trouve sur Internet. Dans le cadre de la supervision du rseau d'EASI, nous nous sommes vite rendus compte que nous devrions crire nos propres "plugins". Pour ce faire, il a tout dabord fallu comprendre le fonctionnement dun "plugin" et surtout ce quil envoie comme informations et comment il les envoie Nagios. Cette information, appele "code retour" du "plugin", est compose de 2 paramtres: une chane de caractres qui permet de dcrire le service et un chiffre compris entre 0 et 3 qui dtermine ltat de ce service. o valeur 0 : OK (le service fonctionne correctement) o valeur 1 : Warning (le service fonctionne en mode dgrad) o valeur 2 : Critical (le service ne fonctionne plus) o valeur 3 : Unknown (impossible de dterminer ltat du service) Fin d'un script de "plugin": ... echo "Commentaire du service" exit 0 Les langages que nous avons utiliss pour crire ces "plugins" sont le Perl et le Shell. Ce dernier est fortement utilis dans Nagios pour lancer des commandes, cest pourquoi nous lavons galement utilis. Par contre, ce langage pose quelques problmes pour la manipulation de chanes de caractres. Dans ce cas-l, nous avons alors prfr utiliser Perl. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 36 SUR 95 ).2.1. Envoi de noti.ications au Nagios 1entra& Lorsque le serveur Nagios Local dtecte qu'un hte ou un service ne rpond pas, il le fait savoir au Nagios Central. Nous avons vu plus haut que Nagios peut utiliser un module NSCA mais rien n'est prvu dans Nagios pour l'utiliser directement. Nous passons donc par un script que Nagios appelle et qui envoie le message au Serveur Central. Pour commencer, nous installons NSCA. L'installation de ce module se passe en deux temps, d'abord sur le serveur Nagios Local (Client NSCA) et ensuite sur le serveur Nagios Central (Serveur NSCA) pour que celui-ci reste l'coute et reoive tout moment les messages NSCA qu'on lui envoie. Pour installer le Client NSCA, nous copions le fichier "send_nsca.pl" sur le serveur Nagios Local dans le rpertoire "/usr/sbin". Nous crons un fichier "/etc/nagios/send_nsca.cfg" dans lequel nous mettons les diffrents paramtres ncessaires la configuration du module. Contenu du fichier send-nsca.cfg password=nagios encryption_method=1 "ass8ord9 il s'agit du mot cl/phrase utilis pour crypter les paquets sortants. Il est vident que le mot cl doit tre le mme que celui utilis pour dcrypter le paquet. encry"tion>met2od9 cette option dtermine la mthode utilise par le client pour crypter le paquet qui est envoy au serveur NSCA. La mthode de cryptage ne doit pas tre choisie au hasard, mais est un compromis entre scurit et performance. Une mthode trs scurise consomme beaucoup plus de ressources qu'une mthode rapide qui prsente une plus grande faille de scurit. Voici les mthodes de cryptage les plus connues et supportes par NSCA: o 0 = Aucun cryptage (A viter) o 1 = Simple fonction XOR o 2 = DES o 3 = 3DES Le dtail du fichier de configuration du client NSCA ainsi que toutes les mthodes supportes par NSCA sont jointes aux annexes (Annexe 8). CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 37 SUR 95 Nous choisissons la mthode non scurise XOR (ou exclusif) car elle apporte quelques avantages dans notre cas. Les informations que nous envoyons par NSCA ne contiennent pas de donnes essentielles, il n'est donc pas utile de les crypter de faon complexe. Par contre, nous voulons conomiser les ressources du systme et cette mthode en consomme trs peu et est donc trs rapide. Remar5ue9 pour des questions de scurit, nous faisons trs attention au droit que nous donnons ce fichier car il contient un mot de passe, nous ne le laissons donc pas accessible tous les utilisateurs. L'installation du Serveur NSCA s'effectue avec l'utilitaire APT de Debian. Nous devons galement diter le fichier "/etc/inetd.conf" pour y ajouter cette ligne. 5667 stream tcp nowait nagios /usr/sbin/tcpd /usr/sbin/nsca -c /etc/nsca.cfg --inetd Il est galement important d'ajouter les adresses IP des htes qui vont envoyer les notifications dans le fichier "/etc/nsca.cfg" comme montr ci- dessous: server_port=5667 allowed_hosts=127.0.0.1,172.22.3.73 Maintenant que le serveur et le client sont installs, nous nous intressons la faon d'envoyer des messages. Avant de dvelopper ce script, nous essayons d'envoyer des messages en mode console. Lorsque le serveur NSCA reoit un message, il le dcrypte et le note dans le journal de Debian. Cet historique s'crit dans "/var/log/messages". Grce la commande "tail -f", il affiche la fin du fichier ainsi que les nouvelles informations inscrites. Sur le client NSCA, nous lanons la commande pour l'envoi d'un message. Voici le test que nous avons effectu: NagEASI:/# /usr/sbin/send_nsca -H 194.78.71.30 -c /etc/nagios/send_nsca.cfg -to 400 Test Update 0 info Cette ligne de commande correspond la syntaxe suivante: NagEASI:/# /usr/sbin/send_nsca -H Adresse_IP -c /etc/nagios/send_nsca.cfg -to 400 [ENTER] Nom_de_l_hote [TAB] Nom_du_service [TAB] Statut_du_service [TAB] Commentaire | [ENTER] CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 38 SUR 95 ?49 option obligatoire car elle prcise l'adresse du serveur NSCA. ?c9 paramtre obligatoire car il indique l'emplacement du fichier de configuration pour l'envoi de donnes au serveur. ?to9 option non obligatoire mais utile car elle allonge le "time out" du client pour avoir le temps de taper le message en entier. Aprs l'envoi de cette commande, ce message apparat dans l'historique de Debian supportant le Serveur NSCA. ServNag:/# tail -f /var/log/messages May 17 13:59:56 ServNag nagios: EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;EASI-ASEASI;CheckHTTP;0;Connection refused by host May 17 14:00:06 ServNag nagios: Warning: Message queue contained results for service 'CheckHTTP' on host 'EASI-ASEASI'. The service could not be found! Maintenant que le client NSCA communique bien avec le serveur NSCA, nous crivons le script qui enverra un message au serveur sans prciser l'adresse et l'emplacement du fichier de configuration. Nous rdigeons ce script en Linux Shell pour la facilit de programmation et pour la ressemblance avec les commandes du mode console. Voici le script Send-ServNag /usr/bin/printf "%b" "$1\t$2\t$3\t$4\n" | /usr/sbin/send_nsca -H 217.71.120.199 -c /etc/nagios/send_nsca.cfg Le programme "send_nsca" ne prend pas les informations du message dans la ligne de commande mais il lit les caractres entrs au clavier aprs le lancement de la commande. Nous crons donc un tuyau ("pipe") dans notre script pour que celui-ci envoie le message aprs avoir envoy la commande. Pour excuter le script, nous tapons maintenant: NagEASI:/# ./Send-ServNag test update 0 info Ce script est utilis par Nagios pour envoyer au Serveur Central des informations sur un service, nous crons galement un second script pour envoyer des informations sur un hte. Celui-ci est fort ressemblant au prcdent. Nous avons donc jug inintressant de tout rexpliquer. Ce script s'appelle "Send-Host-ServNag" et voici son code: /usr/bin/printf "%b" "$1\t$2\t$3\n" | /usr/sbin/send_nsca -H 217.71.120.199 -c /etc/nagios/send_nsca.cfg CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 39 SUR 95 ).2.2. +a&idit des .ic2iers de con.iguration La configuration de Nagios demeure dans une dizaine de fichiers texte stocks localement dans le rpertoire "/etc/nagios/". Ces fichiers proviennent du serveur Nagios Central et sont rgulirement remis jour. Cette mise jour n'est pas faite intervalles constants, elle est effectue lorsque des changements dans les fichiers de configuration se produisent. Le Nagios Local excute un script intervalles constants qui compare les fichiers de configuration avec ceux du serveur Nagios Central. Pour des questions de scurit que nous avons dj voques, nous excutons cette vrification grce un canal SSH authentifi avec une paire de cl publique et prive (voir chapitre 4.4). Il est galement important de comprendre que le rle du serveur Nagios Local est d'ouvrir la connexion car celui-ci est gnralement derrire un pare-feu. Ce matriel appartient aux socits extrieures EASI et ils ne veulent pas ncessairement ouvrir un port entrant car ceci ouvre une brche dans la scurit de leur rseau. Par contre, si le pare-feu ouvre un port sortant, cela ne gne en rien la scurit du rseau. Contenu du fichier "Check-Config". cd /etc/nagios do="0" for i in *.cfg do varmonth=`ls -l $i |tr -s ' ' | cut -d ' ' -f "6"` varday=`ls -l $i |tr -s ' ' | cut -d ' ' -f "7"` varclock=`ls -l $i |tr -s ' ' | cut -d ' ' -f "8"` vardistmonth=`ssh nagios@217.71.120.199 ls -l /NagConfig/$1/$i |tr -s ' ' | cut -d ' ' -f "6"` vardistday=`ssh nagios@217.71.120.199 ls -l /NagConfig/$1/$i |tr -s ' ' | CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 40 SUR 95 cut -d ' ' -f "7"` vardistclock=`ssh nagios@217.71.120.199 ls -l /NagConfig/$1/$i |tr -s ' ' | cut -d ' ' -f "8"` if [ $varmonth != $vardistmonth -o $varday != $vardistday -o ${varclock:0:4} != ${vardistclock:0:4} ] then do="1" fi done if [ $do = "1" ] then /etc/nagios/script/Send-ServNag $1 Check-Config 1 "Fichiers differents sur ServNag" exit 1 else /etc/nagios/script/Send-ServNag $1 Check-Config 0 "Fichiers idem sur ServNag" exit 0 Fi Pour chaque fichier d'extension "cfg" contenu dans le rpertoire "/etc/nagios" de la machine cliente, le script compare la date et l'heure de modification du fichier avec son homologue sur le serveur Nagios Central. Si ces valeurs sont diffrentes, le script envoie d'abord un message prvenant que les fichiers ne sont plus les mmes, ce qui dclenche au sein de Nagios un "Event Handler" qui excute un autre "plugin" dont le but est de mettre ces fichiers jour. Si ces valeurs sont les mmes, le script renvoie une rponse positive et Nagios l'indiquera dans son interface Web. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 41 SUR 95 ).2.!. Mise @ 0our des .ic2iers de con.iguration Si le script "Check-Config" prvient le serveur Nagios Local que les fichiers sont diffrents, celui-ci lancera le script "Update-Config" avec comme paramtre le nom de la machine Nagios Local. Ce paramtre permet au script de connatre le chemin exact des nouveaux fichiers de configuration sur le Serveur Nagios Central (/NagConfig/$HOSTNAME$). Ce script ne se contente videmment pas de copier les fichiers. Avant d'craser l'ancienne version, il vrifie la cohrence des nouveaux fichiers. Si les fichiers semblent corrects, le script redmarre le programme Nagios. Contenu du fichier "Update-Config". # Cration d'un dossier avec la date et heure test=$(date) now=$(date +%d%m%y) now=$now-${test:11:9} cd /etc/nagios/Backup mkdir $now # Copie des fichiers de configuration dans le dossier cp /etc/nagios/*.cfg /etc/nagios/Backup/$now # Copie des fichiers de configuration depuis le ServNag cd /etc/nagios for i in *.cfg do scp -q nagios@217.71.120.19:/NagConfig/NagEASI/$i /etc/nagios/ ssh nagios@217.71.120.19 touch /NagConfig/NagEASI/$i done # Test de la configuration avec envoi d'un rapport /usr/sbin/nagios -v /etc/nagios/nagios.cfg > /etc/nagios/temp scp -q /etc/nagios/temp nagios@217.71.120.19:/NagConfig/NagEASI/rap-$now test=$(grep "Total Errors:" /etc/nagios/temp) test=${test:13} # Test d'erreur if [ $test != "0" ] then # Erreur de configuration cd /etc/nagios/Backup/$now/ cp *.cfg /etc/nagios /etc/nagios/script/Send-ServNag $1 UpConf 2 "Erreur de Config - Reprise de l'ancienne" else # Remise en route de Nagios aprs changement de configuration /etc/nagios/script/Send-ServNag $1 UpConf 0 "Config OK - Redemarage Nagios - $now" /etc/init.d/nagios reload fi La premire chose que le script fait, c'est de crer un dossier de sauvegarde avec la date et l'heure et d'y copier les fichiers de configuration. Cette sauvegarde permet, en cas de problme, de revenir une version prcdente CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 42 SUR 95 et utilisable des fichiers de configuration. Le script lance ensuite une connexion SSH entre le serveur Nagios Local et le serveur Nagios Central pour tlcharger les nouveaux fichiers de configuration. Ds que les fichiers sont tlchargs, le script vrifie leur cohrence grce au paramtre "-v" lors de la commande de dmarrage de Nagios. NagEASI:/# /usr/sbin/nagios -v /etc/nagios/nagios.cfg Nagios 1.3 Copyright (c) 1999-2004 Ethan Galstad (nagios@nagios.org) Last Modified: 10-24-2004 License: GPL Reading configuration data... Running pre-flight check on configuration data... Checking services... Checked 83 services. Checking hosts... Checked 23 hosts. Checking host groups... Checked 2 host groups. Checking contacts... Checked 1 contacts. Checking contact groups... Checked 2 contact groups. Checking service escalations... Checked 0 service escalations. Checking host group escalations... Checked 0 host group escalations. Checking service dependencies... Checked 0 service dependencies. Checking host escalations... Checked 0 host escalations. Checking host dependencies... Checked 1 host dependencies. Checking commands... Checked 111 commands. Checking time periods... Checked 3 time periods. Checking for circular paths between hosts... Checking for circular service execution dependencies... Checking global event handlers... Checking obsessive compulsive service processor command... Checking misc settings... Total Warnings: 0 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check NagEASI:/# Le script rcupre le nombre total d'erreurs dans la rponse fournie par Nagios. Si ce nombre est bien gal 0, le script redmarre Nagios avec les nouveaux fichiers de configuration. Si ce n'est pas le cas, le script copie les fichiers qu'il a sauvegards, redmarre le programme Nagios et envoie un message d'erreur ainsi que le rapport du test au serveur Nagios Central. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 43 SUR 95 ).2.). +ri.ication de &*accroissement d*un dis5ue Un des "plugins" compris dans Nagios donne des informations sur le disque dur d'une machine. Il permet de connatre l'espace total, l'espace utilis et aussi l'espace libre. Cette information est trs importante pour la supervision d'une machine mais n'est pas suffisante pour la prvention de problmes. En plus de connatre l'espace libre sur un disque dur, il est trs utile de dtecter un accroissement anormal de donnes sur ce disque dur. Nous dveloppons donc un "plugin" qui dtecte si le disque dur se remplit anormalement. Ce "plugin" est complmentaire de celui qui vrifie l'espace libre sur un disque, il n'est donc pas possible d'utiliser ce "plugin" sans utiliser le "check_disk" de Nagios. Ce nouveau "plugin" se droule en deux phases. La premire partie du script retire les informations du disque dur supervis dans le fichier des statuts de Nagios qui se localise dans "/var/log/nagios/status.log". [1118402868] SERVICE;Chung;CheckHDD-C;OK;1/3;HARD;1118402719;1118403019; ACTIVE;1;0;0;1118385033;0;OK;88642;21290;0;232560;0;0;1;0;0;0;0;0.00;0;1; 1;1;c: - total: 19.53 Gb - used: 9.83 Gb (50%) - free 9.71 Gb (50%) Ce fichier n'est pas trs comprhensible mais il contient les informations que nous avons besoin comme la taille totale du disque dur, l'espace utilis et le pourcentage utilis. Premire partie du fichier "Check-VarHDD" totalsize=`grep $1 /var/log/nagios/status.log | grep $2 | cut -d ' ' -f "5"` useP=`grep $1 /var/log/nagios/status.log | grep $2 | cut -d ' ' -f "11" | cut -c2,3` usesize=`grep $1 /var/log/nagios/status.log | grep $2 | cut -d ' ' -f "9"` if [ "$useP" != "" ] then echo "$1 - $2 - $totalsize - $usesize - $useP" >> /etc/nagios/script/HDD.log else echo "Les donnes ne sont pas lisible" exit 3 Fi CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 44 SUR 95 Pour rcuprer ces informations, nous combinons une fonction "grep". Cette fonction isole la ligne de texte comprenant le nom du service qui vrifie le disque dur et le nom de l'hte. Ensuite, avec une fonction "cut", nous sparons les diffrentes informations qui nous sont utiles. Avant d'inscrire ces informations dans un fichier log que nous avons cr, nous vrifions que ces donnes sont cohrentes par une boucle conditionnelle "IF". Si les donnes ne correspondent pas ce que l'on attend, nous arrtons le script et nous renvoyons une erreur pour que Nagios l'indique bien sur son interface Web. Notre fichier log "/etc/nagios/script/HDD.log" utilise la syntaxe suivante "nom_hte - nom_service - espace_total - espace_utilis - pourcentage_utilis" ... Danube - CheckHDD-C - 3.91 - 2.94 - 75 Chung - CheckHDD-C - 19.53 - 9.83 - 50 Danube - CheckHDD-C - 3.91 - 2.94 - 75 Chung - CheckHDD-C - 19.53 - 9.83 - 50 C'est partir de ce point que commence rellement le script de vrification. Nous rcuprons les deux dernires valeurs correspondant au service que nous vrifions. Pour cette recherche, nous utilisons la commande "tail" qui lit la fin d'un fichier et la commande "grep" que nous avons utilis prcdemment. Une fois les pourcentages d'occupation du disque dur rcuprs diffrents intervalles de temps, nous vrifions qu'ils contiennent bien une valeur. Une simple soustraction nous donnera l'accroissement de l'espace occup sur un intervalle de temps dfini par Nagios. Si l'accroissement est suprieur la valeur critique fournie en paramtre ou si il est comprise entre la valeur d'attention et la valeur critique, le script renvoie un message prvenant de l'ventualit d'un problme et termine le script avec la valeur de retour adquate. Par contre, si la valeur de l'accroissement est infrieure la valeur d'attention, le script renvoie un message pour prvenir qu'il n'y a pas de problmes et termine le script avec "0" comme valeur de retour. Nagios interprte ensuite ces rsultats pour l'afficher dans son interface Web. Voici la deuxime partie du fichier "Check-VarHDD" nb=`tail -n 50 /etc/nagios/script/HDD.log | grep $1 | grep -c $2` P=`tail -n 50 /etc/nagios/script/HDD.log | grep $1 | grep $2 | cut -d ' ' -f "9"` i=`expr $nb - 1` i=`expr $i*3` j=`expr $nb - 2` j=`expr $j*3` x=${P:$i:2} y=${P:$j:2} if [ "$x" != "" -a "$y" != "" ] CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 45 SUR 95 then u=`expr $x - $y` if [ "$u" -gt $4 ] then echo "Accroissement suprieur a $4 %" exit 2 else if [ "$u" -gt $3 ] then echo "Accroissement entre $3 % et $4 %" exit 1 else echo "Accroissement infrieur a $3 %" exit 0 fi fi else echo "Pas assez de valeur" exit 3 Fi A propos de ce script, n'oublions pas de donner accs au fichier log que nous avons cr pour l'utilisateur de Nagios, sinon celui-ci ne saura ni crire ni lire le fichier et il renverra des valeurs vides. Il est aussi intressant d'ajouter que l'intervalle de temps entre deux relevs de valeurs dpend entirement de Nagios car c'est lui qui lance le script en suivant son fichier de configuration. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 46 SUR 95 ).2.,. Pertinence des noti.ications L'absence de messages du serveur Nagios Local a deux significations: la premire est qu'il n'y a aucun problme dtect par le serveur Nagios Local et donc aucune alerte n'est envoye. La seconde signifie que le serveur Nagios Local n'assure plus son rle, soit parce qu'il ne rpond plus, soit parce qu'il y a un problme sur le rseau. Dans ce cas, il est trs important de prvenir le surveillant de ce disfonctionnement. Contrairement au clbre dicton "pas de nouvelles, bonnes nouvelles", une autre solution pour vrifier la pertinence de ces rsultats s'impose. Dans les standards de Nagios, il existe un "plugin" appel "check_nagios" utilis pour vrifier si les autres serveurs Nagios sont bien oprationnels. Ce "plugin" est lanc depuis le Serveur Nagios Central et interroge le serveur Nagios Local. Si les deux serveurs sont spars par un pare-feu, nous devons changer les configurations de ceux-ci, sinon la connexion sera refuse. En d'autres termes, le client doit ouvrir une porte entrante sur son pare-feu, ce qu'il risque de refuser pour des questions videntes de scurit. Nous devons donc trouver une autre solution. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 47 SUR 95 L'ide est de forcer le serveur Nagios Local envoyer une notification de bon fonctionnement au serveur Nagios Central, intervalles rguliers. Nous dcidons d'envoyer cette notification toutes les cinq minutes par un petit script SHELL qui va utiliser le client NSCA pour communiquer avec le serveur Nagios Central travers Internet. Ce script est dtaill plus haut dans ce travail. Sur le serveur Nagios Central, nous vrifions juste l'intervalle de temps entre le dernier message reu et l'heure actuelle. Si ce laps de temps est suprieur dix minutes, alors une notification est envoye au travers du client NSCA pour avertir le serveur Nagios Central du problme. Celui-ci suivra la procdure habituelle pour prvenir la personne responsable. Nous dveloppons ce script en PERL, car ce langage offre une facilit de maniement des chanes de caractres et de lecture dans les fichiers. Ce script se droule en deux parties, la premire lit le fichier "/etc/log/nagios/nagios.log" et regarde l'heure de la dernire notification du serveur Nagios Local. La deuxime partie calcule la diffrence de temps entre cette dernire notification et l'heure actuelle. Si elle est suprieure dix minutes, un message d'alerte est envoy au serveur Nagios Central via le client et serveur NSCA. Ds que le serveur Nagios Central reoit ce rapport d'erreur, il envoie un mail la personne concerne. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 48 SUR 95 Voici le code du script "Check-Notif". open(F, '/var/log/nagios/nagios.log') || die "Problme l\'ouverture : $!"; $i = 0; $searchhost="debian"; $searchservice="update"; $timestamp = 0; while($ligne = <F>) { $temp=substr($ligne,(index($ligne,";")+1)); $host=substr($temp,0,(index($temp,";"))); $temp=substr($temp,(index($temp,";")+1)); $service=substr($temp,0,(index($temp,";"))); $temp=substr($temp,(index($temp,";")+1)); $status=substr($temp,0,(index($temp,";"))); $com=substr($temp,(index($temp,";")+1)); if ($searchhost eq $host && $searchservice eq $service) { if ($timestamp < substr($ligne,1,10)) { $timestamp = substr($ligne,1,10); } } } close F || die "Problme la fermeture : $!"; $diff = time - $timestamp; if ($diff > 10) { print "Erreur"; open(CON, "| /usr/sbin/send_nsca -H 172.22.3.17 -c /etc/nagios/send_nsca.cfg"); $li= "debian\tupdate\t1\ttestfin\n"; print CON $li; close CON; } CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 49 SUR 95 ).!. Modu&e NS1&ient Nagios est initialement conu pour un milieu Linux, il a donc un "plugin" qui permet d'excuter n'importe quelle commande distance via une connexion SSH. En ce qui concerne Windows, rien ne semble tre prvu par dfaut. Indpendamment du systme dexploitation, il est possible deffectuer des supervisions orientes rseau. Ces supervisions ne font pas intervenir directement le systme d'exploitation. Par contre, pour superviser des informations propres au matriel, nous devons nous adresser au systme d'exploitation. Nous diffrencions donc le monde Linux et le monde Windows. Il existe deux possibilits pour superviser une machine Windows: soit utiliser le protocole SNMP, soit utiliser un module qui permet de vrifier des services standard de Windows. La premire solution travaille avec le SNMP mais comme nous l'avons dj dit prcdemment, Nagios peut travailler avec le SNMP mais n'a pas t dvelopp sur ce systme. En plus, nous devons installer sur les machines superviser une srie d'outils comme le SNMP, la base de donnes MIB, . Cette mthode est donc trs complexe. L'autre mthode, propre Nagios, utilise un module appel "NSClient" qui supervise des serveurs NT. Ce module inclut un service qui tourne sur la machine et un "plugin" qui s'excute partir du serveur Nagios Local. Le module NSClient supervise: o La charge CPU o Lutilisation de lespace disque o Le temps de fonctionnement o Ltat des services o Ltat des processus o Lutilisation de la mmoire Pour ce qui est de l'installation de ce module, nous l'avons expliqu en dtail dans une procdure mise disposition des employs de EASI. Voir chapitre 4.10 pour plus d'informations ce sujet. Le dtail des commandes pour l'utilisation de ce module se trouve dans les annexes (Annexe 9) CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 50 SUR 95 ).). Scurisation du trans.ert d*in.ormations Pour passer des informations entre le serveur Nagios Local et Central, il faut passer par Internet. Ce passage nest pas scuris, cest pour cela que nous utilisons le protocole SSH. Celui-ci demande par dfaut un mot de passe lors du passage des informations entre les 2 serveurs. Ceci est videmment impossible puisque la plupart de ces passages sont automatiques. De plus, il est impensable d'imaginer une personne taper le mot de passe chaque connexion SSH. La solution idale utilise le principe des cls publiques et prives. La cl publique est installe sur le serveur Nagios Central tandis que la cl prive est installe sur le serveur Nagios Local. Pratiquement, le serveur Nagios central possdera les cls publiques de tous les serveurs Nagios Locaux. La plupart des serveurs SSH utilise la version 2 du protocole. La version 1 est trop vulnrable, elle utilise un cryptage RSA1 (Rivest Shamir dleman) tandis que la version 2 utilise le cryptage RSA et DSA (Distributed System rchitecture). Nous utilisons ce protocole pour transfrer les fichiers de configuration sur le Web car ces fichiers contiennent toute la topologie du rseau de l'entreprise et une attention toute particulire est apporte pour que ces fichiers ne soient pas intercepts. Nous choisissons donc le SSH version 2. Nous configurons d'abord le serveur Nagios Local, car c'est lui qui cre la paire de cls SSH (ensemble de la cl publique et de la cl prive). NagEASI:/# ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/root/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_dsa Your public key has been saved in /root/.ssh/id_dsa.pub The key fingerprint is: 0b:0b:54:f2:75:23:dc:05:10:81:90:95:ba:1f:ca:8b nagios@NagEASI debian:/# Cette opration cre deux fichiers dans "/root/.ssh": -rw------- 1 root root 668 Jun 9 13:08 id_dsa -rw-r--r-- 1 root root 601 Jun 9 13:08 id_dsa.pub Maintenant que les cls sont cres, nous transmettons au serveur Central la cl publique. Le fichier nomm "id_dsa.pub" est la cl publique, il s'ajoute la fin du fichier "authorized_keys" qui se retrouve dans le rpertoire "/root/.ssh" sur le serveur Central. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 51 SUR 95 ServNag:/# cd /root/.ssh ServNag:/# scp root@NagEASI:/root/.ssh/id_dsa.pub /root/.ssh/ Password: ******** ServNag:/# cat id_dsa.pub >> authorized_keys ServNag:/# rm id_dsa.pub Pour tester le bon fonctionnement, nous tapons la ligne de commande suivante sur le serveur Nagios Local en tant connect comme utilisateur "nagios". NagEASI:/# ssh -l nagios ServNag Last login: Thu Jun 9 08:46:49 2005 from 172.22.3.75 NagEASI:/# _ Si aucun mot de passe nest demand, c'est que tout fonctionne correctement. Dans le cas contraire, nous vrifions la configuration de sshd: le fichier "/etc/ssh/sshd_config" doit contenir les paramtres suivants: RSAAuthentication yes PubkeyAuthentication yes CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 52 SUR 95 ).,. Mode mu&ti?uti&isateurs Aprs avoir install le serveur Nagios Central sur le rseau DMZ de chez EASI et un serveur Nagios Local chez chaque client, lide est de permettre ceux-ci de visualiser ltat de leur infrastructure informatique partir du serveur Nagios Central. Les serveurs Nagios Locaux ne permettent pas de visualiser localement ltat du rseau car ils n'excutent que des "plugins" et envoient les rsultats au serveur Nagios Central. Le seul moyen pour un client davoir un aperu de ltat de son rseau est de consulter le serveur Nagios Central, ce qui rejoint le principe de supervision centralise. Pour des raisons de scurit, un client a accs sa propre infrastructure informatique et rien que la sienne. De mme, EASI, de son ct, voit toutes les infrastructures distantes. Plusieurs solutions s'offrent nous. La premire est de modifier le fichier en CGI qui affiche ltat des htes et des services ("status.cgi") en lui ajoutant des boucles conditionnelles afin de restreindre laccs aux informations en fonction de lutilisateur. Ce fichier est crit en C et compil, nous avons donc recherch le code source. Une fois trouv, nous l'avons compil avec :11 (:NU 1ompiler 1ollection), livr en standard sur la trs grande majorit des systmes d'exploitation libres. Cette technique sest avre fastidieuse car nous avons eu un trs grand nombre derreurs la compilation, majoritairement dues aux fichiers den-tte (dextension .h) et aux mauvais chemins daccs vers les fichiers de configuration. Aprs de longues recherches sur Internet, car ce problme ne semble pas tre dactualit chez les utilisateurs de Nagios, la solution s'est avre tre dans la configuration de Nagios. Si lon prend comme exemple un client nomm Franois qui n'a accs qu une certaine partie de la supervision du rseau, nous le dclarons d'abord dans le fichier "/etc/nagios/htpasswd.users" avec son nom dutilisateur et son mot de passe qui y est crypt. Voici la ligne que lon retrouve dans ce fichier avec la syntaxe "nom_utilisateur: mot_de_passe_crypt". francois:6mU7.mzZYqS2M CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 53 SUR 95 Grce cette ligne, cet utilisateur peut sauthentifier et se connecter linterface Web de Nagios. Nous le dfinissons maintenant en tant que contact dans le fichier "contacts.cfg" afin quil soit associ ses htes et services. Nous y ajoutons donc les lignes suivantes: define contact{ contact_name francois alias Utilisateur test service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,u,r service_notification_commands notify-by-email host_notification_commands host-notify-by-email email f.chung@easi.be } Ce contact a besoin de faire partie dun groupe car les htes et services sont eux-mmes associs des groupes. Pour continuer notre exemple, lutilisateur Franois est plac dans le groupe appel EASI. Nous lajoutons dans le fichier "contactgroups.cfg" de la manire suivante: define contactgroup{ contactgroup_name EASI alias EASI USERS members francois } Nous dfinissons ensuite les groupes qui ont accs un certain groupe d'htes. Cette opration se droule dans le fichier "hostgroups.cfg". Aprs avoir spcifi un nom de groupe dhtes, nous dclarons quels seront les groupes de contacts et les htes qui en font partie. Ainsi, dans cet exemple, les groupes "admin" et "EASI" visualisent seulement ltat des pare-feux, du routeur et dune imprimante chez EASI. Nous redmarrons ensuite Nagios pour rendre les modifications effectives. define hostgroup{ hostgroup_name EASI-Device alias Groupe des devices EASI contact_groups admin,EASI members FWzaventem,FWliege,FWluxembourg,RtEASI,IBM-InfoPrint } CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 54 SUR 95 Ainsi, lutilisateur Franois a maintenant bien accs linterface Web de Nagios mais son accs aux rsultats de la supervision des htes et services est restreint. Il ne peut consulter que les htes lists dans le groupe dont il est membre. Pourtant, Franois sait toujours aller changer quelques lments de la configuration de Nagios car cest dans ses droits par dfaut. Une solution propose par la documentation officielle de Nagios est de supprimer le fichier de configuration "cmd.cgi", fichier qui permet justement de changer des lments de la configuration de Nagios. De la sorte, plus personne ne peut effectuer des modifications, mme EASI. Donc, ce n'est pas une bonne solution. Alors, nous dplaons le fichier de configuration "/usr/lib/cgi-bin/nagios /cmd.cgi" dans un rpertoire que nous protgeons par un fichier "htpasswd.users" qui se nomme "/usr/lib/cgi-bin/command/cmd.cgi ". Voici les lignes ajouter dans le fichier "/etc/nagios/apache.conf": ScriptAlias /nagios/cmd /usr/lib/cgi-bin/command <DirectoryMatch /usr/lib/cgi-bin/command> Options ExecCGI AllowOverride AuthConfig Order Allow,Deny Allow From All AuthName "Nagios Access" AuthType Basic AuthUserFile /etc/nagios/htpasswd2.users require valid-user </DirectoryMatch> A partir de maintenant, l'utilisateur Nagiosadmin a accs tout car il reprsente un employ de chez EASI tandis que l'utilisateur Franois, qui reprsente un client, ne peut changer la configuration des services et htes mais a toujours le droit de voir l'tat de son infrastructure rseau. Du ct du rpertoire o se trouvait le fichier "cmd.cgi", nous avons remplac ce dernier par un fichier du mme nom et dont le but est de rediriger la page vers le dossier protg. De nouveau, notre premire ide fut de lcrire en C, mais ce langage ne permet pas aisment de traiter les variables reues travers lURL via la mthode GET. Cest pourquoi nous choisissons le langage PERL, beaucoup plus souple car cest un langage interprt qui gre facilement ces variables. Malgr cela, nous avons encore quelques problmes dus des droits daccs au fichier "cmd.cgi". Tout dabord, il a fallu changer le propritaire du fichier via la commande "chown" (voir Annexe 6). En effet, par dfaut, il ny a que le super-utilisateur "root" qui a le droit de lecture sur ce fichier. Nous dclarons donc Nagios comme tant le propritaire de ce fichier. ServNag:/usr/lib/cgi-bin/nagios# chown nagios cmd.cgi CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 55 SUR 95 Ensuite, nous modifions les droits daccs ce fichier par la commande "chmod" (voir Annexe 5). Nous ajoutons (paramtre +) le droit tout le monde (paramtre a, pour "all") de lire (paramtre r, pour "read") et excuter (paramtre x, pour "execute") ce fichier. ServNag:/usr/lib/cgi-bin/nagios# chmod a+rx cmd.cgi Et voici le script en PERL contenu dans ce fichier et qui redirige la page vers le rpertoire protg contenant le fichier "cmd.cgi" initial: #!/usr/bin/perl -w use strict; use CGI; my $r = new CGI; my $type_commande = $r->param('cmd_typ'); my $hote = $r->param('host'); my $serv = $r->param('service'); print $r->redirect(- uri=>"../cmd/cmd.cgi?cmd_typ=$type_commande&host=$hote&service=$serv"); CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 56 SUR 95 ).<. ut2enti.ication "ar LDP A ce stade, le mode multi-utilisateurs de Nagios fonctionne, il distingue diffrents utilisateurs et affiche les informations auxquelles ceux-ci ont accs. Le but de l'authentification par LDAP est de possder deux niveaux de scurit. Un premier niveau pour les clients de EASI qui visualise l'infrastructure rseau, les services superviss et leurs statuts. Un deuxime niveau de scurit pour les personnes travaillant chez EASI et qui donne en plus un accs aux commandes de Nagios. EASI offre dj un service similaire qui permet aux clients de se connecter au site Extranet de la socit. Les informations requises pour cette connexion sont stockes dans un annuaire Domino. L'ide est que Nagios utilise ce mme annuaire pour que les clients et employs d'EASI utilisent les mmes identifiants et mots de passe. Depuis Domino, il est facile de crer un annuaire LDAP qui nous servirait de base commune aux deux services. L'avantage de cette mthode rside dans le fait que si un utilisateur change son mot de passe sur l'Extranet de EASI, il en est de mme pour son mot de passe Nagios. Un annuaire LDP est un annuaire gr par lintermdiaire du protocole du mme nom (Lightweight Directory ccess Protocol) et qui permet la gestion dannuaires disponibles sur le rseau. Par dfaut, les utilisateurs qui ont accs l'interface Web de Nagios doivent avoir leur identifiant et mot de passe dans le fichier "/etc/nagios/htpasswd.users" qui est prcis dans le fichier de configuration de Apache. nagiosadmin:6mU7.mzZYqS2M francois:6mU7.mzZYqS2M Concrtement, il faut donc relier les droits daccs dApache non plus en fonction dun fichier "htpasswd.users" mais en fonction de lannuaire LDAP, vu que tous les clients de EASI y sont rpertoris. L'ide est de donner accs l'interface Web de Nagios tous ceux qui s'affichent dans cet annuaire. Cela ne veut pas dire que tous les clients de EASI voient les informations du rseau car c'est quand mme Nagios qui dcide qui voit tel hte ou tel service. Il ne faut pas oublier non plus que les employs de EASI ont un accs au dossier contenant le fichier "cmd.cgi", celui-ci intervient sur les paramtres de Nagios. Comme le protocole LDAP utilise une arborescence dans les contacts constitus de groupe, il suffit de restreindre laccs au rpertoire contenant le fichier "cmd.cgi" aux membres du groupe EASI. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 57 SUR 95 Pratiquement, la mise en place de cette infrastructure est difficile et nous avons pass beaucoup de temps la comprendre et la tester. La complexit du protocole et larchitecture de lannuaire LDAP en ont clairement t la cause. Pour mieux comprendre cette architecture, nous avons tlcharg un client LDAP sur Internet, appel "LDAP Browser", pour parcourir lannuaire et lanalyser. Pour interroger celui-ci, nous utilisons le module "ldapsearch" fourni avec le logiciel "OpenLDAP", qui est une implmentation Open Source de lannuaire LDAP. Ce programme interroge donc cet annuaire par le biais de requtes dont voici la syntaxe: ldapsearch -h hostna%e -b "baseD&" ' options ( "filter" ' attribute&a%e ))) ( Lattribut "-h" spcifie le nom du serveur sur lequel tourne lannuaire LDAP, que ce soit par le nom de domaine ou par son IP. Lattribut "-b" spcifie la base de l'annuaire appel "Distinguished Name" (DN) dont le rle est de situer trs exactement lendroit o se trouve le contact dans cet arborescence. On affine galement cette recherche avec des options, tels que ltendue de la recherche et/ou un filtre. Voici ci-dessous un exemple de commande envoye lannuaire. Le paramtre "1ommon Name" (CN) correspond au nom du groupe dans lequel on recherche le contact et lattribut "/rganization" (O) correspond au nom de lorganisation laquelle appartient le groupe. Le rsultat de cette commande nous donne les dtails du groupe NAGIOS. ldapsearch -h *+,),,)*)- -b "C&.&A"#OS$ O.AS# " Ces essais accomplis, nous comprenons quels paramtres nous fournirons l'annuaire pour atteindre les contacts dans cette arborescence complexe. A partir de l, nous cherchons comment le lier avec Apache, qui matrise linterface Web de Nagios et lannuaire LDAP au niveau de lauthentification. Aprs quelques recherches, nous trouvons un module qui excute le lien et dont le nom est "auth_ldap". Aprs le tlchargement, nous le copions dans le rpertoire des modules que Apache lance au dmarrage, c'est--dire dans le rpertoire "/etc/apache2/mods-enabled/". CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 58 SUR 95 Pour permettre lauthentification travers lannuaire LDAP, ces quelques lignes dans le fichier "/etc/nagios/apache.conf" sont galement ncessaires: ScriptAlias /nagios/cgi-bin /usr/lib/cgi-bin/nagios <DirectoryMatch /usr/lib/cgi-bin/nagios> Options ExecCGI AuthLDAPAuthoritative on AuthLDAPEnabled On AllowOverride None AuthName "Nagios Access" AuthType Basic AuthLDAPURL "ldap://217.71.120.196:389/?uid?sub" require valid-user </DirectoryMatch> Le paramtre "AuthLDAPURL" tablit la connexion lannuaire LDAP travers une URL. "WebServ01" est le serveur sur lequel est plac cet annuaire chez EASI, il utilise le port par dfaut du protocole LDAP qui est le 389. Le paramtre "uid" (user identifiant) effectue l'authentification par identifiant unique de chaque contact et le "sub" (subtree) permet dtendre la zone de recherche toute larborescence infrieure. Cela permet de retrouver toutes les personnes qui font partie de lannuaire et de leur accorder le droit daccder linterface Web de Nagios. Par contre, pour le dossier contenant le fichier "cmd.cgi" qui modifie des paramtres de Nagios, nous restreignons l'accs non pas tout l'annuaire LDAP mais uniquement aux contacts appartenant l'organisation de EASI. ScriptAlias /nagios/cmd /usr/lib/cgi-bin/command <DirectoryMatch /usr/lib/cgi-bin/command> Options ExecCGI AuthLDAPAuthoritative on AuthLDAPEnabled On AllowOverride None AuthName "Nagios Access" AuthType Basic AuthLDAPURL "ldap://217.71.120.196:389/O=EASI?uid?sub" require valid-user </DirectoryMatch> Nous ajoutons donc l'URL le paramtre "O" qui spcifie le groupe dont les membres ont accs linterface Web. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 59 SUR 95 ).A. Noti.ications Lorsquun problme apparat sur un composant rseau ou sur un service supervis, Nagios cherche dans ses fichiers de configuration et regarde le nom des contacts qui y sont associs pour leur envoyer une notification du problme. Celle-ci peut se faire par diffrentes mthodes. A chaque contact est associ une commande pour envoyer la notification. Nous prcisons donc la commande pour un contact. Dans le fichier "contacts.cfg", deux lignes sont ncessaires pour prciser les commandes utiliser. define contact{ contact_name Jonathan ... service_notification_commands notify-by-email host_notification_commands host-notify-by-email email j.lousse@easi.be } Dornavant, lors de l'envoi d'une notification, Nagios excute la commande propre au contact. Il est intressant de dire que deux sortes de notifications sont introduites dans ce fichier. La premire prvient le contact en cas de dfaillance d'un service. La seconde, quant elle, prvient en cas de problme sur un hte. Il est aussi important de prciser la commande, il ne suffit pas de l'appeler. Les commandes utilises pour la notification sont dans un fichier appel "misccommands.cfg". Voici le code permettant d'envoyer un mail en cas de problme sur un service. # 'notify-by-email' command definition define command{ command_name notify-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $DATETIME$\n\nAdditional Info:\n\n$OUTPUT$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$ } Comme dans tous les fichiers de commande, la syntaxe est toujours la mme. Elle se compose du nom de commande qui est utilis lorsqu'on en fait appel et de la commande qui est excute par Nagios. La mme mthode est utilise lors de la notification de l'tat d'un hte quelques paramtres prs comme le nom du service ou l'tat du service. Dans le fichier "misccommands.cfg", une deuxime fonction dfinie existe en cas de problme sur un hte. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 60 SUR 95 Dans le cas de la supervision centralise, le serveur Nagios Local suit la mme procdure, mais au lieu d'envoyer un mail une personne, il prvient le serveur Nagios Central. C'est le rle du serveur Central d'envoyer les notifications aux personnes qui grent le rseau via un mail ou tout autre moyen de communication. Nous changeons les paramtres dans le fichier "contacts.cfg". define contact{ contact_name Jonathan ... service_notification_commands notify-easi host_notification_commands host-notify-easi email j.lousse@easi.be } Bien entendu, nous avons cr les fonctions correspondantes aux nouvelles mthodes de notification. Nous les avons ajoutes dans le fichier "misccommands.cfg". # 'notify-easi' command definition define command { command_name notify-easi command_line /etc/nagios/script/Send-ServNag EASI-$HOSTNAME$ $SERVICEDESC$ "$SERVICESTATE$" "$OUTPUT$" } # 'host-notify-easi' command definition define command { command_name host-notify-easi command_line /etc/nagios/script/Send-ServNag EASI-$HOSTNAME$ $HOSTSTATE$ "$OUTPUT$" } La fonction excute lance le script "Send-ServNag" que nous avons dtaill plus tt pour communiquer avec le serveur Central. A l'excution du script, nous lui envoyons une srie de paramtres pour prciser le nom du service ou de l'hte, mais galement le statut et le commentaire qui s'y rapportent. Le serveur Nagios Central reoit le message pass par le module NSCA, qui s'inscrit dans un fichier log. A intervalles rguliers, Nagios lit ce fichier et met jour ses informations. Si une notification prvient qu'un problme existe, Nagios prvient alors les personnes grant le rseau. Par dfaut, cela se fait par lenvoi de mails intervalles prciss pour chaque hte ou service jusquau retour la normale. Il est possible de configurer la notification pour que Nagios n'envoie qu'un seul mail. Cette solution est trs intressante car elle vite l'envoi de nombreux mails lorsque des problmes surviennent. Cette option se dfinit dans le fichier "services.cfg" pour la notification des services et dans "hosts.cfg" en ce qui concerne les htes. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 61 SUR 95 Voici le code contenant les informations de la notification en rapport avec un service dans le fichier "services.cfg": define service{ use service-check host_name Linux contact_groups admin notification_interval 240 ... } Les premires lignes dfinissent le service supervis. Les autres lignes sont expliques plus en dtail dans la partie qui concerne les fichiers de configuration. Ce qui nous intresse ici, ce sont les deux dernires lignes. Le champ "contact_groups" dfinit le nom du groupe prvenir en cas de problme, ces groupes sont dfinis dans le fichier "contactgroups.cfg". Nous dfinissons galement l'intervalle entre deux notifications par un chiffre dans le champ "notification_interval", ce chiffre reprsente un nombre d'units de temps. Voici un schma rsumant le chemin parcouru par les notifications: CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 62 SUR 95 ).B. 6ic2iers de con.iguration La configuration de Nagios est divise en une dizaine de fichiers texte. Chaque fichier traite un thme bien prcis. Dans ce travail, nous n'allons pas expliquer toutes les options possibles dans ces diffrents fichiers. La liste complte de ces options est dtaille dans les annexes (Annexe 7). Cette partie explique comment les fichiers de configuration de Nagios fonctionnent et les options les plus souvent utilises. ).B.1. Les 2Ctes #2osts.c.g( Un hte symbolise un serveur physique, une station de travail, un priphrique, un quipement ou n'importe quel composant connect au rseau. Pour superviser un hte, nous l'ajoutons avec ses caractristiques dans le fichier "hosts.cfg". Pour plus de facilit, nous dfinissons un modle qui permet de dfinir les informations communes plusieurs htes. Ce systme CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 63 SUR 95 de modle ressemble au principe dhritage en programmation. Dans notre cas, nous rassemblons une srie d'options dans un modle que nous appelons "host-check". Voici ces options: define host{ name host-check notifications_enabled 1 event_handler_enabled 0 retain_status_information 1 check_command check-host-alive max_check_attempts 3 notification_interval 10 notification_period 24x7 notification_options d,u,r register 0 } name Cest le nom donn au modle, il permet d'associer ce modle aux htes. noti.ications>ena-&ed Si cette directive est mise 0, la notification lors de problmes est dsactive. Dans notre cas, nous voulons recevoir ces notifications, donc nous lui associons la valeur 1. event>2and&er>ena-&ed Cette directive active le gestionnaire d'vnements si elle est mise 1. Le gestionnaire d'vnements est une commande optionnelle qui est excute chaque changement d'tat. L'utilit de ces gestionnaires d'vnements est qu'ils permettent Nagios de rsoudre certains problmes de manire prventive avant que quelqu'un ne reoive une notification. retain>status>in.ormation Nagios mmorise les statuts des htes et services lors de son redmarrage si nous associons cette directive la valeur 1. c2ec$>command Cette directive dfinit le nom de la commande utiliser pour vrifier la validit d'un service ou d'un hte. Dans notre cas, le nom de la commande utilise est "check-host-alive". Cette commande lance un "PING" vers l'hte pour voir sil est bien connect au rseau. Si cet argument est vide, Nagios suppose que l'hte est toujours bien connect. max>c2ec$>attem"ts Lorsqu'un hte passe en statut d'erreur, Nagios vrifie un certain nombre de fois son rsultat avant d'envoyer une notification. noti.ication>interva& Cette directive dfinit le nombre d'units de temps entre les notifications. Si cette valeur est gale 0, Nagios n'envoie qu'une seule notification. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 64 SUR 95 noti.ication>"eriod Cette directive dfinit la priode pendant laquelle les notifications sont envoyes. Par dfaut, la priode est "24x7" ce qui indique que les notifications sont envoyes 24 heures sur 24 et 7 jours sur 7. noti.ication>o"tions Il existe diffrentes sortes de notifications que nous dfinissons grce une combinaison de lettres: "d" signifie lenvoi de la notification pour un tat DOWN, "u" lenvoi de la notification pour un tat UNREACHABLE, "r" l'envoi de la notification pour le retour la normale (tat OK). Et la lettre "n" (none) permet de ne pas envoyer de notifications. register Cette directive diffrencie un modle d'un hte. Ci-dessous, un exemple de dfinition dhte qui utilise ce modle. Tous les htes superviser doivent tre dans le mme fichier que les modles. # PC TEST define host{ use host-check host_name IBMR30 alias PC TEST address 172.22.3.74 } CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 65 SUR 95 use Cette directive associe un modle existant lhte. Dans notre cas, nous lassocions avec le modle dcrit prcdemment. 2ost>name Identifie l'hte, ce nom est utilis dans les groupes d'htes et dans les dfinitions de services pour lui faire rfrence. a&ias Une description qui identifie plus facilement lhte. address Une adresse IP ou un nom qui permet de joindre l'hte ).B.2. Les services #services.c.g( Un service est une tche fonctionnant sur un hte. Le terme de service s'applique aussi bien un rle de l'hte (POP, SMTP, HTTP, ...) qu' une mesure effectue sur un hte (charge moyenne du systme, usage des disques, temps de rponse, ...). Tout comme les htes, nous dfinissons des modles pour les services. Comme certaines directives sont les mmes pour les dfinitions dhtes et de services, seules celles qui sont associes exclusivement aux services seront dcrites. Voici le code de notre modle: define service{ name service-check active_checks_enabled 1 passive_checks_enabled 0 notifications_enabled 1 event_handler_enabled 0 retain_status_information 1 check_period 24x7 max_check_attempts 3 normal_check_interval 5 retry_check_interval 1 contact_groups admin notification_interval 240 notification_period 24x7 notification_options c,r register 0 } active>c2ec$s>ena-&ed Cette directive permet de vrifier activement un service. Les contrles actifs sont des contrles lancs par Nagios. "assive>c2ec$s>ena-&ed Nagios traite galement les rsultats provenant de contrles passifs, c'est-- dire excuts par des applications tierces. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 66 SUR 95 c2ec$>"eriod Dfinit la priode pendant laquelle Nagios lance des contrles actifs. norma&>c2ec$>interva& Nombre d'units de temps que Nagios attend avant de retester le service. contact>grou"s C'est une liste de noms de groupes de contacts qui reoivent les notifications. Voici un exemple de dfinition de service qui utilise le modle que nous avons dtaill. define service{ use service-check host_name Chung service_description CheckVarHDD-C check_command check-VarHDD!CheckHDD-C!1!2 normal_check_interval 2 } 2ost>name Cette directive dfinit le nom de l'hte sur lequel tourne le service ou avec lequel il est associ. service>descri"tion Cette directive contient une description du service. Deux services associs au mme hte ne peuvent avoir la mme description. Les services sont identifis avec les directives "host_name" et "service_description". ).B.!. Les contacts #contacts.c.g( En principe, un contact est une personne physique qui est prvenue en cas de problme sur le rseau. Mais dans notre cas, un contact est plutt une personne qui peut se connecter l'interface Web de Nagios. Les notifications de tous les problmes sont envoyes exclusivement EASI. Voici le dtail d'un contact: define contact{ contact_name nagios alias Nagios Admin service_notification_commands notify-easi host_notification_commands host-notify-easi email nagios@localhost.localdomain } CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 67 SUR 95 contact>name Dfinit le nom qui identifie le contact. Il est utilis dans les dfinitions de groupes de contacts. a&ias Donne une description ou un nom plus long pour le contact. service>noti.ication>commands 2ost>noti.ication>commands Ces deux directives sont dtailles plus tt dans ce travail, dans la notification de Nagios. emai& Dfinit l'adresse email du contact. Selon la manire dont la commande de notification est dfinie, elle est utilise pour mettre un email. ).B.). Les grou"es d*2Ctes #2ostgrou"s.c.g( Les groupes d'htes se composent d'un ou de plusieurs htes pour simplifier les notifications. Chaque hte appartient au moins un groupe et parfois plusieurs. Les groupes d'htes ont une plus grande importance sur le serveur Nagios Central car chaque groupe reprsente le rseau d'un des clients de EASI. Define hostgroup{ hostgroup_name EASI-Device alias Groupe des devices EASI contact_groups admin,EASI members FWzaventem,FWliege,FWluxembourg,RtEASI,IBM-InfoPrint- 1120,FWliegeT } 2ostgrou">name Dfinit le nom qui identifie le groupe dhtes. contact>grou"s Dfinit le nom des groupes de contacts notifier en cas de problmes mem-ers Une liste de noms d'htes inclure dans ce groupe. Les noms doivent tre spars par des virgules. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 68 SUR 95 ).B.,. Les grou"es de contacts #contactgrou"s.c.g( En temps normal, un groupe de contacts regroupe des contacts. Cette mthode facilite l'envoi de notifications un ensemble de personnes. Sur le serveur Nagios Central, il est plus facile d'inscrire dans un mme groupe les employs d'un mme client de EASI et de donner accs un groupe plutt qu' une longue liste de contacts. Ce principe de multi-utilisateurs a dj t dvelopp plus tt dans ce travail. define contactgroup{ contactgroup_name EASI alias EASI USER members nagios } contactgrou">name Dfinit le nom utilis pour identifier le groupe de contacts. ).B.<. Les "riodes #time"eriods.c.g( Une priode est une tranche horaire pour les diffrents jours de la semaine considrs comme valides pour l'envoi de notifications et pour le contrle des services. Ce fichier n'a pas beaucoup d'intrt dans le cadre de notre travail car les notifications et vrifications se droulent tout le temps. Mais il est envisageable de crer des priodes de vrification. define timeperiod{ timeperiod_name 24x7 alias 24 Hours A Day, 7 Days A Week sunday 00:00-24:00 monday 00:00-24:00 tuesday 00:00-24:00 wednesday 00:00-24:00 thursday 00:00-24:00 friday 00:00-24:00 saturday 00:00-24:00 } CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 69 SUR 95 ).B.A. Les commandes Les commandes de Nagios sont dfinies dans plusieurs fichiers mais utilisent exactement la mme syntaxe. Chaque fichier contenant des commandes correspond un type bien dfini. Les commandes de contrles de services sont dtailles dans le fichier "checkcommands.cfg". Elles permettent Nagios de lancer des vrifications, ou bien de lancer des scripts personnaliss. Les commandes de notifications contenues dans "misccommands.cfg" permettent d'envoyer les notifications. Ce point a dj t abord dans les notifications de Nagios. La syntaxe de la dfinition d'une commande est la suivante: define command{ command_name nom_de_la_commande Command_line ligne_de_commande } Les commandes standard utilises dans Nagios sont dfinies un autre endroit "/etc/nagios-plugins/config/". Le dtail de ces commandes se trouve dans les annexes (Annexe 15) ainsi que celles que nous avons crites (Annexe 16). CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 70 SUR 95 ).D. Personna&isation de &a carte d*tat du rseau Dans l'interface Web, la personnalisation des icnes affiches sur la carte des statuts du rseau est possible. Par dfaut, Nagios utilise des points dinterrogation. Ces images sont visibles plusieurs endroits de linterface Web. On les retrouve dans le dtail des services et des htes superviss. De manire gnrale, de simples images GIF suffisent, mais les images utilises pour dessiner la carte des statuts du rseau sont obligatoirement des images GD2. GD2 est un format de fichier provenant de la librairie GD qui est souvent utilise pour la cration dynamique d'images par des programmeurs notamment pour gnrer des diagrammes et des graphes. GD est une librairie Open Source crite en langage C. Cette librairie cre entre autre des images d'extension PNG, JPEG et GIF. Cette librairie est tlcharge sur le site "http://www.boutell.com/gd/". Cette librairie est compose de plusieurs utilitaires. Dans le cadre de notre travail, nous utilisons l'utilitaire nomm "pngtogd2" qui transforme des images PNG en image GD2. Voici le code taper dans une fentre de commande DOS de Windows. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 71 SUR 95 pngtogd, i%age)png i%age)gd, /0 * Le premier paramtre est lappel lutilitaire "pngtogd2", vient ensuite le nom de limage PNG transformer et le nom de limage transforme en GD2. Le quatrime paramtre est la taille des morceaux de limage, aussi appel "chunk size". Cette taille est un nombre de 8 chiffres indiquant la taille des morceaux de l'image. Cest une nouveaut par rapport lancienne version de la librairie GD. Le nouveau format, GD2, emploie la bibliothque de compression ZLIB pour comprimer l'image en morceaux, un peu comme le principe des images GIF. Ce format supporte galement un bon nombre de versions, ce qui le rend plus supportable que le format prcdent. Il est intressant de noter que le changement de la "chunk size" na aucune incidence sur la taille de limage, ce qui ne sera pas le cas du dernier paramtre. En effet, celui-ci prcise si lon souhaite une image brute ("raw") ou compresse. Ci-dessous, voici le rsultat de la procdure tape dans la commande DOS de Windows. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 72 SUR 95 Une fois les images GIF et GD2 prtes, nous les copions dans le dossier "/usr/share/nagios/htdocs/images/logos". A ce stade, rien n'est encore fait. Dans Nagios, nous associons chaque machine une image. Pour cela, nous ditons le fichier "hostextinfo.cfg". define hostextinfo{ host_name hostname icon_image Serv-Norm.gif icon_image_alt Serveur statusmap_image Serv-Norm.gd2 register 1 } Dans celui-ci, nous retrouvons le nom de la machine qui est dfini pralablement dans le fichier "hosts.cfg". Nous associons galement cette machine une image GIF pour les diffrentes pages du site Web et une image GD2 pour la carte de statut du rseau. Aprs l'dition du fichier "hostextinfo.cfg" et la copie des images sur le serveur Web, voici le schma que l'utilisateur aperoit sur l'interface Web de Nagios. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 73 SUR 95 ).13. Documentation Pour faciliter l'installation et la configuration des logiciels et des machines chez les clients d'EASI, une srie de documents permet aux employs d'EASI de suivre une procdure bien prcise. De cette manire, les installations et les configurations restent standard et nimporte quel employ de EASI peut intervenir sur ce quun autre a fait. On peut citer par exemple les rpertoires dinstallation utiliss ou les logiciels choisis pour offrir un service. De la mme manire, il est intressant de disposer dune documentation relative linstallation de Nagios, ce qui permet nimporte qui dinstaller aisment ce programme. Bass sur la documentation de EASI, au niveau de larchitecture et du design, les documents que nous avons rdigs vont permettre de configurer une machine Linux ou Windows afin de la superviser. Ils sont accompagns de captures dcran et de morceaux de code afin de les rendre plus conviviaux et faciles dutilisation. Voici la liste des documents que nous avons crs, ils se situent tous dans les annexes (Annexe 18): o Surveillance d'une machine Linux (Intel) o Surveillance d'une machine Windows (Intel) CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 74 SUR 95 ,. D"&oiement de Nagios Aprs avoir effectu le dveloppement de Nagios en analysant le projet raliser, en dveloppant nos propres "plugins", en scurisant les transferts dinformations entre le serveur Nagios Local et le serveur Nagios Central et aprs avoir cr un mode multi-utilisateurs avec une authentification via un annuaire LDAP, il faut maintenant appliquer le projet linfrastructure informatique des clients de EASI. Nous analysons dabord le rseau existant du client pour mieux cerner les besoins en matire de supervision. Ensuite, nous rflchissons la mise en place de larchitecture pour superviser efficacement le rseau informatique. Nous dfinissons ensuite les composants rseau superviser et expliquons comment mettre en place Nagios dans ce rseau informatique. Nous commenons par superviser l'infrastructure informatique de EASI. Cette phase nous sert de test avant que EASI ne prenne la dcision de l'tendre l'entiret de ses clients. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 75 SUR 95 ,.1. na&yse du rseau existant Nous commenons donc par analyser le rseau informatique de EASI. Il existe au sein de ce rseau de nombreux serveurs tels que des serveurs Web, DHCP, DNS mais aussi des serveurs de mails et dimpression. Presque tous ces serveurs se situent sur le site de EASI Zaventem. Sur le site du Luxembourg, deux serveurs sont superviser en plus du pare-feu. Voici la description des serveurs plus spcifiques galement utiliss chez EASI. ,.1.1. Rseau interne Trois serveurs possdent un systme dexploitation diffrent de Windows et de Linux et dont le nom est OS/400. Ces trois serveurs sont placs sur lAS/400 de EASI. Les lettres S sont l'acronyme d'pplication System, une machine qu'IBM a lance dans les annes 1980. Cette gamme d'ordinateurs existe toujours chez IBM sous le nom de iSeries. Ci-aprs se trouve schmatis le rseau de EASI avec les trois sites Zaventem, Lige et au Luxembourg ainsi que les composants les plus importants dans chaque site. Le rle de ces serveurs est dfini dans les annexes (Annexe 12). CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 76 SUR 95 CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 77 SUR 95 ,.1.2. Rseau DME Tout dabord, le serveur "pass-thru" situ sur le rseau DME (DeMilitarized Eone), un sous-rseau situ entre le rseau local et l'extrieur (Internet gnralement), contrl par un pare-feu et accessible partir de l'extrieur du rseau. Ce serveur a pour fonction de filtrer les connexions Lotus Notes/Domino au rseau de EASI sans devoir crer de tunnels +PN (+irtual Private Network), c'est--dire une connexion scurise entre plusieurs rseaux informatiques distants. Il autorise ou refuse les connexions entrantes suivant des paramtres complexes comme la machine source, l'utilisateur, . Pour qu'une connexion initie par le client, c'est--dire une machine extrieure, soit accepte vers le serveur interne EASI, celui-ci s'authentifie auprs du serveur "pass-thru". Celui-ci interroge le serveur en question pour vrifier que le client qui initialise la connexion ait bien accs via le "pass-thru". On a donc un mcanisme de double scurit. Si un client souhaite entrer dans le rseau, il doit non seulement se faire identifier par le serveur "pass-thru", mais il doit galement s'authentifier par le serveur "destination" en passant par le "pass- thru". Exemple, si un consultant lextrieur souhaite se connecter au serveur Domino04 sur le rseau de EASI, il passe par le serveur "pass-thru" qui est sur Domino06 et qui lui donne une premire autorisation. Ensuite, ce serveur le redirige vers Domino04 qui son tour, vrifie que cette personne est bien autorise se connecter partir de Domino06. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 78 SUR 95 Pour combattre le phnomne des courriers non sollicits mieux connus sous le nom de "spam", EASI utilise le logiciel Spam Assassin, une solution anti-spam gratuite qui reoit le mail et vrifie sil s'agit de spam. Concrtement, aprs le passage du mail au travers du pare-feu de EASI Zaventem (FWzaventem), il est directement trait par Spam Assassin qui dtermine si celui-ci est un spam. Le cas chant, le mail est marqu au niveau du sujet comme tant un mail non sollicit. Il est ensuite transmis au serveur de messagerie Domino04. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 79 SUR 95 ,.1.!. +PN et "are?.eux Le pare-feu, par dfinition, permet le passage slectif des flux d'information entre Internet et le rseau local. Les trois sites de EASI Lige, au Luxembourg et bien sr Zaventem possdent chacun leur propre pare-feu. L'interface vers Internet de chacun des trois pare-feux donne accs un canal scuris de type VPN qui permet le passage dinformations entre les sites distants. Ce canal relie les diffrents rseaux locaux de EASI en un grand rseau de type LN (Local rea Network) tout fait scuris. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 80 SUR 95 ,.1.). Serveurs 7e- Les serveurs Web sont diffrents des serveurs dans le sens o ils ne se trouvent pas sur le site de EASI. En effet, pour des raisons de scurit et de place, ceux-ci ont t placs dans une socit spcialise Interxion. Cette socit gre lalimentation permanente et le suivi de ces machines ainsi que lenvironnement dans lequel elles vivent (la temprature par exemple). Le rseau dInterxion, sur lequel sont placs les serveurs Web de EASI, est reprsent ci-dessous. On voit clairement que les trois Webservers (Webserver01, Webserver02 et Webserver03) sont installs sur le premier serveur (easiweb.easi.be). CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 81 SUR 95 ,.2. rc2itecture @ mettre en "&ace La premire tape est de dfinir l'emplacement du serveur Nagios. Le serveur doit avoir accs un maximum de composants rseau mais doit galement avoir accs Internet pour communiquer avec le serveur Nagios Central. Nous devons galement changer la configuration du pare-feu, le serveur Nagios Local doit pouvoir se connecter en SSH au serveur Central. Nous devons donc ouvrir le pare-feu en sortie sur le port 22. Nous devons aussi ouvrir le port 5667 en sortie pour que les notifications puissent tre envoyes au serveur Nagios Central. Nous devons aussi ouvrir les ports spcifiques en cas de vrifications externes au rseau. Mais chez EASI, ce scnario n'est pas exact car le serveur Nagios Central est plac, pendant la priode de test, sur le rseau DMZ de la socit. Nous devons configurer le pare-feu diffremment du cas gnral. En ralit, lorsque le serveur Nagios Local se connecte au serveur Central, il ne passe pas par Internet mais passe juste par le pare-feu. Nous configurons donc le pare-feu en sortie vers la DMZ en ouvrant les ports 22 (SSH) et 5667 (NSCA) pour que la connexion entre les deux serveurs se fasse bien. Mais nous ouvrons galement les ports 7 (ICMP) et 1352 (Domino) pour superviser le serveur dj prsent sur ce rseau. En entre, nous interdisons videmment toutes les connexions pour prserver la scurit du rseau interne de EASI. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 82 SUR 95 Nous en profitons galement pour paramtrer le serveur Nagios Central et le pare-feu. Nous fixons d'abord l'adresse IP du serveur sur le "range" (tendue des adresses) du rseau DMZ. Pour le pare-feu, nous autorisons les ports en sortie vers Internet: o 80 pour vrifier les serveurs Web extrieurs la socit et ceux placs chez Interxion o 7 (ICMP) pour vrifier la connexion rseau o 389 pour vrifier les annuaires LDAP mais galement pour authentifier un utilisateur sur le serveur Nagios o 25 pour vrifier les serveurs de mails SMTP. Nous en avons besoin car le Nagios Central envoie les mails en cas de problmes o 1494 pour vrifier le bon fonctionnement d'un serveur Citrix o 1352 pour vrifier que le serveur Domino fonctionne correctement Par contre, en entre, nous ouvrons le port 80 pour que les utilisateurs puissent se connecter l'interface Web de Nagios, le port 22 pour les transferts de fichiers entre les serveurs Locaux et le serveur Central et le port 5667 pour que le serveur Nagios Central reoive toutes les notifications. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 83 SUR 95 Une fois le serveur Nagios Local install avec Debian et Nagios, nous lui attribuons une adresse IP fixe faisant partie du sous-rseau de la socit. Pour ce faire, nous ditons le fichier "/etc/network/interfaces" et nous ajoutons les informations suivantes: auto eth0 iface eth0 inet static address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx Sur les stations Linux sur lesquelles le serveur Nagios effectue des tests, nous crons un utilisateur qui peut tablir des connexions SSH sur le port 22 et qui a le droit d'excuter des commandes sur l'hte distant. Nous copions les "plugins" Nagios sur la machine superviser et copions galement la cl publique pour l'authentification du serveur Nagios lors des vrifications. Sur les serveurs Windows qui sont superviss par Nagios, nous installons l'utilitaire NSClient qui permet d'interroger cette machine distance depuis le serveur Nagios Local. Pour terminer, nous installons les diffrents "plugins" et scripts que nous avons dvelopps nous-mmes sur le serveur Local. Une fois toutes ces tapes accomplies, nous crons les fichiers de configuration du nouveau serveur sur le serveur Nagios Central. Le serveur Local tlcharge ces fichiers de configuration et ainsi commence sa tche de supervision. Nous modifions bien entendu les fichiers de configuration du serveur Nagios Central pour que celui- ci affiche les rsultats qu'il recevra du Nagios Local. Tout ce qui est expliqu dans ce point est dtaill dans les procdures que nous avons cres pour faciliter l'installation des futurs serveurs par les employs de EASI. Ces procdures sont listes dans le point 4.10 mais se trouvent dans les annexes. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 84 SUR 95 ,.!. 1om"osants su"erviss L'installation tant maintenant termine, nous devons savoir ce que Nagios doit superviser sur le rseau de la socit. C'est au client de savoir quels sont les services ou htes qui doivent tre superviss. Il va donc complter la fiche client que nous avons cre avec l'aide d'un technicien de chez EASI. Celui-ci le conseillera dans ses choix. Le modle de cette fiche client se trouve dans les annexes (Annexe 10) et la fiche complte par EASI se trouve galement dans les annexes (Annexe 11) Une fois cette fiche complte, nous prparons un document listant les diffrents composants rseau avec les services superviser sur chacun d'eux (Annexe 12). Ce nouveau document permet au client de vrifier si toutes ses exigences sont bien respectes et facilite aussi les modifications que nous devons faire dans les fichiers de configuration de Nagios. Quand cette liste est approuve par le client, nous modifions les fichiers de configuration de Nagios sur le serveur Nagios Central. Ces diffrents fichiers de configuration se trouvent dans les annexes (Annexe 14). CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 85 SUR 95 ,.). Mise en "&ace de Nagios Pour chaque vrification effectue par Nagios, il y un "plugin" qui se cache derrire. Dans ce chapitre, nous dtaillons les "plugins" les plus importants, notamment ceux que nous avons utiliss pour superviser le rseau informatique de EASI. La vrification consiste parfois vrifier ltat dun port sur lequel tourne un service ou un protocole ou consiste effectuer une commande, par exemple vrifier l'espace du disque dur utilis. Nous prsentons brivement ces "plugins" et nous dcrivons la syntaxe de la commande avec ses principaux arguments utiliss. Le dtail des commandes pour lensemble des "plugins" standard se trouve en annexe (Annexe 15). o 12arge moyenne du systFme #Standard( Le "plugin check_load" teste la charge moyenne du systme sous Linux. Syntaxe: check_load -w WLOAD1, WLOAD5, WLOAD15 -c CLOAD1, CLOAD5, CLOAD15 Ce "plugin" contrle la charge moyenne du CPU toutes les 1, 5 et 15 minutes. L'tat est CRITICAL si les moyennes dpassent les seuils <cload1>, <cload5> ou <cload15>. L'tat est WARNING si les charges moyennes dpassent les seuils <wload1>, <wload5> ou <wload15>. o Es"ace dis5ue #Standard( Le "plugin check_disk" vrifie le pourcentage d'espace disque utilis sur un systme Linux. Syntaxe: check_disk -w limit -c limit [-p path] [-t timeout] Si le taux d'espace occup dpasse le seuil fix par <-c>, l'tat est CRITICAL. S'il dpasse le seuil <-w>, l'tat sera WARNING. L'argument <-p> spcifie le chemin de la partition vrifier (ex: /dev/hda1). L'tat critique est renvoy si le "plugin" ne peut contacter l'hte avant le dlai prcis par largument <-t> (10 secondes par dfaut). o Gti&isation de &a mmoire #Standard( Le "plugin check_vsz" vrifie l'utilisation mmoire de chaque programme et lance des alertes en fonction de limites dfinies. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 86 SUR 95 Syntaxe: check_vsz -w <wsize> -c <csize> [-C command] Ce "plugin" contrle les processus et vrifie que la taille totale en octets ne dpasse pas les seuils WARNING ou CRITICAL donns par les arguments <-w> et <-c>. Loption <-c> prcise quel processus nous voulons vrifier. o 1onnexion au rseau #Rseau( Le "plugin check_ping" vrifie la connexion au rseau. Cest le plus employ, il utilise la commande "PING" pour vrifier les statistiques de connexion un hte distant. Syntaxe: check_ping -H <host_address> -w <wrta>,<wpl>%% -c <crta>,<cpl>%% [-p packets] [-t timeout] Les arguments <wrta> et <crta> sont les seuils d'alerte WARNING et CRITICAL pour la dure moyenne du trajet (en millisecondes). De mme, les arguments <wpl> et <cpl> sont les seuils d'alerte pour le taux de perte de paquets. L'argument optionnel <-p> contrle le nombre de paquets ICMP ECHO qui sont envoys l'hte spcifi (5 par dfaut). o DNS #Protoco&es %1PHIP I GDP( Le "plugin check_dns" vrifie le bon fonctionnement dun serveur DNS, il utilise en fait le programme NSLOOKUP pour obtenir l'adresse IP d'un hte/domaine donn. Chez EASI, cest le serveur "Danube" qui se charge du service DNS. Syntaxe: check_dns -H host [-s server] [-a expected_address] [-t timeout] Le "plugin" contrle la rsolution du nom de domaine spcifi par l'option <-H>. Si on ne veut pas utiliser les serveurs DNS par dfaut, il est possible d'en prciser un l'aide du second argument <-s>. Largument <-a> spcifie une adresse IP facultative que le serveur DNS doit retourner. L'tat critique est renvoy si le "plugin" ne peut contacter l'hte avant le dlai prcis par largument <-t> (10 secondes par dfaut). o 6%P #Protoco&es %1PHIP I GDP( Le "plugin check_ftp" teste la connexion FTP avec l'hte spcifi. Syntaxe: check_ftp -H host -p port [-w warning] [-c critical] [-s send] [-e expect] [-t timeout] CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 87 SUR 95 Le "plugin" contrle la connexion FTP avec lhte spcifi par l'option <-H>. L'argument <-p> prcise le port (par dfaut 21). L'tat de retour est WARNING si l'hte ne peut tre contact en moins de <- w> secondes, il est CRITICAL si l'hte ne peut tre contact avant <- c> secondes. Si lon souhaite envoyer une requte sous forme de chane de caractres, il faut utiliser largument <-s>. Le "plugin" vrifie galement si la rponse du serveur contient une chane spcifie par l'argument <-e>. L'tat critique est aussi renvoy si le "plugin" ne peut contacter l'hte avant le dlai prcis par largument <-t> (10 secondes par dfaut). o 4%%P #Protoco&es %1PHIP I GDP( Le "plugin check_http" teste le service HTTP sur l'hte spcifi mais teste aussi HTTPS (HTTP Secure), suit les redirections, recherche des chanes de caractres et des expressions rgulires, vrifie le temps de connexion et renvoie la dure d'expiration d'un certificat. Syntaxe: check_http (-H <vhost> | -I <IP_address>) [-u <uri>] [-p <port>] [-w <warning>] [-c <critical>] [-t <timeout>] [-a auth] [-e <expect>] [-s string] Ce "plugin" vrifie s'il peut se connecter soit l'hte virtuel spcifi par largument <-H>, soit sur lhte spcifi par son IP ou son nom avec largument <-I>. Si aucun URL n'est prcis par largument <-u>, le "plugin" cherche le document racine. Si on prcise un numro de port avec largument <-p>, il crase celui par dfaut (80). L'tat de retour est WARNING si l'hte ne peut tre contact en moins de <-w> secondes, il est CRITICAL si l'hte ne peut tre contact avant que <-c> secondes ne se soient coules. L'tat critique est aussi renvoy si le "plugin" ne peut contacter l'hte avant le dlai prcis par l'option timeout (10 secondes par dfaut). Il est galement possible de rechercher une chane de caractres dans le contenu de la page grce largument <-s>. o P/P! #Protoco&es %1PHIP I GDP( Le "plugin check_pop" est utilis pour tester la connexion POP3 avec un hte spcifi. Syntaxe: check_pop -H host -p port [-w warning] [-c critical] [-s send] [-e expect] [-t timeout] Le "plugin" contrle la connexion POP3 avec lhte spcifi par l'option <-H>. Si un numro de port est prcis avec largument <- p>, il crase celui par dfaut (110). L'tat de retour est WARNING si l'hte ne peut tre contact en moins de <-w> secondes, il est CRITICAL si l'hte ne peut tre contact avant que <-c> secondes ne CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 88 SUR 95 se soient coules. Il est possible denvoyer une requte sous forme de chane de caractres grce largument <-s>. Le "plugin" cherche en fait la chane spcifie par l'argument <-e> dans la premire ligne de la rponse de l'hte ("+OK" par dfaut). L'tat critique est aussi renvoy si le "plugin" ne peut contacter l'hte avant le dlai prcis par l'option <-t> (10 secondes par dfaut). o SM%P #Protoco&es %1PHIP I GDP( Le "plugin check_smtp" teste le service SM%P (Simple Mail %ransfer Protocol) sur l'hte spcifi. Nous lutilisons pour superviser "Danube" et "Domino02" Syntaxe: check_smtp -H host [-e expect] [-p port] [-f from_addr] [-w warning] [-c critical] [-t timeout] Ce "plugin" essaie de se connecter au port SNMP de l'hte spcifi par largument <-H>. Il cherche la chane spcifie par l'argument <-e> dans la premire ligne de la rponse de l'hte ("220" par dfaut). Si un numro de port sur la ligne de commande est prcis, il crase celui par dfaut (25). Si une adresse doit tre prcise dans la commande MAIL, il faut utiliser largument <-f>. L'tat de retour est WARNING si l'hte ne peut tre contact en moins de <-w> secondes, il est CRITICAL si l'hte ne peut tre contact avant que <-c> secondes ne se soient coules. L'tat critique est aussi renvoy si le "plugin" ne peut contacter l'hte avant le dlai prcis par l'option timeout (10 secondes par dfaut). o SS4 #Protoco&es %1PHIP I GDP( Le "plugin check_ssh" vrifie si l'hte accepte les connexions SSH. Syntaxe: check_ssh <host> [-p port] [-t timeout] Ce "plugin" essaie de se connecter au serveur spcifi par loption <host> sur le port spcifi par l'argument <-p>. S'il contacte le serveur avec succs, il retourne une rponse valide. L'tat CRITICAL est renvoy si le "plugin" ne peut contacter l'hte avant le dlai prcis par l'option timeout (10 secondes par dfaut). o Services Le "plugins check_tcp" vrifie s'il peut se connecter un hte et sur un certain port. Syntaxe: check_tcp -H <host> -p <port> CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 89 SUR 95 Gnralement, la supervision des services consiste surveiller ltat des ports quils utilisent sur le rseau en utilisant ce "plugin". Par exemple, pour tester le service Domino, la russite de la connexion sur le port 1352 permet de dire que le service Domino fonctionne correctement. C'est ce mme principe qui est utilis pour vrifier la plupart des services, citons les plus connus: Citrix (port 1494), Ms-SQL (port 1433), Sametime (port 1533), Spam Assassin (port 25), ... o 1ommande @ distance via SS4 #Services s"ciaux( Le "plugin check_by_ssh" permet l'excution d'un "plugin" sur un hte distant l'aide de SSH. Syntaxe: check_by_ssh -H <host> -C <command> [-p port] [-t timeout] [-i identity] [-l user] [-n name] Il faut tout dabord spcifier lhte distant en utilisant largument <-H>. Ensuite, la commande, sous forme de chane de caractres, doit tre envoye avec largument <-C>. Si un numro de port sur la ligne de commande est prcis, il crase celui par dfaut (22). L'tat CRITICAL est renvoy si le "plugin" ne peut contacter l'hte avant le dlai prcis par l'option timeout (10 secondes par dfaut). En option, lidentit d'une cl autorise peut tre prcise par largument <-i>, le nom d'utilisateur SSH sur lhte distant par largument <-l> et le nom de lhte dans la configuration de Nagios par l'argument <-n>. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 90 SUR 95 <. 1onc&usion La supervision est un domaine trs intressant car elle permet une vue assez tendue des rseaux informatiques, domaine dans lequel nous souhaitions faire notre Travail de Fin dEtudes. Le dbut a t ardu car linstallation de Nagios a demand beaucoup de temps et de patience. Pourtant, la longue, son utilisation sest avre beaucoup plus comprhensible. Quand nous nous trouvions face un problme, nous nous sommes rendu compte qu'il n'existait pas toujours un document ou un livre qui expliquait exactement notre problme, mais que nous devions prendre toutes des petites parties venant d'endroits diffrents sur Internet. Nous avons donc pass beaucoup de temps rechercher des informations sur des sujets bien prcis comme sur le LDAP, le mode multi-utilisateurs, le SNMP, . Nous avons eu quelques difficults pour finaliser notre projet. D'abord le rseau que nous avons supervis, cest--dire celui de EASI, a fortement vari tout au long de notre Travail cause de nombreuses migrations de serveurs et d'infrastructures. Ensuite, nous nous somme rendu compte que suivre un cahier des charges n'tait pas chose aise, d'autant plus lorsque des petites modifications apparaissent durant le dveloppement de celui-ci. Cela na pourtant pas eu dinfluence ngative sur notre travail. Lexprience la plus enrichissante est certainement celle du monde Linux. En effet, Nagios tant install sur des machines Linux, nous avons t contraints dapprendre plus en profondeur ce systme dexploitation peu connu jusqu maintenant. Que ce soit au niveau des commandes ou des utilitaires propres Linux, tel que lditeur de texte, cette dcouverte sest avre trs intressante. Les langages de programmation ont galement t approfondis tels que Perl et C. En effet, lors de lanalyse du mode multi-utilisateurs, nous avons analys un fichier CGI dont la source est crite en C. Ayant eu des problmes lors de la compilation de ce dernier, nous avons prfr crire un fichier en Perl. Mais le plus enrichissant est certainement lapprentissage du langage Shell que nous avons appris pour crire des "plugins". Ce langage est en fait un interprteur de commandes, la partie du systme dexploitation utilise celles-ci comme interface avec l'utilisateur. En ce qui concerne le serveur AS/400, le temps nous a manqu pour le superviser. Mais daprs ce que nous avons vu sur Internet, des "plugins" permettant de rcolter des informations sur ces machines existent et leurs installations ressemblent fortement celle du module NSClient pour Windows. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 91 SUR 95 Des supervisions concernant le rseau ont quand mme t ralises car elles sont indpendantes du systme dexploitation utilis. Lannuaire LDAP a aussi t une grande dcouverte pour nous. Ayant d le comprendre avec le protocole du mme nom dans le cadre de lauthentification linterface Web de Nagios, nous avons beaucoup recherch avant de pouvoir comprendre un minimum. Pourtant, la consultation dun annuaire se fait par des requtes, tout comme on interroge une base de donnes SQL. Mais lutilisation de ces requtes requiert un minium de connaissances sur ces annuaires. Lors de la personnalisation de la carte de statut du rseau sur l'interface Web, nous avons dcouvert qu'il existait des fichiers images interprts et modifis directement par le Serveur Web. Cela permet entre autre d'y introduire du texte ou de les mettre dans un graphique existant. Ces images portent le nom de GD2. Hormis leurs avantages de prsentation, celles-ci consomment trs peu de ressource CPU lors de leur gnration. Tout au long de notre travail, nous nous sommes intresss aux multiples facettes d'un projet. Nous avons d'abord analys le projet en lui-mme mais aussi les dpendances qu'il impliquait. Nous avons programm sur base de notre tude et des conseils que nous avons reus des membres de notre dpartement. Pour finir, nous avons mis en place notre architecture tout en nous adaptant ce qui existait dj. Nous avons mme propos des solutions de modification de l'infrastructure informatique. Citons par exemple l'installation de programmes sur des serveurs de production. Produire un Travail de Fin dEtudes qui servira est motivant, car cela nous plonge dans des conditions optimales de travail, surtout au niveau de lefficacit, puisquil faut invitablement aboutir un rsultat. Il y a une grande diffrence entre ce que l'on pense, ce que l'on explique et ce que l'on rdige. Certaines ides taient claires dans nos ttes mais quand est venu le moment de les expliquer notre promoteur o a un collgue, il tait plus difficile de s'exprimer. Nous avons donc appris communiquer avec les bons termes et surtout ne pas avoir peur de tenir ces personnes au courant. A terme, le mode multi-utilisateurs avec authentification par annuaire LDAP sur linterface Web de Nagios permet EASI de dployer cette application lensemble de ses clients. Il leur suffira tout dabord de remplir leur fiche client pour dterminer ce quils veulent que EASI supervise dans leur rseau. Ensuite, un membre du personnel pourra installer le serveur Nagios Local et le configurer grce aux feuilles de documentation. Dans un futur proche, il serait intressant de superviser les serveurs AS/400 car de nos jours, beaucoup d'entreprises utilisent ces machines. Il serait galement fort utile d'tudier plus en profondeur le protocole SNMP pour CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 92 SUR 95 superviser des imprimantes et mme des programmes gnrant des alertes SNMP. CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 93 SUR 95 A. Bi-&iogra"2ie PILLOU Jean-Franois, Le protocole SNMP, 2005 http://www.commentcamarche.net/internet/snmp.php3 CALECA Christian, SNMP, 20/09/2003 http://christian.caleca.free.fr/snmp FONTAINE Arnaud, ANDESI - Another Debian Site, 30/08/2004 http://www.andesi.org JAMOT Marc, Apt, dpkg et paquets Debian, http://lea-linux.org/software/soft_gere/apt_dpkg.html Apt-get, http://knoppix-fr.org/howto/aptget PILLOU Jean-Franois, Lditeur de texte VI, 2005 http://www.commentcamarche.net/tutlinux/linvi.php3 GALSTAD Ethan, The Official Nagios Website http://www.nagios.org ANGELINI Pierre-Antoine, MOREAU Johan, VANGUERS Christian, Documentation franaise de Nagios Version 1.0, 2003 http://sourceforge.net/project/showfiles.php?group_id=71182 CHAVERON Nicolas, Nagios et la supervision, dcembre 2004 http://www-igm.univ-mlv.fr/~dr/XPOSE2004/nchaveron/Supervision.html GAUCHER Arnaud et THOMAS Yohann, Nagios: un outil de monitoring rseaux pour Linux, 5/10/2004 http://docs.guill.net/article.php3?id_article=2 LE MONNIER Olivier, Traduction de la documentation en ligne de Postfix, 2001 http://linux.crdp.ac-caen.fr/Docs/Postfix MILLE-MATHIAS Baptiste, Mise en place rapide d'un serveur SMTP Postfix, http://baptiste.mille-mathias.info/files/Postfix_SASL/postfix_sasl_debian.pdf BLACK Richard, Network File Copy using SSH, 9/20/1999 http://www.cpqlinux.com/sshcopy.html HURST Mike, Nagios Network Monitoring Software, 20/07/2004 https://www.freebsd.uwaterloo.ca/twiki/bin/view/Freebsd/NagiosInstallation CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 94 SUR 95 PROCACCIA Jehan, Nagios par l'exemple, 15/04/2005 http://www.int-evry.fr/mci/user/procacci/Doc/nagios/nagios.html#htoc21 Nagios Plugin Development, 03/02/2005 http://sourceforge.net/project/showfiles.php?group_id=29880 HARRIS Kate, Configuring nagios commands, 1999 http://www.totkat.org/pages/nconf_commands.shtml DUSART Xavier, Plugins de NetSaint http://xavier.dusart.free.fr/netsaint/documentation-0.0.6/oldplugins.html BOUTELL Thomas, GD Library http://www.boutell.com/gd Nagios Exchange: Nagios Plugins and Add Ons Exchange http://www.nagiosexchange.org MIRTAIN Laurent, LDAP, octobre 1999 http://www-sop.inria.fr/semir/personnel/Laurent.Mirtain/ldap-livre.html PILLOU Jean-Franois et MAUDET Michel, Le protocole LDAP http://www.commentcamarche.net/ldap/ldapinfo.php3 SUN Microsystems, The LDAP Search Tool http://docs.sun.com/source/816-6400-10/lsearch.html CARRIGAN Dave, auth_ldap http://www.rudedog.org/auth_ldap CHUNG FRANCOIS 4 me Ingnieur Industriel Anne 2004-2005 LOUSSE JONATHAN PAGE 95 SUR 95