1. TeamSpeak-Logpfad finden:
find / -name "ts3server_*.log" 2>/dev/null
2. Filter-Datei erstellen:
sudo nano /etc/fail2ban/filter.d/teamspeak.conf
Einfügen:
[Definition]
failregex = query from <HOST>.*unable to invoke login
client.*<HOST>.*flooding
ignoreregex =
3. In jail.local hinzufügen:
sudo nano /etc/fail2ban/jail.local
Nach dem SSH-Bereich einfügen:
[teamspeak]
enabled = true
port = 9987,10011,30033
filter = teamspeak
logpath = /PFAD/ZU/IHREM/ts3server_*.log
maxretry = 3
bantime = 1h
action = %(action_)s
%(action_abuseipdb)s[abuseipdb_apikey="IHR-API-KEY", abuseipdb_category="14,15"]
4. Fail2ban neu starten:
sudo systemctl restart fail2ban
5. Testen:
sudo fail2ban-client status teamspeak
Wer einen Server im Internet betreibt, kennt das Problem: Ständig versuchen unbekannte Angreifer, sich per SSH anzumelden. Zu jeder Tages- und Nachtzeit wird alles probiert. Dagegen hilft in der Linux-Welt das Tool Fail2ban.
Aber wäre es nicht großartig, wenn wir diese Angreifer automatisch an eine Datenbank melden könnten, damit sich auch andere davor schützen können? AbuseIPDB macht genau das möglich - komplett kostenlos!
# Alte Config löschen (falls vorhanden) sudo rm /etc/fail2ban/action.d/abuseipdb.conf # Aktuelle Version herunterladen sudo wget https://raw.githubusercontent.com/fail2ban/fail2ban/master/config/action.d/abuseipdb.conf -qO /etc/fail2ban/action.d/abuseipdb.conf # API-Key am Ende der Datei eintragen sudo nano /etc/fail2ban/action.d/abuseipdb.conf
Ganz unten in der Datei einfügen:
abuseipdb_apikey = IHR-API-KEY-HIER
⚠️ Wichtig: Verwenden Sie jail.local statt jail.conf!
# jail.local erstellen (falls nicht vorhanden) sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # jail.local bearbeiten sudo nano /etc/fail2ban/jail.local
Suchen Sie den [sshd] Abschnitt und passen Sie ihn wie folgt an:
🔴 Häufiger Fehler: Wenn enabled = true fehlt, wird die Konfiguration aus jail.local ignoriert!
sudo systemctl restart fail2ban
Prüfen Sie, ob beide Actions geladen wurden:
sudo fail2ban-client get sshd actions
Die Ausgabe sollte zeigen:
The jail sshd has the following actions: iptables-multiport, abuseipdb
Falls nur iptables-multiport angezeigt wird:
enabled = true im [sshd] Abschnitt steht# Status des SSH-Jails anzeigen sudo fail2ban-client status sshd # Test-Ban durchführen sudo fail2ban-client set sshd banip 192.0.2.1 # Logs auf AbuseIPDB-Meldungen prüfen sudo grep -i "abuseipdb" /var/log/fail2ban.log | tail -10
Nach 1-2 Minuten sollten Sie Ihre gemeldeten IPs hier sehen:
Falls keine Meldungen erscheinen:
sudo fail2ban-client statussudo tail -f /var/log/fail2ban.logsudo fail2ban-client -d | grep abuseipdbsudo fail2ban-client reload💡 Tipp: Mit einem Werbebanner auf Ihrer Website erhalten Sie 3000 statt 1000 Meldungen pro Tag!
1. Account bei AbuseIPDB erstellen
2. API-Key generieren
3. Aktuelle Config herunterladen:
wget https://raw.githubusercontent.com/fail2ban/fail2ban/master/config/action.d/abuseipdb.conf -qO /etc/fail2ban/action.d/abuseipdb.conf
4. API-Key eintragen und in jail.local die action hinzufügen
# Allgemeiner Status sudo fail2ban-client status # Status eines spezifischen Jails sudo fail2ban-client status sshd # Live-Log überwachen sudo tail -f /var/log/fail2ban.log
Schützen Sie Ihren Webserver vor:
[apache-404] enabled = true port = http,https filter = apache-404 logpath = /var/log/apache2/access.log maxretry = 20 bantime = 1h
[postfix-sasl] enabled = true port = smtp,ssmtp filter = postfix[mode=auth] logpath = /var/log/mail.log maxretry = 3
In /etc/fail2ban/jail.local unter [DEFAULT]:
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 IHRE-IP
Mehrere IPs mit Leerzeichen trennen!
Empfohlene Werte:
# Für SSH (strenger) maxretry = 3 findtime = 10m bantime = 24h # Für Webdienste (moderater) maxretry = 10 findtime = 10m bantime = 1h
# Top 10 gebannte IPs
sudo zgrep -h "Ban " /var/log/fail2ban.log* | awk '{print $NF}' | sort | uniq -c | sort -nr | head -10
# Bans der letzten 24 Stunden
sudo grep "Ban" /var/log/fail2ban.log | grep "$(date '+%Y-%m-%d')"
backend = systemd ist schneller als backend = autodbpurgeage = 7d in jail.local# Datenbank-Größe prüfen ls -lh /var/lib/fail2ban/fail2ban.sqlite3