Server absichern mit Fail2ban

In diesem Tutorial möchte ich euch fail2ban vorstellen. Es is ein tool, welches Logdateien auf bestimmte Ereignisse hin, wie z.B. failed Logins, untersuchen kann und dann entsprechden mit einem Blocking der Source IP reagieren kann. Dies wird durch das Updaten der Firewall Regeln erreicht.

Installiert wird fail2ban auf einem Ubuntu System mittels:

sudo apt install fail2ban

Die Hauptkonfigurationsdatei ist die /etc/fail2ban/jail.conf. Die Entwickler raten aber davon ab, diese Datei selbst zu editieren. Aus diesem Grund erstelllen wir uns eine Kopie:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.d/
cd /etc/fail2ban/jail.d/
mv jail.conf jail.local

Es ist überaus sinnvoll erfolglose Loginversuche auf den SSH Dienst zu überwachen und die Source IP sperren zu lassen. Es könnte sich ja um einen Angreifer handeln, der eine Brute Force Attacke startet.

Wir editieren also die neu erstellte jail.local und fügen als erstes einen allgemeinen Teil ein. In diesem Teil definieren wir die bantime, also wie lange eine IP gesperrt sein soll, den Emailempfänger für den Fall, dass ein Alarm rausgehen soll usw.

[DEFAULT]
ignoreip = 127.0.0.0 192.168.178.11
bantime  = 86400s
findtime  = 120s
destemail = test@example.com
sender = fail2ban@example.com
sendername = Fail2ban
mta = sendmail
action = %(action_mwl)s

Als nächstes ist der SSH Dienst an der Reihe der in den eckigen KLammern gesetzte Wert wird auch Jail genannt. Jeder Dienst bekommt sein eigenes Jail:

[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

Für diesen Eintrag bzw. Dienst ist es auch möglich, andere Werte für z.B. Findtime, Bantime etc. einzurichten. Diese überschreiben dann die Werte aus [DEFAULT]

Wer sich noch tiefer in die Materie einlesen möchte, wir auf Ubuntuusers fündig.

Nachdem wir nun unsere Änderungen durchgeführt haben, starten wir den fail2ban Dienst neu:

sudo systemctl restart fail2ban

Den Status des Dienstes überprüft man mittels:

sudo systemctl status fail2ban

Fail2ban bietet die Möglichkeit zu überprüfen, wie viele jails gerade aktiv sind, wie viele IPs gesperrt sind usw. Dazu führt folgenden Befehl aus:

sudo fail2ban-client status

In meinem Fall sind noch etwas mehr Jails aktiv. Den Status eines einzelnen Jails ruft ihr folgendermassen ab:

sudo fail2ban-client status sshd

Da mein SSH Dienst nicht aus dem Internet erreichbar ist, sind die Einträge leer.

Ein weiterer wichtiger Jail wäre sasl. Mittels dessen überüfen wir fehlgeschlagene Loginversuche auf unser Mailsystem, sofern wir ein solches im Einsatz haben. Ein Tutorial zum Einrichten eines eigenen Mailsystems findet ihr HIER.

Das Jail für sasl sieht so aus:

[sasl]
enabled  = true
port     = smtp,ssmtp,submission
filter   = postfix-sasl
logpath  = /var/log/mail.log
maxretry = 5

Unter „port“ sind nicht die Nummern aufgeführt, sondern deren korrespondierenden Namen lt. /etc/services. Das ist reine geschmackssache. Der konfigurierte Filter „postfix-sasl“ existiert noch nicht, daher legen wir ihn an. Jeder Filter bekommt seine eigene Datei unter /etc/fail2ban/filter.d/

Wir legen die Datei postfix-sasl.conf an:

sudo touch postfix-sasl.conf

Der Inhalt sieht wie folgt aus:

# Fail2Ban filter for postfix-sasl authentication failures
[INCLUDES]
before = common.conf
[Definition]
daemon = postfix/smtpd
failregex = ^%(__prefix_line)swarning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$

Nachdem dies nun erledigt ist starten wir fail2ban neu:

sudo systemctl restart fail2ban

Ich hoffe dieses kurze Tutorial war für euch nützlich. Habt ihr Fragen oder Anregungen, so nutzt gerne die Kommentarfunktion.

Print Friendly, PDF & Email
Abonnieren
Benachrichtige mich bei

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x