Login-Screen

SSH Login mit Fail2Ban absichern

Jeder kennt es, unzählige fehlgeschlagene Login-Versuche machen sich in euer SSH Log-Datei (/var/log/auth.log) breit.
Diese sehen z.B. wie folgt aus:

May 3 06:55:46 servername sshd[755]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=115.xxx.xxx.xxx user=root
May 3 06:55:48 servername sshd[755]: Failed password for root from 115.xxx.xxx.xxx port 53333 ssh2

Es kann mehrere Gründe haben, warum solche Eintrage in ihrer Log-Datei auftauchen:

  • Der entferne Benutzer hat ausversehen eine falsche Server-IP verwendet. Die Anzahl der versuche sollte in diesem Fall gering sein.
  • Sie sind Opfer eine Brut-Force Attacke geworden und der entferne Benutzer hat mit oft verwendeten Passwörtern versucht, Zugriff auf ihr System zu erlangen. Hier ist die Anzahl der Login-Versuche deutlich höher.

Die Lösung für dieses Problem ist relativ einfach: Der Einsatz von Fail2Ban.

Was ist Fail2Ban?

Fail2Ban ist ein auf Python basierendes Programm das verschiedene Server-Dienste vor unerlaubtem Zugriff schützen kann. Das Programm sperrt die IP des entfernten Benutzers nach einer festgelegten Anzahl von Fehlversuchen für eine bestimmte Zeit. So kann ein Angreifer z.B. nach 4 Fehlversuchen für 2 Stunden gesperrt werden.

Fail2Ban installieren:

Um Fail2Ban zu installieren, loggen sie sich mit dem Root-Benutzer auf ihren Server ein und führen folgenden Befehl in der Shell aus:

apt-get install fail2ban -y

Fail2Ban konfigurieren:

Nachdem wir nun Fail2Ban installiert haben, müsse wir es noch konfigurieren.
Im ersten Schritt erstellen wir eine lokale Konfigurationsdatei indem wir die Beispielkonfiguration kopieren:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Im nächsten Schritt öffnen sie die neu erstelle Konfigurationsdatei mit einem Editor, z.B. nano und suchen in dieser Datei nach dem Eintrag „# SSH servers“

nano /etc/fail2ban/jail.local

Unter diesem Eintrag finden sie die Zeilen zum Konfigurieren der SSH Protection.
Passen sie diese wie folgt an:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 4

Unsere abgeänderte Konfiguration bewirkt, dass ein Angreifer nach 4 Versuchen (maxretry = 4)
für 10 Minuten gesperrt wird.

Nun speichern wir diese Konfiguration (Strg + O bei nano) und laden den Dienst anschließend neu, um den Schutz zu aktivieren:

systemctl restart fail2ban.service

 

Bildquellen

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.