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

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 http://svn.nicolargo.com/nagiosautoinstall/trunk/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 !

Vus : 1006
Publié par Nicolargo : 402