Sshguard

Sshguard arbeitet ähnlich wie Fail2ban. Es untersucht Logs und entscheidet anhand vorgegebener Regeln, ob ein Dienst via Firewall eine Zeit lang gesperrt werden soll. Die Anwendung steht unter einer BSD-Lizenz. Da sie in C implementiert wurde, muss sie keinen Interpreter aufrufen und verbraucht so weniger Speicher- und Prozessorkapazität.

Mit der "Touchiness" verfügt Sshguard zudem über eine interessante Funktion, welche die Sicherheit erhöht. Verstößt ein Angreifer das erste Mal gegen eine Regel, sperrt Sshguard ihn für eine gewisse Zeit T aus. Mit jedem weiteren festgestellten Verstoß n erhöht sich Sperrfrist auf 2(-1)*T. Mit jedem Zugriffsversuch erhöht sich die Dauer der Blockade also exponentiell: Nach dem dritten festgestellten Verstoß bleibt der Angreifer viermal solange ausgesperrt wie am Anfang, nach dem vierten Angriff achtmal so lange, und so fort.

Allerdings arbeitet Sshguard weniger flexibel als Fail2ban und schützt lediglich den SSH-Daemon sowie mehrere Mail- und FTP-Dienste. Sie können auch nicht ohne Weiteres eigene Muster angeben, auf die Sshguard anschließend achtet. Die Anwendung verifiziert auf Wunsch, ob Log-Einträge vom richtigen Dienst kommen und bietet eine Blacklist für Hosts, die mehrmals (Voreinstellung: dreimal) gegen die Regeln verstoßen. Ebenso ist Whitelisting möglich.

Installation und Konfiguration

Wie Fail2ban findet sich auch Sshguard in den Repositories der gängigen Distributionen und lässt sich daher mit den Paketwerkzeugen in Betrieb nehmen. Die manuelle Installation aus den Quellen führt über folgenden Dreisatz:

$ ./configure --with-firewall=<label> ;; make ;; make install

Dabei ersetzen Sie den Platzhalter <label> durch die Bezeichnung der zu verwendenden Firewall (bei Linux meist Iptables oder der TCP-Wrapper).

Anders als Fail2ban konfigurieren Sie Sshguard nicht über Dateien, sondern direkt beim Befehlsaufruf. Vorab gilt es die Firewall darauf vorzubereiten, von Sshguard Regeln entgegenzunehmen. Listing 5 zeigt ein Beispiel für eine IPv4-Firewall. Möchten Sie nicht die komplette INPUT-Chain an die Sshguard-Chain durchreichen, beschränken Sie die weiterzuleitenden Pakete mit -m multiport -p tcp --destination-ports 21,22,110,143 auf die von Sshguard unterstützten Dienste. Da Iptables-Regeln sich mit jedem Systemstart verflüchtigen, müssen Sie sie permanent hinterlegen und beim Booten erneut laden, etwa mit iptables-save und iptables-restore.

Listing 5

#neue Chain hinzufügen
iptables -N sshguard
#INPUT-CHAIN an sshguard weiterleiten
iptables -A INPUT -j sshguard

Iptables arbeitet so, dass stets die erste passende Regel greift. Das bedeutet, dass bei einer bereits konfigurierten Firewall die Regeln für Sshguard mit iptables -A INPUT -j sshguard ganz am Ende landen und eventuell nicht wie erwartet wirken. Abhilfe schafft in diesem Fall der Befehl iptables -I INPUT 1 -j sshguard, der die Regel in der INPUT-Chain an erster Stelle platziert. Damit die Chain Sshguard auch wieder verlässt und weitere Firewall-Regeln abgearbeitet werden, sollte auch hier ein iptables -A sshguard -j RETURN folgen.

Sshguard ab Version 1.5 ordnet jedem Angriff einen Gefährlichkeitsgrad ("dangerousness") zu, der in der Vorgabe bei 10 liegt und den es bei Folgeverstößen aufaddiert. Zwei fehlerhafte Login-Versuche führen also zu einer Gefährlichkeit von 20 und so fort. Die Vorgabe für die Dangerousness definiert die Konstante DEFAULT_ATTACKS_DANGEROUSNESS in der Include-Datei sshguard.h des Quellcodes, per Kommandozeilenparameter lässt sie sich daher nicht ändern.

Sshguard unterstützt die Logging-Systeme Syslog, Syslog-ng, Metalog, Multilog sowie Raw-Log-Dateien. Auf Linux-Servern trifft man am häufigsten Syslog und Syslog-ng an. Ab Version 1.5 kommt Sshguard auch mit dem Log Sucker [5] zurecht, der Log-Dateien selbstständig überwacht.

In Versionen vor 1.5 müssen Sie Log-Einträge über eine Pipe an Sshguard weiterreichen. Um Syslogd dazu bewegen, Sshguard vor v1.5 alle protokollierten Auth-relevanten Ereignisse mitzuteilen, bedarf es folgender Anweisung:

auth.info;authpriv.info | /usr/local/sbin/sshguard

Diese Zeile tragen Sie in der Datei /etc/syslog.conf oder deren Äquivalent ein, wie etwa der rsyslog.conf unter Debian. Für Rechner mit Syslog-ng findet sich eine Anleitung in der Setup-Sektion der Sshguard-Dokumentation [6]. Um Sshguard letztendlich scharf zu schalten, genügt folgendes Kommando:

# sshguard -l /Pfad/zur/Log-Datei/ [-l /Pfad/zu/weiteren/Log-Dateien/] -a Gefährlichkeit -p Sperrzeit -s Vergesslichkeit

Hier definiert -l den Pfad zu den Log-Dateien, -a gibt an, wann Sshguard die Schotten für einen Dienst dicht macht. Als Grundlage dazu dienen die addierten Dangerousness-Werte. Bei einem Wert von 40 (Vorgabe) wären demnach 4 Fehlversuche erlaubt. Bei Versionen vor Sshguard 1.5 entspricht -a einer schlichten Zählvariable, hier würde ein Wert von 40 sehr viele Fehlversuche erlauben.

Der Parameter -p teilt Sshguard mit, wie viele Sekunden es einen attackierenden Host aussperren soll (Vorgabe: 7 Minuten). Die "Vergesslichkeit" hinter -s legt fest, wie viele Sekunden sich Sshguard fehlerhafte Login-Versuche merkt – der Standardwert beträgt hier 20 Minuten. Probiert ein Angreifer in höheren Intervallen Nutzer/Passwort-Kombinationen durch, zählt Sshguard nicht mit und aktiviert keine Firewall.

Um Nervensägen dauerhaft auszusperren, die mehr als einmal unangenehm aufgefallen sind, ergänzen Sie den Aufruf um den Parameter -b [num:]Datei. Hier legt num fest, nach wie vielen Attacken Sshguard den Angreifer in die Blacklist Datei einträgt. Umgekehrt gibt es eine Whitelist, in der Sie Hosts und Netzwerke auflisten, deren Fehlversuche Sshguard ignorieren soll. Hier existiert allerdings wie bei der entsprechenden Fail2ban-Funktion die Gefahr, Angriffe von innen nicht zu erkennen.

Mit -f Service-Code:PID-File weisen Sie Sshguard an, die Herkunft von Log-Meldungen zu überprüfen. Die PID-Files lassen sich nur in Verbindung mit Syslog und Syslog-ng validieren. Der Service-Code identifiziert den fraglichen Dienst [7]; hier steht etwa 100 für den SSH-Daemon, und das PID-File gehört dem zu überwachenden Service.

Erkennt Sshguard, dass eine Log-Meldung von einem anderen als dem zu überwachenden Dienst kam, ignoriert es sie. Stimmt die PID mit dem Service oder einem übergeordneten Prozess überein, wird sie akzeptiert und ausgewertet. Die Entwickler weisen darauf hin, dass die Log-Validierung mit Log Sucker momentan noch nicht richtig funktioniert, und raten, von der Nutzung abzusehen, bis eine neue Version veröffentlicht wurde.

Empfinden Sie Sshguard im Vordergrund als störend, schicken Sie den Prozess gleich nach dem Start in den Hintergrund, indem er ihm ein abschließendes & mitgeben. Um den Dienst nicht nach jedem Booten manuell starten zu müssen, tragen ist die Startanweisung in ein Startskript ein, etwa in /etc/rc.local.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Sshguard 1.5 baut Features aus

    Das Tool Sshguard erkennt Angriffe auf Netzwerkdienste und sperrt attackierende Rechner zeitweilig in der Firewall. Nun ist die Open-Source-Software in Version 1.5 mit neuen Features erhältlich.
  • IP-Adressen von Angreifern bockieren
    Wenn Sie auf dem Linux-PC einen Port für den Zugriff von außen freigeben, müssen Sie mit automatisierten Einbruchsversuchen rechnen. Fail2ban sperrt die IP-Adressen der Angreifer. Wir zeigen die Einrichtung für SSH-Logins und Dateitransfers mit der SSH-basierten FTP-Alternative SFTP.
  • Ubuntu User 02/2011 jetzt am Kiosk
    Das neue Ubuntu-User-Heft ist da. Diesmal heißt der Schwerpunkt Home-Server. Wir zeigen, wie Sie Blogs, Foren oder Wikis aufsetzen, die Sie und Ihre Freunde über das Internet erreichen (etwa via Apache-Server, DynDNS und
    Port Forwarding).
Kommentare

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.