Einleitung
Dieses Beispiel beschreibt wie auf einfache Art und Weise via Nagios Alarme für Portscans generiert werden können, die durch das Softwareprodukt (Psionic Portsentry) aufgezeichnet worden sind. Bei den folgenden Anweisungen wird angenommen, dass Portsentry und Nagios auf getrennten Servern laufen. Es sind wenig Modifikationen notwendig, wenn Sie beide Produkte am selben Rechner laufen zu lassen wollen. Ich gehe davon aus, dass am Überwachungsrechner der NSCA Dämon und am Portsentry Server der NSCA Client (send_nsca) läuft.
Service Definition
Zu Beginn müssen Sie für die Portscan Alarme ein entsprechendes Service im Object Configuration File definieren. Jenen Host, der die Alarme erzeugt, nennen wir Firestorm. Ein Beispiel für die Service Definition könnte wie folgt aussehen:
define service{
host_name Firestorm
service_description Port Scans
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. Die Option "Active Checks" (active_checks_enabled) ist deaktiviert. Der in der check_command Option verwendete Befehl wird nicht wirklich verwendet - diese Option dient nur zur Vermeidung von Nagios Fehlermeldungen. Passive Checks bleibt aktiviert, alle Portscan Alarminformationen werden passiv über den NSCA Client des Firestorm Host abgesetzt.
Portsentry Konfiguration
Um Portsentry so einzurichten, dass es einen Alarm an Ihre Monitoring Box sendet wenn Portsentry einen Portscan entdeckt, müssen Sie eine entsprechende Anweisung für die Option KILL_RUN_CMD im Portsentry Configfile (portsentry.conf) definieren. Diese könnte wie folgt aussehen:
KILL_RUN_CMD="/usr/local/nagios/libexec/eventhandlers/handle_port_scan $TARGET$ $PORT$"
Diese Anweisungszeile geht davon aus, dass im /usr/local/nagios/libexec/eventhandlers/ Verzeichnis des Firestorm Rechners ein Skript namens handle_port_scan existiert. Sowohl Verzeichnisname, als auch Skriptname sind frei wählbar.
Erstellen des Skripts
Zum Abschluss müssen Sie das handle_port_scan Skript am Firestorm, dass die Alarmmeldungen an den Monitoring-Host zurücksendet, erstellen. Das könnte in etwa so aussehen:
#!/bin/sh
# Arguments:
# $1 = target
# $2 = port
# Submit port scan to Nagios
/usr/local/nagios/libexec/eventhandlers/submit_check_result firestorm "Port Scans" 2 "Port scan from $1 on port $2. Host has been firewalled."
Beachten Sie, dass das handle_port_scan Skript submit_check_result aufruft, um den Alarm an den Monitoring Host zurückzusenden. Unter der Annahme Ihr Monitoring Host wird Monitor genannt, könnte das submit check_result Skript in etwa so aussehen (Sie werden dieses Skript anpassen und und den richtigen Pfad des send_nsca Programms auf dem Firestorm 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. Sie müssen nun den Portsentry Prozess am Firestorm Rechner und Nagios auf ihrem Monitoring-Server durchstarten. Das war's! Wenn nun die Portsentry Software am Firestorm Rechner einen Portscan entdeckt, sollten diese Alarme nun über Nagios sichtbar sein. Die Alarmmeldung des Plugins könnte in etwa so aussehen:
Port scan from 24.24.137.131 on port 21. Host has been firewalled.