Zum Inhalt springen

fail2ban für den Webserver

Mehr tippen Sie nicht

„Richte auf web03 fail2ban ein: für SSH und für die Anmeldeseite des Portals unter /login. Unser Büro 203.0.113.0/24 darf nie gesperrt werden. Zeig mir danach, was läuft.“

Wer
Der Admin, zwischen zwei Terminen
Server
web03, Webserver des Kundenportals
Ihr Anteil
Ein Satz
Stufe
rwx Ändert allein, siehe die drei Stufen

Problem

Die Logs von web03 sind voll von Anmeldeversuchen: an SSH und an der Anmeldeseite des Portals, Tausende am Tag, die meisten von wenigen Adressen. fail2ban ist die Antwort, aber ein Filter für nginx will geschrieben und geprüft sein, und wer dabei zu streng ist, sperrt Kunden aus, die sich dreimal vertippen, oder schlimmer: das eigene Büro. Darum liegt es seit Monaten.

Gesucht: Sperren für SSH und die Anmeldeseite, nie für das Büro, und danach sehen, was es tut.

Lösung

Ein Satz, und Heinzel Pro zählt erst, was anklopft, schreibt Filter und Jails, startet den Dienst und zeigt die ersten Sperren. Auf „Ändert allein“ wartet nichts davon auf Sie.

Schritt 1: Sie beschreiben die Aufgabe, mit der Ausnahme

Der Satz oben nennt die beiden Türen und die eine Adresse, die nie zugehen darf. Sie wählen web03 und stellen die Stufe auf „Ändert allein“: Ein Dienst, der sperrt, ist Routine, und das Büro steht im Satz.

Eine neue Session in Heinzel Pro: der eingetippte Satz zu fail2ban mit dem Büro als Ausnahme, darunter der gewählte Server web03 und die Stufe „Ändert allein“

Schritt 2: Heinzel Pro zählt, was anklopft

Drei lesende Befehle: die gescheiterten SSH-Anmeldungen der letzten 24 Stunden und ihre Absender, die Fehlversuche an /login, und ob fail2ban schon installiert ist. Der Befund: 1.842 an SSH, 3.127 an der Anmeldeseite, und darunter 41 aus dem Büro, von jemandem, der sich vertippt. Genau der darf nicht gesperrt werden.

Die Session: drei lesende Befehle mit ihrer Ausgabe, die Zählung der Anmeldeversuche an SSH und /login mit den häufigsten Adressen, darunter die Antwort von Heinzel Pro mit dem Befund und dem Vorhaben

Schritt 3: Der Plan steht da, bevor es losgeht

Vier Schritte: installieren, Filter und zwei Jails schreiben und prüfen, Dienst starten, zeigen, was läuft. Dazu die Schwellen, fünf Fehlversuche in zehn Minuten, eine Stunde Sperre, und warum sie so gewählt sind. Auf dieser Stufe gibt niemand den Plan frei; er steht trotzdem da, und Sie lesen hinterher, was Heinzel Pro vorhatte.

Der Plan in der Session: vier Schritte mit Befehl, Server und Einstufung, darunter was schiefgehen kann und wie es zurückgeht, mit dem Vermerk, dass die Session allein ändert

Schritt 4: Heinzel Pro zeigt die ersten Sperren

Zwei Jails laufen. In der ersten Minute sind drei SSH-Adressen und zwei an der Anmeldeseite gesperrt, eine davon in beiden; das Büro steht in den Ausnahmen, der Kollege mit den 41 Fehlversuchen bleibt unbehelligt. Im Journal von web03 stehen der Filter und der Befehl, der eine Sperre von Hand aufhebt.

Die Session danach: der letzte Befehl mit der Ausgabe von fail2ban-client, beide Jails, den gesperrten Adressen und den Ausnahmen, der Journaleintrag für web03 und die Abschlussmeldung von Heinzel Pro