Utiliser Nmap pour générer vos fichiers de configuration Nagios

Date: 25/11/2010 | Catégories: Nagios,Open-source,Planet-libre,Reseau | Tags: ,

ATTENTION: Dans sa version actuelle, le script ne marche qu'avec la version 5 de Nmap. Sinon, le fichier .cfg généré risque de rester désespérément vide...

 

Renseigner des fichiers de configuration de Nagios "à la mimine" n'est pas une activité que je juge  passionnante.

Nous allons voir dans ce billet comment utiliser le scanner de réseau Nmap pour nous aider dans cette lourde tache en développant un petit Script Shell nommé nmaptonagios.sh. Pour les plus impatients, vous pouvez directement aller au dernier chapitre de ce billet pour voir comment installer et lancer le script.

Avant de commencer

Le plus simple est de faire cette découverte du réseau directement depuis votre serveur de supervision hébérgeant Nagios. En effet, les éventuels mécanismes de filtrage de votre réseau doivent déjà permettre a  ce serveur de faire des ping et des requêtes TCP/UDP vers l'ensemble des machines (ou alors votre serveur Nagios ne doit pas bien fonctionner...).

Il faut commencer par installer NMap sur cette machine.

Installation de Nmap sous Ubuntu / Debian:

aptitude install nmap

Récupérer la liste des machine "UP" de votre réseau

Dans la suite de ce billet, je prendrai l'exemple d'un adminsitrateur réseau qui veut découvrir les machines  de son LAN qui utilise la plage d'adresse IP suivante: 192.168.1.0/24.

Pour avoir une liste des adresses ou des noms (si vous avez un serveur DNS à jour) des machines répondant aux PING de votre réseau, il suffit de saisir la commande:

nmap -sP 192.168.1.0/24

Si un nom d'hôte est associé à une adresse il est affiché.

Exemple:

Nmap scan report for 192.168.1.104

Host is up (0.0019s latency).

Nmap scan report for labo-desktop2 (192.168.1.109)

Host is up (0.00056s latency).

Cette première commande va nous servir pour générer la boucle principale de notre script.

Détection des OS

Pour générer dans la configuration de Nagios une description des hôtes contenant l'OS, nous allons utiliser l'option -O de nmap:

nmap -O 192.168.1.109

Selon le système d'exploitation la détection se fait de manière plus au moins simple.

3 lignes sont intéressantes dans le rapport généré par l'option -O:

OS Detail: ***

Running: ***

Service detail: ***

Notre script va donc tester ces variables puis choisir celle qui donne une information la plus précise (sachant que ce test n'est pas fiable à 100%).

Détection des services

On entre dans le vifs du sujet avec la détection des services accessibles sur les machines.

On filtre pour cela les ports TCP ou UDP ouverts (open), puis on vérifie qu'un plugin est disponible dans le répertoire /usr/lib/nagios/plugins (il est possible de changer ce répertoire en modifiant la variable NAGIOS_PLUGINS_PATH au début du script).

Par exemple, si le script détecte que le port TCP/80 (http) est open, alors il va rechercher le plugin /usr/lib/nagios/plugins/check_http et configurer le service correspondant. Si il ne le trouve pas il va se rabattre sur un check_tcp simple sur le port 80.

On utilise la commande nmap suivante:

nmap -sV 192.168.1.109

Installation et utilisation du script nmaptonagios.pl

On commence par récupérer le script:

wget https://raw.github.com/nicolargo/nagiosautoinstall/master/nmaptonagios.sh

chmod a+x ./nmaptonagios.sh

Puis on l’exécute:

sudo ./nmaptonagios.sh 192.168.1.0/24

...

---------------------------------------------------------------

Nagios configuration file: /tmp/nmaptonagios-20101124095216.cfg

---------------------------------------------------------------

A la fin du script, on a un fichier de configuration de Nagios à éditer et à adapter à vos besoins:

vi /tmp/nmaptonagios-20101124095216.cfg

Pour faire prendre en compte ce fichier par Nagios, il suffit de le copier dans le répertoire /usr/local/nagios/etc/objects:

sudo cp /tmp/nmaptonagios-20101124095216.cfg /usr/local/nagios/etc/objects

sudo chown nagios:nagios /usr/local/nagios/etc/objects/nmaptonagios-20101124095216.cfg

Puis de relancer nagios:

sudo service nagios restart

Le script est distribué sous licence GPL v2. Libre à vous de l'adapter, modifier, copier et distribuer !

  • manechou

    Slt. votre lien poratnt sur le script shell nmaptonagios.sh n’est pas dispo. Il renvoit vers une page d’erreur.

  • Ril

    Quand j’arrive a cette étape

    sudo cp /tmp/nmaptonagios-20101124095216.cfg /usr/local/nagios/etc/objects

    sudo chown nagios:nagios /usr/local/nagios/etc/objects/nmaptonagios-20101124095216.cfg

    Le répertoire nagios n’existe pas c’est normal ou ça signifie que j’ai oublié quelque chose l’or de la configuration de nagios ?

  • YAssine

    Bonjour
    Jai executé le script avec la version nmap 5.0 mais le fichier est vide rien se génére as tu une idée?

  • Alucard

    même souci que YAssine

    • Arthur

      La même, fichier vide 🙁

  • victor

    Petite suggestion:

    ajouter une variable hostip pour recuperer l’IP au lieu de l’entrée dns dans le champ adresse:


    hostip=`nslookup $host | grep Address: | grep -v ‘#’ | awk ‘{print $2}’ `

    et modifier la ligne adresse:

    define host{
    use $OS_TEMPLATE
    host_name $host
    alias $host
    address $hostip
    }
    EOF

    Voila pas grand chose, mais bon si certain comme moi ont ce besoin…

    Sinon vraiment cool ce script, j’en ai fait un dans ce genre mail bien plus usine a gaz… je vais m’en inspiré, Merci Nicolargo 😉
    Victor.

  • lucbft

    salut nico,

    meme souci que yacine,

    Jai executé le script avec la version nmap 5.0 mais le fichier est vide rien se génére

    je vois pas de réponse depuis le 20/09.

    y a t il une astuce ? merci

  • Martin Surëh Audebert

    Salut à tous! Je vais faire court, j’ai suivi toute la procédure, et déplacé donc à la fin le fichier ( qui lui contient bien la bonne config ) dans le /usr/local/nagios/etc/objects . Seulement même après avoir fait le chmod, je ne vois toujours rien dans mon nagios. Peut être que c’est le nagios:nagios qui pose soucis? Merci de votre aide si quelqu’un vient encore ici ! 🙂