SSH mit DenyHosts sicherer machen

DenyHosts ist ein Linux Werkzeug, um über die Authentifizierungs-Log Anmeldungen gegen Brute Force Angriffe, beispielweise über SSH, zu überwachen. Mehrfach in kurzen Abstand wiederholte fehlgeschlagene Login-Versuche von der gleichen IP Adresse werden ermittelt und durch einen Eintrag der IP in die /etc/hosts.deny geblockt. DenyHosts kann durch einen Cron oder Live als Daemon ausgeführt werden. In dieser Anleitung demonstriere ich die Einrichtung und Nutzung von DenyHosts als Daemon.

Diese Anleitung basiert auf einer Debian etch Distribution. Die Installation auf anderen Linux Derivaten sollte jedoch ähnlich vonstatten gehen. Für weiterführende Informationen lohnt sich ein Blick auf die offizielle DenyHosts Webseite zu werfen.

DenyHosts installieren

Mit dem Befehl apt-get

apt-get install denyhosts

wird zum einen DenyHosts installiert und sofern noch nicht vorhanden, Python mit installiert. Da DenyHosts eine Anwendung die in Python geschrieben ist, ist eine installierte Version von Python zwingend erforderlich. Unter /usr/share/denyhosts ist das Installationsverzeichnis nach absetzen des Befehls zu finden.

DenyHosts konfigurieren

Unter /etc/ findet man nach der Installation die Konfigurationsdatei denyhosts.conf von DenyHosts. Hier werden alle wichtigen Einstellungen für die Verfahrensweise von DenyHosts justiert. Folgend die wichtigsten Einstellungen:

SECURE_LOG = /var/log/auth.log // anhand der Beschreibungen in der denyhosts.conf, muß hier die richtige Wahl der Log-Datei, abhängig von der eingesetzten Distribution, erfolgen. Mit # kann auskommentiert werden

DENY_THRESHOLD_INVALID = 3 // Anzahl erlaubter fehlgeschlagener Einlogversuche von nicht vorhandenen Benutzern

DENY_THRESHOLD_VALID = 3 // Anzahl erlaubter fehlgeschlagener Einlogversuche von vorhanden Benutzern

DENY_THRESHOLD_ROOT = 3 // Anzahl erlaubter fehlgeschlagener Einlogversuche durch root. VORSICHT! Standardwert ist auf 1 begrenzt, wenn man mit dem root Benutzer arbeitet sollte hier erhöht werden.

DENY_THRESHOLD_RESTRICTED = 3 // Anzahl erlaubter fehlgeschlagener Einlogversuche von eingeschränkten Benutzern

ADMIN_EMAIL = mail@el-mediaagentur.com // E-Mail Adresse um über neue geblockte Hosts und/oder verdächtige Einlogversuche informiert zu werden

Alle Weiteren Einstellungen können auf dem Ursprungswert gelassen werden, ansonsten ist ein Blick in die Erklärungstexte der Konfigurationsdatei oder des Handbuches gefragt.

DenyHosts Daemon starten

Mit einem beherzten Absetzen von

/etc/init.d/denyhosts start // normaler Start /etc/init.d/denyhosts start .purge // erlaubt die Variable PURGE_DENY zu nutzen um geblockte Hosts nach der Zeitspanne wieder aus der hosts.deny zu entfernen

auf der Konsole wird DenyHosts gestartet.

Wenn Werte in der Konfigurationsdatei geändert wurden, werden diese erst nach einem Neustart

/etc/init.d/denyhosts restart

in Kraft treten.

Hinweis

Das sportliche Ziel eines Angreifers ist sicherlich Root-Rechte zu erlangen. Wenn man mit dem Benutzer Root per SSH arbeiten muß, empfiehlt es sich über die SSH Konfiguration das direkte Einloggen des Root-Benutzers zu unterbinden. Stattdessen sollte über einen anderen Account, mit minimalen Rechten eingeloggt und dann mit su zu dem Root-Benutzer gewechselt werden. So hat der Angreifer zwei Passwörter als Barriere.

Diese Anleitung ist ein praktischer Leitfaden ohne Gewähr.

Weiterführende Literatur

empfehlenswert sind folgende Bücher:

Druckansicht


Autor: admin
Datum: Montag, 8. September 2008 17:58
Trackback: Trackback-URL Themengebiet: Linux und mehr

Feed zum Beitrag: RSS 2.0 Diesen Artikel kommentieren

2 Kommentare

  1. 1

    Sehr geehrte Damen und Herren,

    ist es möglich “denyhosts” wieder zu deinstallieren? Durch eine Fehlkonfiguration startet “denyhosts” nicht und blockiert somit alle anderen Dienste (confixx) auf dem Server.

    Welche Befehle gibt es, um dies zu deinstallieren?

    Mfg
    Denis

  2. 2

    Hallo Herr Calabro,

    mit

    /etc/init.d/denyhosts {start [args...] | stop | restart [args...] | status | debug | condrestart [args...] }

    können Sie denyhosts steuern. Wenn mit apt installiert wurde, können Sie Pakete mit “apt-get – -purge remove package” deinstallieren. Der Parameter – -purge entfernt hierbei auch Konfigurationsdateien. Wichtig ist, dass Sie einmal die /etc/hosts.deny öffnen und überprüfen, ob IPs geblockt wurden, die nicht geblockt werden sollten und diese Zeilen dann löschen. Was genau haben Sie denn fehlkonfiguriert? Inwiefern werden Dienste blockiert? Startet denyhosts überhaupt, also existriert kein Prozess in dieser oder ähnlicher Form:

    root 7638 0.0 0.0 8396 4908 ? S Jan26 1:24 python /usr/bin/denyhosts.py --daemon --purge --config=/usr/share/denyhosts/denyhosts.cfg

    ?

    Grüße
    N. Liß

Kommentar abgeben