Dienstag, 25. September 2007

ssh und denyhosts

Basierend auf den Erfahrungen mit dem Auto-Blacklisting habe ich mal ein bissel weiter gegoogelt und bin über das Python-Tool DenyHosts gestolpert.

Dieses Programm scannt die Log-Datei, in die sshd loggt (bei Debian /var/log/auth.log) und erkennt fehlerhafte Login-Versuche. Die IP-Adresse, von der diese Versuche ausgehen, wird dann in die Datei /etc/hosts.deny geschrieben. Alle IP-Adressen, die dort drin stehen, werden für bestimmte Dienste (in meinem Falls sshd) gesperrt und eine Verbindung wird sofort wieder mit "connection refused" beendet.

Die Installation gestaltet sich auf der NSLU2 extrem einfach, nachdem eine Suche in aptitude enthüllt hat, dass es das Paket für Debian vorkonfektioniert gibt.

Los geht's (eventuell braucht ihr noch Python vorneweg):

//NSLU2~# aptitude install denyhosts

Die Meldungen von aptitude lassen erkennen, dass der Dienst nach der Installation schon gleich als Daemon läuft, was wir auch gleich bestätigen können:

//NSLU2~# ps -efagrep deny
root 23409 1 0 10:48 ? 00:00:02 python /usr/sbin/denyhosts --daemon --config=/etc/denyhosts.conf --config=/etc/denyhosts.conf

Dies enthüllt auch fix den Pfad zur Konfig, die notwendigen Einstellungen kann man jetzt problemlos mit dem Lieblingseditor der Wahl vornehmen - alle relevanten Debian-Spezifika sind allerdings schon eingetragen. Soviel nur vorweg: Ich habe selten eine Konfigurationsdatei gesehen, die so super kommentiert ist. Dazu braucht man hier wirklich nichts erklären.
Man kann u.a. detalliert einstellen, wann und wie lange ein Host gesperrt werden soll. Erste Tests haben gezeigt, dass der Mechanismus sehr gut funktioniert, so dass ich die Auto-Blacklist wohl erstmal wieder entfernen werde.

Starten und stoppen funktioniert wie üblich mit

//NSLU2~# /etc/init.d/denyhosts stop (bzw.) start (oder) restart

Es gibt noch zwei erwähnenswerte Features von denyhosts:

  • Synchronisation: Man kann die IP-Listen mit einem zentralen Server abgleichen, so dass man auch die "Sperrungen" andere denyhosts-Anwender mitbekommt und bei sich nutzen kann.
  • Email: Das Programm kann Emails als "Alarme" verschicken, wenn wieder jemand in die deny.hosts gewandert ist - tolles Gimmick!

Auch dieser Mechanismus erschwert einem Angreifer das Erraten von Passwörtern, am sichersten geht man aber weiterhin mit asymmetrischen Schlüsseln. Ebenso ratsam ist es, den Standard-Port von 22 auf etwas anderes (am besten oberhalb von 1024) zu legen.

Noch ein Hinweis:
Bei mir hat denyhosts beim ersten Start die existierende Log-Datei nach Fehl-Logins gescannt und gleich eine passende hosts.deny angelegt. Das führte zu dem Effekt, dass der eine Rechner im Heimnetz, von dem ich die Logins probierte, gleich erstmal auf die schwarze Liste kam.

Insgesamt ist es immer ein zweischneidiges Schwert: Falls jemand von einer IP-Adresse aus fehlerhafte Zugriffe erzeugt, die dann zur Aussperrung führen, dann ist das besonders ärgerlich, wenn es die eigene IP war ;)

blog comments powered by Disqus

Design von Dicas Blogger, angepasst durch Mario Ruprecht