Ein SSH-Server, der aus dem Internet erreichbar ist, wird innerhalb von Minuten von automatisierten Bots attackiert. Mit ein paar gezielten Maßnahmen machst du ihn deutlich sicherer. Diese Anleitung zeigt, wie du deinen SSH-Server absicherst: Key-Login erzwingen, Root-Login und Passwörter abschalten, den Port ändern und mit Fail2ban Angreifer automatisch aussperren. Mit diesen Schritten zur SSH-Härtung reduzierst du die Angriffsfläche deines Servers drastisch – von der Schlüssel-Authentifizierung bis zur Firewall.
- Warum SSH absichern?
- Schritt 1: SSH-Key statt Passwort
- Schritt 2: Root-Login und Passwort-Login deaktivieren
- Schritt 3: Den SSH-Port ändern (optional)
- Schritt 4: Fail2ban installieren
- Schritt 5: Firewall aktivieren
- Konfiguration testen und neu laden
- Weitere sinnvolle sshd-Optionen
- Fail2ban überwachen und IPs entsperren
- Diese Fehler solltest du vermeiden
- Häufige Fragen
- Bringt ein anderer SSH-Port mehr Sicherheit?
- Wie entsperre ich eine von Fail2ban blockierte IP?
- Was tun, wenn ich mich selbst ausgesperrt habe?
- Fazit
Warum SSH absichern?
Standardmäßig lauscht SSH auf Port 22 und erlaubt Anmeldungen per Passwort. Genau darauf zielen Brute-Force-Angriffe: Bots probieren im Sekundentakt gängige Benutzernamen und Passwörter durch. Ein schwaches Passwort oder ein offener Root-Zugang genügt für eine Übernahme. Die gute Nachricht: Mit den folgenden Schritten reduzierst du die Angriffsfläche drastisch.
Schritt 1: SSH-Key statt Passwort
Die wichtigste Maßnahme ist die Anmeldung per SSH-Schlüssel statt per Passwort. Ein Key lässt sich praktisch nicht erraten. Falls du noch keinen hinterlegt hast, folge zuerst unserer Anleitung SSH-Key auf einem Linux-Server hinterlegen. Stelle sicher, dass der Login per Key funktioniert, bevor du im nächsten Schritt das Passwort deaktivierst – sonst sperrst du dich aus.
Schritt 2: Root-Login und Passwort-Login deaktivieren
Öffne die zentrale SSH-Konfigurationsdatei:
sudo nano /etc/ssh/sshd_configSuche die folgenden Zeilen, entferne ggf. das führende # und setze sie auf diese Werte:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication noDamit sind der direkte Root-Login und die Passwort-Anmeldung abgeschaltet. Anmeldungen sind nur noch mit einem gültigen Schlüssel möglich.
Schritt 3: Den SSH-Port ändern (optional)
Ein Wechsel weg von Port 22 stoppt keinen gezielten Angreifer, reduziert aber den Lärm automatisierter Scans erheblich. Ändere dazu in derselben Datei die Port-Zeile, z. B. auf 2222:
Port 2222Denk daran, den neuen Port in deiner Firewall freizugeben (siehe Schritt 5) und dich künftig mit ssh -p 2222 benutzer@server zu verbinden. Betrachte das aber nur als Ergänzung, nicht als echte Sicherheitsmaßnahme.
Schritt 4: Fail2ban installieren
Fail2ban durchsucht die Logdateien und sperrt IP-Adressen, die zu viele fehlgeschlagene Anmeldungen produzieren. Installiere es:
sudo apt update
sudo apt install -y fail2banLege eine eigene Konfiguration an, damit deine Einstellungen bei Updates erhalten bleiben. Erstelle /etc/fail2ban/jail.local mit folgendem Inhalt:
[sshd]
enabled = true
port = 2222
maxretry = 4
bantime = 1h
findtime = 10mDiese Regel sperrt eine IP für eine Stunde, wenn innerhalb von 10 Minuten mehr als vier Fehlversuche auftreten. Passe port an deinen SSH-Port an. Aktiviere und starte den Dienst:
sudo systemctl enable --now fail2banDen aktuellen Status und gesperrte IPs prüfst du mit:
sudo fail2ban-client status sshdSchritt 5: Firewall aktivieren
Eine Firewall schließt alle Ports bis auf die, die du wirklich brauchst. Mit der unkomplizierten ufw geht das schnell – gib zuerst deinen SSH-Port frei, sonst sperrst du dich aus (Details in UFW-Firewall einrichten):
sudo ufw allow 2222/tcp
sudo ufw enableKonfiguration testen und neu laden
Prüfe die SSH-Konfiguration auf Syntaxfehler und lade den Dienst neu. Wichtig: Lass deine aktuelle SSH-Sitzung offen und teste den neuen Zugang in einem zweiten Terminal, bevor du sie schließt:
sudo sshd -t # Konfiguration auf Fehler prüfen
sudo systemctl restart sshWeitere sinnvolle sshd-Optionen
Neben Key-Login und deaktiviertem Root-Zugang gibt es in der /etc/ssh/sshd_config weitere Stellschrauben, mit denen du die Sicherheit erhöhst. Sie begrenzen Login-Versuche, verkürzen Zeitfenster für Angriffe und schränken ein, wer sich überhaupt anmelden darf.
| Option | Empfehlung | Wirkung |
|---|---|---|
MaxAuthTries | 3 | Begrenzt Fehlversuche pro Verbindung |
LoginGraceTime | 30 | Schließt hängende Login-Versuche schnell |
AllowUsers | deinname | Nur genannte Benutzer dürfen sich anmelden |
X11Forwarding | no | Deaktiviert selten benötigtes X-Forwarding |
Trage geänderte Werte in dieselbe Datei ein und lade den Dienst danach neu. Teste jede Änderung wie gewohnt in einer zweiten Sitzung, bevor du die aktuelle schließt.
Fail2ban überwachen und IPs entsperren
Fail2ban arbeitet nach der Einrichtung im Hintergrund, doch du solltest wissen, wie du seinen Status prüfst und eine versehentlich gesperrte Adresse wieder freigibst. Den Status des SSH-Jails inklusive der aktuell gebannten IPs zeigt dir fail2ban-client status sshd. Hast du dich selbst ausgesperrt, entsperrst du deine Adresse mit fail2ban-client set sshd unbanip DEINE-IP.
- Status prüfen:
fail2ban-client status sshdlistet Treffer und gebannte IPs. - IP entsperren:
fail2ban-client set sshd unbanip 203.0.113.5. - Eigene IP schützen: trage sie unter
ignoreipin derjail.localein.
Diese Fehler solltest du vermeiden
Die meisten Aussperrungen entstehen durch Flüchtigkeitsfehler. Deaktiviere den Passwort-Login niemals, bevor der Key-Login nachweislich funktioniert. Änderst du den Port, gib ihn zuerst in der Firewall frei – sonst blockiert ufw deine nächste Verbindung. Und lade die SSH-Konfiguration erst neu, nachdem sshd -t die Syntax ohne Fehler bestätigt hat. Ein zweiter, wichtiger Grundsatz: Halte immer eine unabhängige Notfall-Konsole (VNC oder KVM deines Anbieters) bereit, damit du dich auch bei einem Fehler in der SSH-Konfiguration wieder Zugriff verschaffen kannst.
Häufige Fragen
Bringt ein anderer SSH-Port mehr Sicherheit?
Nur begrenzt. Ein anderer Port reduziert den Lärm automatisierter Massenscans spürbar, hält aber keinen gezielten Angreifer auf. Betrachte ihn als Ergänzung, nicht als Ersatz für Key-Login und Fail2ban.
Wie entsperre ich eine von Fail2ban blockierte IP?
Mit fail2ban-client set sshd unbanip DEINE-IP gibst du eine Adresse sofort wieder frei. Um dich künftig nicht selbst auszusperren, trägst du deine feste IP unter ignoreip in der jail.local ein.
Was tun, wenn ich mich selbst ausgesperrt habe?
Melde dich über die Konsole deines Anbieters (VNC oder KVM) an, die unabhängig von SSH funktioniert. Dort korrigierst du die Konfiguration oder entsperrst deine IP. Deshalb solltest du jede Änderung immer in einer zweiten Sitzung testen.
Fazit
Mit Key-Login, deaktiviertem Root- und Passwort-Zugang sowie Fail2ban und einer Firewall ist dein SSH-Server gegen die überwiegende Mehrheit der Angriffe geschützt. Der wichtigste Grundsatz dabei: Teste jeden Schritt in einer zweiten Sitzung, damit du dich nie aussperrst. Wer regelmäßig Wartungsaufgaben automatisieren will, kombiniert das gut mit Cronjobs per crontab.

