Aus Linux-Magazin 01/2022

Aus dem Alltag eines Sysadmin: Denyhosts

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.

Abbildung 1: Denyhosts protokolliert seine Aktionen in der Datei »/var/log/auth.log«.

Abbildung 1: Denyhosts protokolliert seine Aktionen in der Datei »/var/log/auth.log«.

Abbildung 2: Verloren: Iptables sperrt die IP-Adresse.

Abbildung 2: Verloren: Iptables sperrt die IP-Adresse.

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)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 1 HeftseitePreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben