Ich habe mir auf meinem Server mal angeschaut, wer sich so alles versucht dort anzumelden. Dabei ist mir aufgefallen,dass es sehr viele ungültige Zugriffe gibt. Deshalb installiere ich nun fail2ban, um die Anzahl der Zugriffe pro IP zu begrenzen.
Zugriffe anzeigen
Die Zugriffe lassen sich in folgender Datei auslesen:
nano /var/log/auth.log
Fail2Ban installieren
Fail2Ban lässt sich unter Debian sehr einfach installieren.
apt-get install fail2ban
Fail2Ban konfigurieren
Der Pfad der Konfigurationsdatei lautet: “/etc/fail2ban/jail.conf”. Alle Änderungen in dieser Datei werden jedoch bei einem Update von Fail2Ban überschrieben. Um dies zu verhindern erstellen wir uns eine Kopie dieser Datei, die wir dann bearbeiten. Diese Änderungen bleiben auch nach einem Update erhalten.
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Nun öffnen wir die neue Datei:
nano /etc/fail2ban/jail.local
Wenn ihr ein paar Zeilen nach unten scrollt, dann seht ihr folgende Einstellungen:
# "bantime" is the number of seconds that a host is banned. bantime = 600 # A host is banned if it has generated "maxretry" during the last "findtime" # seconds. findtime = 600 maxretry = 3
Dort wird festgelegt, wie lange eine IP gebannt wird und wann es zu einem Ban kommt.
Danach könnt ihr noch eine Email Adresse festlegen.
destemail = eure-mail.de
Nun könnt ihr auswählen, ob ihr bei einem Ban per Email benachrichtigt werden wollt. Folgende 3 Möglichkeiten stehen zur Auswahl:
- action_: nur IP bannen
- action_mw: IP bannen und Email mit whois Informationen zu der gebannten IP an dich verschicken
- action_mwl: IP bannen und Email mit whois Informationen zu der gebannten IP und relevante Log Zeilen an dich verschicken
Ich habe mich für die 3. Möglichkeit entschieden:
action = %(action_mwl)s
Weiter unten seht ihr dann, welche Protokolle aktuell aktiviert sind. Um ein Protokoll zu aktivieren müsst ihr “enabled = true” setzen.
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6 [dropbear] enabled = false port = ssh . . . .
Wenn ihr euren SSH Port geändert habt, dann müsst ihr euren geänderten Port hier eingeben, in der Zeile “port =euer-SSH-port”.
Wie ihr herausfindet, wie euer derzeitiger SSH Port lautet könnt ihr hier nachlesen.
Nun müsst ihr fail2ban nur noch neustarten, damit die Einstellungen übernommen werden.
/etc/init.d/fail2ban restart
Danach solltet ihr euch die Logs / Status anschauen, ob alles funktioniert.
Logs
Hier solltet ihr kontrollieren, ob alles richtig funktioniert.
Dazu öffnet ihr folgende Datei
nano /var/log/fail2ban.log
fail2ban Status
Mit folgendem Befehl lässt sich der aktuelle Status von fail2ban anzeigen
service fail2ban status
Lösungen zu einigen Fehlern
Fehler: Starting authentication failure monitor: fail2banWARNING ‘ignoreregex’ not defined in ‘Definition’. Using default one: ”
Ihr gebt folgenden Befehl ein.
sed -i -e '/^failregex\b/{:a;n;/^$/!ba;i\ \nignoreregex = ' -e '}' /etc/fail2ban/filter.d/postfix-sasl.conf
und startet fail2ban neu.
/etc/init.d/fail2ban restart
Fehler: ERROR Error in FilterPyinotify callback: ‘module’ object has no attribute ‘_strptime_time’
Ihr geht in die Konfiguration und ändert folgenden Wert
nano /etc/fail2ban/jail.local backend = polling
Danach startet ihr fail2ban neu.
/etc/init.d/fail2ban restart