SSH ist das wichtigste Tor zu deinem Server – und damit auch das beliebteste Angriffsziel. Mit Fail2Ban kannst du verdächtige Loginversuche automatisch blockieren. In Kombination mit einer GeoIP-Filterung sperrst du zusätzlich ganze Länder aus, von denen du keinen Zugriff benötigst.
In diesem Tutorial zeigen wir, wie du beides auf einem Ubuntu Server einrichtest.
1. Voraussetzungen
- Ubuntu Server (22.04 oder neuer)
- Root- oder Sudo-Zugriff
- SSH läuft auf Standard-Port oder benutzerdefiniertem Port
2. Fail2Ban installieren
Installiere Fail2Ban aus den offiziellen Repositories:
sudo apt update sudo apt install fail2ban -y
Starte und aktiviere den Dienst:
sudo systemctl enable --now fail2ban
3. Grundkonfiguration
Erstelle eine lokale Kopie der Standardkonfiguration:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
Suche nach dem Abschnitt [sshd] und aktiviere ihn:
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 1h findtime = 10m
Erklärung:
maxretry = 3: Nach 3 Fehlversuchen wird die IP gesperrt.bantime = 1h: Sperre dauert 1 Stunde.findtime = 10m: Zeitraum, in dem Fehlversuche gezählt werden.
Anschließend Dienst neu starten:
sudo systemctl restart fail2ban
4. Status prüfen
Um zu sehen, ob Fail2Ban aktiv ist:
sudo fail2ban-client status sshd
Hier siehst du die aktuell gebannten IP-Adressen.
5. GeoIP-Filterung einrichten
Mit der GeoIP-Filterung kannst du Zugriffe aus bestimmten Ländern blockieren – z. B. alles ausser Schweiz und Deutschland.
Dazu benötigst du iptables und das GeoIP-Modul:
sudo apt install xtables-addons-common libtext-csv-xs-perl libmoosex-types-netaddr-ip-perl libnet-cidr-lite-perl -y sudo xtables-multi geoipupdate
Aktualisiere die GeoIP-Daten:
sudo geoipupdate
Dann kannst du z. B. nur CH und DE zulassen:
sudo iptables -A INPUT -p tcp --dport 22 -m geoip ! --src-cc CH,DE -j DROP
Damit blockierst du alle SSH-Verbindungen, die nicht aus der Schweiz oder Deutschland stammen.
Tipp:
Wenn du Docker nutzt, setze diese Regel besser auf der Host-Firewall, nicht in Container-Netzwerken.
6. Regeln dauerhaft speichern
Damit die GeoIP-Regel nach einem Neustart aktiv bleibt:
sudo apt install iptables-persistent -y sudo netfilter-persistent save
7. Kombination mit UFW (optional)
Wenn du UFW verwendest, kannst du Fail2Ban damit kombinieren.
In /etc/fail2ban/jail.local einfach den banaction-Wert anpassen:
banaction = ufw
So verwaltet Fail2Ban die Sperren direkt über UFW.
8. Sicherheit weiter erhöhen
Weitere sinnvolle SSH-Härtungen:
- Root-Login deaktivieren:
PermitRootLogin no
- Nur bestimmte Benutzer zulassen:
AllowUsers deinuser
- Zwei-Faktor-Authentifizierung aktivieren (siehe dein eigener Blog zu „2FA für SSH“)
- Standard-Port ändern (z. B. 2222 statt 22)
9. Fazit
Mit Fail2Ban und einer GeoIP-Filterung schützt du deinen Ubuntu-Server effektiv vor Brute-Force-Angriffen.
Fail2Ban sperrt automatisch verdächtige IPs, während GeoIP-Regeln ungewollte Länder ausschliessen.
Das Ergebnis: weniger Logeinträge, weniger Angriffe und deutlich mehr Sicherheit – bei minimalem Aufwand.
Tipp:
Kombiniere Fail2Ban mit einem zentralen Monitoring-Tool wie Grafana oder Graylog, um Loginversuche und Sperren visuell zu überwachen.