78 Dokumentationen verfügbar

Wissensdatenbank

Fail2Ban Einrichten Anleitung

Zuletzt aktualisiert: 11.01.2026 um 11:52 Uhr

Fail2Ban einrichten: Schutz vor Brute-Force

Fail2Ban überwacht Log-Dateien und sperrt IP-Adressen automatisch nach zu vielen fehlgeschlagenen Anmeldeversuchen. Ein unverzichtbares Tool für jeden öffentlich erreichbaren Server.

Wie funktioniert Fail2Ban?

  1. Überwacht Log-Dateien (SSH, Apache, Nginx, etc.)
  2. Erkennt fehlgeschlagene Anmeldeversuche per Regex
  3. Zählt Fehlversuche pro IP-Adresse
  4. Sperrt IP nach Überschreitung des Limits
  5. Entsperrt automatisch nach Ablauf der Ban-Zeit

Installation

# Ubuntu/Debian
sudo apt update
sudo apt install fail2ban -y

# Status prüfen
sudo systemctl status fail2ban

# Autostart aktivieren
sudo systemctl enable fail2ban

Grundkonfiguration

💡 Wichtig: Bearbeiten Sie nie jail.conf direkt! Erstellen Sie jail.local für eigene Einstellungen.
# Lokale Konfiguration erstellen
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
# Ignorierte IPs (z.B. eigene IP)
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24

# Ban-Dauer in Sekunden (1 Stunde)
bantime = 3600

# Zeitfenster für Fehlversuche
findtime = 600

# Maximale Fehlversuche
maxretry = 5

# E-Mail-Benachrichtigung (optional)
destemail = admin@example.com
sender = fail2ban@example.com
action = %(action_mwl)s

# Ban-Aktion
banaction = iptables-multiport

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
# Fail2Ban neu starten
sudo systemctl restart fail2ban

SSH-Schutz (Standard)

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
findtime = 600

Bei geändertem SSH-Port

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

Nginx-Schutz

# In jail.local hinzufügen:

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 3

[nginx-limit-req]
enabled = true
filter = nginx-limit-req
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 10

[nginx-botsearch]
enabled = true
filter = nginx-botsearch
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 2

Apache-Schutz

[apache-auth]
enabled = true
port = http,https
logpath = /var/log/apache2/error.log
maxretry = 3

[apache-badbots]
enabled = true
port = http,https
logpath = /var/log/apache2/access.log
maxretry = 2

[apache-noscript]
enabled = true
port = http,https
logpath = /var/log/apache2/error.log
maxretry = 3

WordPress-Schutz

Filter erstellen

sudo nano /etc/fail2ban/filter.d/wordpress.conf
[Definition]
failregex = ^<HOST> .* "POST /wp-login.php
            ^<HOST> .* "POST /xmlrpc.php
ignoreregex =

Jail aktivieren

[wordpress]
enabled = true
filter = wordpress
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 3600

Wichtige Befehle

# Status aller Jails
sudo fail2ban-client status

# Status eines Jails
sudo fail2ban-client status sshd

# Gesperrte IPs anzeigen
sudo fail2ban-client status sshd | grep "Banned"

# IP manuell entsperren
sudo fail2ban-client set sshd unbanip 123.45.67.89

# IP manuell sperren
sudo fail2ban-client set sshd banip 123.45.67.89

# Fail2Ban neu laden
sudo fail2ban-client reload

# Jail neustarten
sudo fail2ban-client restart sshd

Logs prüfen

# Fail2Ban-Log
sudo tail -f /var/log/fail2ban.log

# Gebannte IPs suchen
sudo grep "Ban" /var/log/fail2ban.log

# Entbannte IPs suchen
sudo grep "Unban" /var/log/fail2ban.log

Persistente Bans

Standardmäßig gehen Bans bei Neustart verloren. Für persistente Bans:

[DEFAULT]
banaction = iptables-multiport
banaction_allports = iptables-allports

# Oder mit SQLite-Datenbank
dbfile = /var/lib/fail2ban/fail2ban.sqlite3
dbpurgeage = 86400

E-Mail-Benachrichtigung

[DEFAULT]
destemail = admin@example.com
sender = fail2ban@example.com
mta = sendmail

# Aktion mit E-Mail
action = %(action_mwl)s

Action-Typen

Action Beschreibung
action_ Nur Ban (Standard)
action_mw Ban + E-Mail mit Whois
action_mwl Ban + E-Mail mit Whois + Logs

Best Practices

  1. Eigene IP whitelisten: Vermeidet Selbst-Aussperrung
  2. Moderate Ban-Zeiten: Zu lange Bans behindern legitime Nutzer
  3. Logs überwachen: Regelmäßig auf Angriffsmuster prüfen
  4. Backup der Config: Vor Änderungen sichern
  5. Testen: Neue Regeln erst in niedriger Intensität

Troubleshooting

# Regex testen
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

# Debug-Modus
sudo fail2ban-client -d

# Alle Bans aufheben
sudo fail2ban-client unban --all

Weitere Hilfe