Intégration d'un TCP Wrapper


Introduction

Cet exemple explique comment générer aisément des alertes dans Nagios pour des connexions rejetées par un encapsuleur TCP (TCP wrapper). Ces explications supposent que l'hôte pour lequel vous générez ces alertes n'est pas le même que celui sur lequel Nagios est installé. Si ce n'était pas le cas, vous devrez ajuster la configuration à votre environnement. Je suppose également que vous avez installé le daemon nsca sur la machine de surveillance et le client nsca (send_nsca) sur la machine qui génère les alertes TCP wrappers.

Definition du service

Tout d'abord, vous devez définir un service dans votre fichier de configuration des objets pour les alertes de ce type. En supposant que l'hôte émettant les alertes s'appelle firestorm, un exemple de définition pourrait être le suivant:

define service{
	host_name                       firestorm
	service_description             TCP Wrappers
	is_volatile                     1
	active_checks_enabled		0
	passive_checks_enabled		1
	max_check_attempts              1
	contact_groups                  security-admins
	notification_interval           120
	notification_period             24x7
	notification_options            w,u,c,r
	check_command                   check_none
	}

Il est important de noter que l'option volatile est activée, parce que nous voulons être notifié pour CHAQUE alerte survenant. Notez également que les contrôles actifs sont désactivés pour ce service, alors que les contrôles passifs sont activés. Ceci signifie que ce service ne sera jamais contrôlé activement puisque toutes les alertes seront envoyées passivement par le client nsca depuis la machine firestorm.

Configuration du TCP Wrapper

Maintenant, il faut modifier le fichier /etc/hosts.deny sur la machine firestorm. Pour que l'encapsuleur TCP envoie une alerte à chaque connexion refusée, il faut une ligne de ce type:

ALL: ALL: RFC931: twist (/usr/local/nagios/libexec/eventhandlers/handle_tcp_wrapper %h %d) &

Cette ligne suppose qu'il existe un script appellé handle_tcp_wrapper dans le répertoire /usr/local/nagios/libexec/eventhandlers/ sur firestorm. Le répertoire et le nom du script peuvent être changé et adapté à votre environnement.

Ecriture du script

La dernière chose à faire est d'écrire me script handle_tcp_wrapper sur firestorm . Il va envoyer les alertes vers l'hôte de surveillance. Cela donnera une ligne de ce type :

#!/bin/sh

/usr/local/nagios/libexec/eventhandlers/submit_check_result firestorm "TCP Wrappers" 2 "Denied $2-$1" > /dev/null 2> /dev/null

Notez que le script handle_tcp_wrapper appelle le script submit_check_result pour envoyer des alertes à l'hôte chargé de la surveillance. Si celui-ci s'appelle monitor, le script submit check_result pourrait être semblable à ceci (vous devrez éventuellement modifier le script pour spécifier l'emplacement du programme send_nsca sur firestorm):

#!/bin/sh

# Arguments
#	$1 = name of host in service definition
#	$2 = name/description of service in service definition
#	$3 = return code
#	$4 = output

/bin/echo -e "$1\t$2\t$3\t$4\n" | /usr/local/nagios/bin/send_nsca monitor -c /usr/local/nagios/etc/send_nsca.cfg

Finition deux couches et vernis :-)

Maintenant que tout est configuré, il suffit de redémarrer le programme Nagios sur l'hôte de surveillance. Il faut aussi redémarrer inetd sur firestorm.C'est tout ! Quand le TCP wrapper sur firestorm refusera une connexion, vous devriez recevoir des alertes via Nagios. Cela ressemblera à cela:

Denied sshd2-sdn-ar-002mnminnP321.dialsprint.net