TCP Wrapper Integration


Einleitung

Dieses Beispiel veranschaulicht wie einfach es ist Meldungen über Verbindungsversuche die mittels TCP Wrapper zurückgewiesen werden über Nagios abzuhandeln. Die vorgenommenen Anweisungen gehen davon aus, dass der Rechner der die Alarme generiert (d.h. jener Host auf dem TCP Wrapper aktiviert sind) und jener auf dem Nagios läuft, voneinader unabhängige Rechner sind. Es sind nur wenige Modifikationen erforderlich, wenn Sie beabsichten beide Produkte am selben Rechner laufen zu lassen. Ich gehe davon aus, dass Sie am Nagios Überwachungsrechner den NSCA Dämon und am TCP Wrapper Rechner den NSCA Client (send_nsca) installiert haben.

Service Definition

Zu Allererst müssen Sie für die TCP Wrapper Alarme ein entsprechendes Service in Ihrem Object Configuration File definieren. Wir nehmen an, dass der Host der die Alarme erzeugt Firestorm genannt wird, eine mögliche Service Definition könnte in etwa so aussehen:

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
	}

Wichtig ist, dass dieses Service die Option volatile aktiviert hat. Wir benötigen diese Option um zu gewährleisten, dass wenn immer ein Alarmmeldung einlangt eine Benachrichtigung erfolgt. Beachten Sie auch, dass die Option "Active Checks" (active_checks_enabled) deaktiviert und die Option "Passive Checks" (passive_checks_enabled) aktiviert ist. Dadurch wird das definierte Service nie aktiv überprüft - alle Alarminformationen werden passiv vom Host Firestorm mit Hilfe des nsca client übermittelt.

Configuring TCP Wrappers

Nun ist am Firestorm Host das File /etc/hosts.deny zu modifizieren. Nachdem die TCP Wrapper im Falle von Verbindungsaufbauverweigerungen Alarme an den Monitoring Host richten, müssen Sie eine Zeile hinzufügen, die in etwa wie folgt aussieht:

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

Diese Zeile nimmt an, dass im Firestorm /usr/local/nagios/libexec/eventhandlers/ Verzeichnis ein Skript handle_tcp_wrapper exisitert. Sowohl Verzeichnis- als auch Skriptnamen können beliebig gewählt werden.

Erstellen des Skripts

Abschliessend müssen Sie am Firestorm das handle_tcp_wrapper Skript erstellen, dass die Alarme an den Monitoring Host zurückmeldet. Dieses könnte wie folgt aussehen:

#!/bin/sh

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

Beachten Sie, dass das handle_tcp_wrapper Skript das submit_check_result Skript aufruft um den Alarm an den Monitoring Host zurückzusenden. Das submit check_result Skript könnte unter der Annahme Ihr Monitoring Host wurde Monitor genannt, wie folgt aussehen (Sie werden dieses Skript anpassen und am Firestorm den richtigen Pfad des send_nsca Programms definieren müssen):

#!/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

Zum Abschluss

Sie haben nun alles Erforderliche konfiguriert. Alles was Sie nun noch tun müssen ist am Firestorm den inetd Prozess und Nagios am Monitoring Host durchstarten. Das war's! Wenn nun die TCP Wrapper am Firestorm den Aufbau einer Verbindung verweigern, sollte Nagios die entsprechenden Alarme erhalten. Die Alarmmeldung des Plugins könnte in etwa so aussehen:

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