Bei der Abwehr von unerwünschten Login-Versuchen auf dem SSH-Port 22 und anderen behält Charly gern das ein oder andere Ass im Ärmel und greift deshalb zu Denyhosts statt zu Fail2ban.
Viele Sysadmins benutzen Fail2ban, um unerwünschte Login-Versuche auf dem SSH-Port 22 und anderen im Zaum zu halten. Fail2ban ist aber nicht ohne Alternativen. Heute möchte ich Denyhosts vorstellen. Es leistet zwar grundlegend das Gleiche wie Fail2ban, hat aber noch das eine oder andere Ass im Ärmel.
Denyhosts gehört zum Standardumfang aller gängigen Distros, mein Testsystem ist ein aktuelles Debian. Ich installiere Denyhosts mit »sudo apt install denyhosts«. Dann folgt der wichtigste Schritt der Konfiguration: Ich trage in die Datei »/etc/hosts.allow« die IP-Adressen aller Systeme ein, von denen ich mich ungehindert in das geschützte System einloggen möchte (Listing 1). Vergesse ich diesen Schritt, besteht die Gefahr, dass ich mich dauerhaft aus dem System aussperre – also lieber noch einen Schluck Kaffee nehmen und noch einmal kontrollieren, ob mir da kein Tippfehler unterlaufen ist.
Listing 1
hosts.allow
sshd: 10.0.0.8 sshd: 10.0.0.42 [...]
Denyhosts wird von der Datei »/etc/denyhosts.conf« gesteuert, die sinnvolle Vorgaben enthält, aber wir sehen uns einige davon dennoch etwas genauer an. Die wichtigsten Zeilen der länglichen Konfigurationsdatei sind die, in denen ich einstelle, nach wie vielen Fehlversuchen das System einen Host per Iptables-Regel sperrt. Dabei berücksichtigt Denyhosts, ob sich jemand mit einem Benutzernamen anmeldet, der in der »/etc/passwd« existiert (Listing 2). Habe ich die Werte zu meiner Zufriedenheit angepasst, ist es Zeit, Denyhosts in Betrieb zu nehmen (Listing 3).
Listing 2
denyhosts.conf
# zulässige Fehlversuche: # Username existiert nicht DENY_THRESHOLD_INVALID = 5 # Username existiert DENY_THRESHOLD_VALID = 10 # Username lautet "root" DENY_THRESHOLD_ROOT = 1
Listing 3
Denyhosts starten
$ sudo systemctl restart denyhosts $ sudo systemctl enable denyhosts
Denyhosts schreibt alle Aktivitäten in die Datei »/var/log/auth.log« (Abbildung 1). Überschreite ich einen der Schwellenwerte, wird die IP-Adresse des anklopfenden Systems in die Datei »/etc/hosts.deny« eingetragen und per Iptables gesperrt (Abbildung 2). Als Clou kann sich Denyhosts mit anderen Servern weltweit synchronisieren – die Einstellungen dazu finden sich etwas weiter unten im »Sync«-Abschnitt der Konfigurationsdatei.
Dass Denyhosts anders als Fail2ban eine gesperrte IP-Adresse nicht nach einer gewissen Zeit wieder freigibt, empfinden manche Admins als Nachteil. Bislang hat es aber noch keiner meiner User geschafft, sein Passwort mehr als zehn Mal falsch einzugeben. Es hängt letztlich von der persönlichen Präferenz ab, welches der beiden Tools man einsetzt. Ich tendiere vorsichtig zu Denyhosts. (jlu)





