Der SSH-Port (22) ist das häufigste Ziel automatisierter Brute-Force-Angriffe. Mit ein paar Härtungs-Schritten wird SSH quasi unangreifbar.
1. SSH-Key statt Passwort
Erste und wichtigste Maßnahme: Passwort-Login komplett deaktivieren.
In /etc/ssh/sshd_config:
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication noDann systemctl restart ssh. Vorher sicherstellen dass Key-Login funktioniert!
2. Root-Login sperren
Statt direkt als root: normalen User anlegen, per sudo Admin-Aktionen.
PermitRootLogin noNutzen Sie usermod -aG sudo benutzername um den User in die sudo-Gruppe zu setzen.
3. SSH-Port ändern
Standard-Port 22 ist Ziel automatisierter Scans. Auf einen anderen Port wechseln reduziert Log-Rauschen drastisch:
Port 22345Vorher in Firewall den neuen Port freigeben:
ufw allow 22345/tcpNicht: einen bekannten Alternativ-Port wie 2222 nehmen — Scanner suchen die auch ab. Eher was Krummes wie 22345.
4. fail2ban installieren
Sperrt automatisch IPs die zu oft falsche Login-Versuche haben.
apt install fail2ban/etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 22345
maxretry = 3
findtime = 600
bantime = 36003 Fehlversuche in 10 Minuten → 1 Stunde Sperre.
systemctl enable --now fail2ban5. Login-Rate limiten
Auf UFW-Ebene:
ufw limit 22345/tcpMax. 6 Verbindungsversuche pro 30 Sekunden pro IP.
6. Nur bestimmte User erlauben
AllowUsers admin backupAlle anderen User können sich nicht per SSH anmelden — auch wenn ihr Passwort geknackt wird.
7. Client-Side: SSH-Keys mit Passphrase
Ihre eigenen SSH-Keys sollten mit einer Passphrase verschlüsselt sein. Wenn Ihr Laptop geklaut wird und der Angreifer den Key findet — ohne Passphrase kommt er auf Ihren Server.
8. 2FA für SSH (Google Authenticator)
Für maximale Sicherheit: 2FA zusätzlich zu Key-Login:
apt install libpam-google-authenticator
google-authenticatorIn /etc/pam.d/sshd:
auth required pam_google_authenticator.soIn /etc/ssh/sshd_config:
AuthenticationMethods publickey,keyboard-interactiveDann bei jedem Login: Key + Code aus Google Authenticator.
Prüfen dass alles funktioniert
Neue Session öffnen (nicht die alte schließen!), testen ob Sie reinkommst. Wenn ja: alte Session schließen. Wenn nein: alte Session nutzen um Config zu reparieren.
Log-Analyse
# Fehlgeschlagene Logins
grep "Failed password" /var/log/auth.log | tail -20
# fail2ban aktuelle Sperren
fail2ban-client status sshd