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…

Viele Server updaten

Wer mehr als zwei oder drei Server betreut, den kennt sicherlich das Problem, dass man den Ueberblick ueber den aktuellen Updatestatus der Systeme verliert. Damit mir das nicht passiert nutze ich Nagios mit dem schoenen Plugin check_debian_packages.

Wenn es jetzt ein Update gibt, dann hab ich mich bisher auf jeder Maschine von Hand per SSH eingeloggt und dann die Updates installiert. Ab einem gewissen Zeitpunkt eine sehr zeitaufwendige Geschichte. Zu Zeitaufwendig ab einer gewissen Anzahl zu betreuender Server.

Die Nutzung von Tools wie pssh, cluster ssh, oder onall waere jetzt sicherlich eine Loesung aber da ich keine bestehende ssh-key-infrastruktur zu allen Servern habe und es auch erstmal eine „schnelle“ Loesung tut heute erstmal eine for-Schleife in bash was seine Dienste aber fuer mich erstmal erledigt. onall finde ich interessant und dazu gibts dann spaeter mal was ;-)

#!/bin/bash
SERVERS=“1.1.1.1 2.2.2.2 3.3.3.3″
USR=“USERNAME“

for host in $SERVERS
do
ssh $USR@$host ’sudo aptitude upgrade‘
done

Nagios zur Druckerueberwachung

Drucker sind mit eines der Leidwesen eines jeden Administrators. Steckengebliebene Druckauftraege kann man oft noch leicht remote aus der Queue loeschen. Aber dann wird es auch schon haerter. Sie fressen Papier das umstaendlich wieder irgendwo herausgesucht werden muss, leere Papierfaecher fuehren zu endlosen Supportanfragen, genau wie leerer Toner oder nicht ganz geschlossene Abdeckklappen. Viele User schaffen es auch nicht aus den Lampen und Symbolen auf den Druckern schlau zu werden, so dass oft nur ein Abstecher vor Ort uebrig bleibt. Wie gut ist es dann, wenn der Admin schnell und uebersichtlich einen Status des Druckers geliefert bekommt, bzw. noch viel besser bei auftretenden Problemen schon gleich frueher gewarnt wird.

Fuer alle Administratoren die Nagios als Monitoringsystem verwenden, gibt es ein wundervolles Plugin von der Firma Ciphron zur Verfuegung gestellt: check_printer, dass es erlaubt Drucker sehr gut mit Nagios zu monitoren. Das Plugin ist auf dem CIPHRONs CORPORATE BLOG genauer vorgestellt.

In Nagios ist es sehr schnell installiert und eingerichtet. Ich gehe im folgenden von einem Debian System aus.

Das Plugin herunterladen und in /usr/lib/nagios/plugins/ abspeichern. Da es in PHP geschrieben ist und SNMP braucht muessen entsprechende Pakete installiert sein, aptitude install php5-cli php5-snmp hilft bei Bedarf weiter. Dann muss ein ein checkcommand definiert werden:

define command{
     command_name    check_printer
     command_line    /usr/bin/php $USER1$/check_printer $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$
     }

und schon kann es losgehen. Wenn ein Drucker bereits als Host definiert ist, kann es losgehen mit dem definieren von entsprechenden Services. Um Tonerinformationen herauszubekommen reicht schon ein einfaches:

define service{
    use                              generic-service
    host_name                        MeinDrucker
    service_description              TONER
    contact_groups                   drucker-admins
    check_command                   check_printer!123.123.123.123!public!toner!1!0.1
    }

Die Syntax ist !IP!SNMP-Community!Welche Info!Wert!Warnlevel!. Das Beispiel gibt fuer einen Drucker MeinDrucker eine Warnung, wenn der Fuellstand des ersten Toners (meistens Schwarz) unter 10% faellt.

Das Plugin erklaert seine Funktionen selber sehr gut, schmeisst ueber fast alles Informationen aus und kann Warnungen beim Unterschreiten verschiedener Level etc. ausgeben. Echt superklasse und superpraktisch!!