Jeder Server im Internet wird permanent von Bots angegriffen, die gängige Passwörter durchprobieren. Fail2ban erkennt solche Angriffe automatisch und sperrt die Angreifer-IPs. Ein Muss für jeden Server.
Was ist Fail2ban?
Fail2ban überwacht Log-Dateien auf fehlgeschlagene Anmeldeversuche. Nach einer konfigurierbaren Anzahl von Fehlversuchen sperrt es die IP-Adresse des Angreifers automatisch via Firewall (iptables/nftables).
Installation
Ubuntu/Debian
apt update
apt install fail2banCentOS/RHEL/AlmaLinux
dnf install epel-release
dnf install fail2banDienst aktivieren
systemctl enable fail2ban
systemctl start fail2banGrundkonfiguration
Fail2ban verwendet zwei Konfigurationsdateien:
/etc/fail2ban/jail.conf- Standardwerte (nicht bearbeiten!)/etc/fail2ban/jail.local- Eigene Einstellungen (überschreiben)
Erstellen Sie Ihre lokale Konfiguration:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.localWichtige Einstellungen
[DEFAULT]
# Wie lange eine IP gesperrt wird (10 Minuten)
bantime = 10m
# Zeitfenster für Fehlversuche
findtime = 10m
# Fehlversuche bis zur Sperre
maxretry = 5
# E-Mail-Benachrichtigung (optional)
destemail = admin@example.com
sender = fail2ban@example.com
action = %(action_mwl)sZeitformate
s= Sekundenm= Minutenh= Stundend= Tage
SSH absichern
SSH ist standardmäßig aktiviert. Prüfen Sie die Einstellungen:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1hBei einem anderen SSH-Port:
[sshd]
port = 2222Weitere Jails aktivieren
Apache
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/*error.log
maxretry = 3
[apache-badbots]
enabled = true
port = http,https
filter = apache-badbots
logpath = /var/log/apache2/*access.log
maxretry = 2Nginx
[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/*error.log
maxretry = 3
[nginx-botsearch]
enabled = true
port = http,https
filter = nginx-botsearch
logpath = /var/log/nginx/*access.log
maxretry = 2Postfix (Mailserver)
[postfix]
enabled = true
port = smtp,465,submission
filter = postfix
logpath = /var/log/mail.log
maxretry = 3Dovecot (IMAP/POP3)
[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps
filter = dovecot
logpath = /var/log/mail.log
maxretry = 3Fail2ban verwalten
Status prüfen
# Übersicht aller Jails
fail2ban-client status
# Details zu einem Jail
fail2ban-client status sshdGesperrte IPs anzeigen
fail2ban-client status sshdAusgabe:
Status for the jail: sshd
|- Filter
| |- Currently failed: 2
| |- Total failed: 156
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 3
|- Total banned: 47
`- Banned IP list: 192.168.1.100 10.0.0.5 203.0.113.42IP manuell sperren
fail2ban-client set sshd banip 192.168.1.100IP entsperren
fail2ban-client set sshd unbanip 192.168.1.100Alle IPs eines Jails entsperren
fail2ban-client unban --allIPs von der Sperre ausnehmen
Tragen Sie Ihre eigene IP oder vertrauenswürdige IPs in die Whitelist ein:
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 IHRE_IPWichtig: Ihre eigene IP whitelisten, sonst sperren Sie sich eventuell selbst aus!
Aggressive Konfiguration
Für Server mit vielen Angriffen:
[DEFAULT]
bantime = 24h
findtime = 1h
maxretry = 3
[recidive]
enabled = true
filter = recidive
logpath = /var/log/fail2ban.log
bantime = 1w
findtime = 1d
maxretry = 3Das recidive-Jail sperrt Wiederholungstäter für eine Woche.
Logs prüfen
# Fail2ban-Log
tail -f /var/log/fail2ban.log
# Sperrungen anzeigen
grep "Ban" /var/log/fail2ban.log
# Entsperrungen anzeigen
grep "Unban" /var/log/fail2ban.logKonfiguration testen
Nach Änderungen an der Konfiguration:
# Syntax prüfen
fail2ban-client -t
# Dienst neu laden
systemctl reload fail2banHäufige Probleme
Jail startet nicht
Log prüfen:
journalctl -u fail2ban -n 50Häufige Ursachen:
- Log-Datei existiert nicht
- Falscher Pfad in
logpath - Filter-Regex passt nicht
Eigene IP gesperrt
fail2ban-client set sshd unbanip IHRE_IPDann IP zur ignoreip-Liste hinzufügen!
Angreifer werden nicht gesperrt
Prüfen Sie, ob der Filter funktioniert:
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.confFazit
Fail2ban ist ein essentielles Tool für jeden Linux-Server. Die Installation ist einfach, und mit der Standardkonfiguration ist SSH bereits geschützt. Erweitern Sie den Schutz auf Webserver und Mailserver, und vergessen Sie nicht, Ihre eigene IP zu whitelisten.