check_rogue – Nagios Plugin zum erkennen von rogue DHCP

Bereits vor einiger Zeit schrieb ich darueber, dass wir bei uns im Wohnheim Probleme mit einem rogue DHCP hatten. Vorlon schrieb in einem Comment, das auch das SANS Diary das Problem beschreibt. Auch Heise war das ganze inzwischen einen Artikel wert! Wir haben bei uns im Internettutorium verschiedene Gegenmassnamen ergriffen, die fuer andere evtl. auch von Interesse sein koennen, deswegen an dieser Stelle mal kurz festgehalten:

Sperrung via iptables

Bei uns in der Firewall wird die gesamte Range in der die „boesen“ DNS-Server stehen auf Port 53 gesperrt. Der Zugriff wird geloggt, und stuendlich checken wir die Logfiles, ob es einen Zugriff gab. Wenn ja, dann gibts ne Mail.

Die iptables-Regeln im Firewall Skript lauten wie folgt:

iptables -F ukr_dns
iptables -X ukr_dns
iptables -N ukr_dns
iptables -A ukr_dns -j LOG -m limit --limit 90/h --log-prefix "FW: MALDNS "
iptables -A ukr_dns -j REJECT
iptables -I FORWARD -p udp --dport 53 -d 85.255.112.0/255.255.255.0 -j ukr_dns
iptables -I FORWARD -p tcp --dport 53 -d 85.255.112.0/255.255.255.0 -j ukr_dns

Der dazugehoerige crontab-Einzeiler-Eintrag lautet wie folgt:

0 *     * * *    root    /bin/grep MALDNS /var/log/syslog | grep -v CRON | \
mail -e -s "MALDNS-Report /bin/date -I" vir-reports@mydomain.tld

check auf rogue DHCP mit Nagios

neben dieser mehr schadensbegrenzenden Massname wenn bereits etwas passiert ist, ueberpruefen wir unser Netz auf rogue DHCP Server mit einem Nagios-Skript. Das Skript ist ein Wrapper zu dhcp_probe.
Leider ist dhcp_probe nicht direkt fuer Debian Linux verfuegbar. Das bedeutet im Klartext, dass ein bisschen Handarbeit angesagt ist, zumal es auch unter Debian Linux erst nach einer Modifikation von libnet funktioniert.

Als erstes muss man natuerlich die benoetigten *-dev Pakete installieren und wenn nicht bereits passiert auch die build-essential

aptitude install libpcap-dev build-essential

Das installieren vom libnet-dev Paket aus apt wuerde das compilieren von dhcp_probe nicht zu einem Erfolg bewegen, da die in Debian etch enthaltene Version eine wichtige Funktion nicht mitbringt. Siehe dazu auch den entsprechenden Eintrag in der INSTALL.dhcp_probe. Deswegen lautet der naechste Schritt libnet herunterzuladen, entpacken und entsprechend zu patchen.

wget http://www.packetfactory.net/libnet/dist/libnet.tar.gz
tar -xzvf libnet.tar.gz

Wie in der bereits verlinkten INSTALL.dhcp_probe unter Punkt 2. beschrieben nun die beiden Dateien ./src/libnet_cq.c und ./include/libnet/libnet-functions.h bearbeiten, den entsprechenden Code unten einfuegen. Der Dreisatz aus ./configure, make sowie make install als root fuehrt einen dann zum gewuenschten Ergebnis.
Ab dieser Stelle ist nun auch ein compilieren von dhcp_probe von Erfolg gekroent.

wget http://www.net.princeton.edu/software/dhcp_probe/dhcp_probe-1.2.2.tar.gz

entpacken, compilieren und installieren. Wenn man bis zu diesem Punkt ohne Fehler gekommen ist, ist schon der grossteil der Arbeit geschafft. Es fehlt noch dhcp_probe zu konfigurieren. Eine Beispiel-Konfigurationsdatei liegt dem Quelltext mit bei. Einfach aus dem entpackten Verzeichnis heraus ein

cp extras/dhcp_probe.cf.sample /etc/dhcp_probe.cf

machen und durchlesen. Der wichtigste Eintrag ist der Punkt legal_server, bei dem evtl. intendiert vorhandene Server angegeben werden sollten. Uebrigens ein guter Punkt bei dem man testen kann, ob dhcp_probe auch gut funktioniert.

Wenn all diese Vorraussetzungen erfuellt sind, kommt es endlich zu dem Nagios wrapper Skript fuer dhcp_probe. Die folgende Datei /usr/lib/nagios/plugins/ ablegen:

Nun noch fix in Nagios ein command und definiert:

/etc/nagios2/commands.cfg

define command{
        command_name    check_rogue
        command_line    $USER1$/check_rogue
        }

und schon kann ich den Check auf dem Client einrichten, auf dem das Skript liegt und dhcp_probe installiert ist. Bei uns sieht das ganze dann so aus:

nag_rogue_ok

nag_rogue_detected

Ja, ich weiss, das das Plugin nicht schoen geschrieben ist, aber es tut seinen zweck. Und an dieser Stelle nochmal herzlichen Dank an Matthias, Alex und Sebastian bei der Hilfe das ganze zu entdecken und zu beheben etc. :-)

Virus im Netz / rogue DHCP

Bei uns im Wohnheim machte sich heute ein Virus breit der auch Rechner von Internettutoren infizierte. Der Virus sah so aus, dass man auf einmal falsche DNS-Servereintraege hatte. Die IPs waren dann auf einmal: 85.255.122.36, 85.255.122.41, oder 85.255.122.60. Server aus der Ukraine.

Verschiedenen Internettutoren war das Problem aufgefallen und es wurden dann auch schnell Massnamen ergriffen. Die betreffenden IP-Adressen wurden bei uns in der Firewall gesperrt und nach einer weiteren Diagnose war auch der entsprechende Rogue-DHCP gefunden. Ich war auf der Arbeit leider mit anderen Dingen beschaeftigt und konnte deswegen im Wohnheim nicht „akut“ an der Suche / Diagnose teilnehmen und helfen, aber danke an Alex und Matthias, es hat alles ein gutes Ende genommen.

Mich interessiert nun aber vielmehr: Wie kann ich bei uns im Netzwerk ungewollte DHCP-Server erkennen? Wie kann ich erkennen, wenn ein DHCP-Server unser Netz stoert?

Nach entsprechendem suchen im Internet bin ich dann auf folgendes gestossen:

  1. Rogue DHCP Detection Plugin for Nagios on RedHat
  2. Rouge Detect

Das Nagios Skript ist auf ein englischsprachiges RedHat Linux determiniert, es wird dann an dieser Stelle bald eines geben was auch mit Debian Linux funktioniert. Stay tuned…

Saudaemliche Oberarschloecher!

Oh man Ihr doofen Idioten von Menschen die Ihr nicht wisst was das Wort Eigentum bedeutet, solange es nicht euch selber betrifft.

Es ist einfach nur asozial, die Waschmaschinen von oben bis unten mit Waschpulver einzusauen – ob Fluessig oder Pulver ist egal – und es dann einfach so liegen zu lassen.
Und noch viel asozialer ist es, wenn ihr eure langsam rieselnden Waschpulverkartons ueber die dort frisch gewaschene, in Koerben oder Tueten liegende, Waesche haltet, so das selbige gleich wieder in die Maschine kann.
Sehr gerne hab ich es dann noch, wenn Ihr meine frisch gewaschene Waesche auf den Boden vor die Maschine schmeisst, weil ihr eure eigenen Tueten auf der Maschine abgestellt habt und dort kein Platz mehr ist.

All diese drei Szenarien sind mir heute an einem Tag passiert, ich habe gesehn wie Ihr ohne Ende rumgesaut habt und es nicht weggemacht habt, auch nicht auf meine Ansprache hin, und ich eine Trommel Waesche gleich drei mal Waschen durfte, weil nach dem ersten mal meine Tuete mit weissen Pulver bestreut war, und beim zweiten Mal meine Waesche neben der Maschine im Dreck lag!

Wenn die Maschinen nicht laufen beschwert Ihr euch und fordert eure Euros zurueck die Ihr in die Muenzsammler geschmissen habt, aber solange alles funktioniert behandelt Ihr die Maschinen und die Waesche anderer wie Dreck und Abfall! Es erfordert echt sehr viel Disziplin von mir um nicht aus Wut einfach mit den gleichen Mitteln zurueckzuschlagen! Arschloecher!