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
- Beitragsbild: pixabay.com