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