Services volatils


Introduction

Nagios est capable de faire la distinction entre les services "normaux" et les services "volatils". L'option <is_volatil> de chaque définition de service vous permet de spécifier si un service spécifique est volatil ou pas. Pour la plupart des gens, la majorité des services supervisés sera de type non-volatil (i.e. "normal"). Toutefois, des services volatils peuvent se révéler très utiles lorsqu'ils sont utilisés à propos...

A quoi servent-ils ?

Les services volatils sont utiles pour superviser...

Qu'est-ce que les services volatils ont de si particulier ?

Les services volatils diffèrent des services "normaux" de trois façons importantes. Chaque fois qu'ils sont contrôlés quand ils sont dans un état hard non-OK, et que le contrôle retourne un état non-OK (i.e. aucun changement d'état n'a eu lieu)...

Ces événements ne se produisent normalement que lorsque des services sont dans un état non-OK et qu'un changement d'état hard vient de se produire. En d'autre termes, ils ne se produisent que la première fois que le service passe dans un état non-OK. Si des contrôles ultérieurs du service conduisent au même état non-OK, il n'y a aucun changement d'état hard et aucun des événements mentionnés ne se reproduit.

La puissance de deux

Si vous combinez les possibilités des services volatils avec les contrôles passifs de service, vous pouvez obtenir des résultats très utiles. Par exemple, gérer des traps SNMP, des alertes de sécurité, etc.

Que diriez-vous d'un exemple ?... Disons que vous exécutiez le produit PortSentry [Anglais] de Psionic Software [Anglais] (qui est gratuit, soit dit en passant) pour détecter des scan de ports sur votre machine et automatiquement éjecter des intrus potentiels. Si vous voulez que Nagios soit averti des scans de ports, vous pouvez mettre en place ce qui suit...

Dans Nagios:

Dans PortSentry:

Créez un script Shell dans le répertoire /usr/local/nagios/libexec/eventhandlers que vous appelez submit_check_result. Le contenu de ce script Shell doit ressembler à ceci...

	#!/bin/sh
 
	# Write a command to the Nagios command file to cause
	# it to process a service check result
 
	echocmd="/bin/echo"
 
	CommandFile="/usr/local/nagios/var/rw/nagios.cmd"
 
	# get the current date/time in seconds since UNIX epoch
	datetime=`date +%s`
 
	# create the command line to add to the command file
	cmdline="[$datetime] PROCESS_SERVICE_CHECK_RESULT;$1;$2;$3;$4"
 
	# append the command to the end of the command file
	`$echocmd $cmdline >> $CommandFile`

Notez que si vous exécutez PortSentry en tant que root, vous devrez ajouter au script la modification du propriétaire du fichier et les permissions de façon à ce que Nagios et les CGI puissent lire/modifier le fichier de commande. Vous trouverez des détails sur les permissions/l'appartenance du fichier de commande ici.

Et donc qu'arrive-t'il lorsque PortSentry détecte un scan de port sur la machine?