linux-ubuntu-debian security ssh hardening remote-access

SSH Hardening: Security Best Practices (Artikel 027)

Der definitive Guide zur Absicherung des SSH-Dienstes. Von Key-Authentifizierung über Port-Security bis hin zur Deaktivierung unsicherer Protokolle und Passwörter.

# SSH Hardening: Den Zugang zum Herzstück absichern

TL;DR / Management Summary SSH (Secure Shell) ist das wichtigste Werkzeug für Admins – und das beliebteste Ziel für Brute-Force-Angriffe. Eine Standard-Installation ist ein Sicherheitsrisiko. Die drei goldenen Regeln: 1. Deaktivieren Sie Passwort-Authentifizierung (nur Keys!), 2. Verbieten Sie Root-Logins, 3. Nutzen Sie eine 2-Faktor-Authentifizierung oder IP-Whitelisting. Wer diese Schritte umsetzt, reduziert sein Angriffsrisiko um über 90%.


# 1. Einführung & Architektur

Wie sicher ist SSH?

SSH bietet Verschlüsselung und Integrität. Die Schwachstelle ist meist nicht das Protokoll, sondern die Fehlkonfiguration oder schwache Passwörter.

graph LR
    A[Internet / Attacker] --> B{Firewall / UFW}
    B -->|Port 22/2222| C[sshd Daemon]
    C --> D{Check Auth Method}
    D -->|Password| E[High Risk: Brute Force]
    D -->|SSH Key| F[Secure: Cryptographic Proof]
    F --> G[Access Granted]

# 2. Die perfekte sshd_config

Härten der Konfiguration.

Datei: /etc/ssh/sshd_config

# Die wichtigsten Parameter (Enterprise Standard)

# Port ändern (Security through Obscurity, reduziert Log-Spam)
Port 2222

# Protokoll-Version (Immer 2)
Protocol 2

# Login-Einschränkungen
PermitRootLogin no
MaxAuthTries 3
MaxSessions 2

# Authentifizierung
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no

# Sicherheitseinstellungen
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

Wichtig: Bevor Sie PasswordAuthentication no setzen, stellen Sie sicher, dass Ihr SSH-Key funktioniert! Testen Sie die Verbindung in einem neuen Terminal, ohne die aktuelle Sitzung zu schließen.


# 3. SSH-Keys: Der einzige sichere Weg

Weg von Passwörtern.

Nutzen Sie moderne Algorithmen wie Ed25519 statt altem RSA.

# Key generieren (auf Ihrem Client)
ssh-keygen -t ed25519 -C "admin@company.com"

# Key auf den Server kopieren
ssh-copy-id -p 2222 user@server-ip

# 4. Day-2 Operations: Banner & Banner-Management

Rechtliche Hinweise und Abschreckung.

Ein Security-Banner schreckt keine Profis ab, ist aber in vielen Compliance-Richtlinien (z.B. ISO 27001) vorgeschrieben.

Datei: /etc/issue.net

***************************************************************************
*                            LEGAL NOTICE                                 *
* This system is restricted to authorized users only. All activities are  *
* logged and monitored. If you are not authorized, disconnect now!        *
***************************************************************************

Aktivierung in sshd_config: Banner /etc/issue.net.


# 5. Troubleshooting & “War Stories”

Wenn man sich selbst aussperrt.

# Story 1: “Der Key-Lockout”

Symptom: Passwort-Auth wurde abgeschaltet, der lokale SSH-Key wurde gelöscht oder der Admin hat keinen Zugriff mehr auf seinen Laptop. Ursache: Keine Out-of-Band Management Strategie. Lösung: Nutzen Sie die Proxmox Web-Konsole oder IPMI, um sich lokal einzuloggen und die sshd_config temporär wieder zu öffnen. Lektion: Hinterlegen Sie immer einen “Emergency Key” in einem physischen Safe.

# Story 2: “DNS-Hänger bei SSH-Login”

Symptom: Der Login-Prozess dauert 30-60 Sekunden, danach geht es blitzschnell. Ursache: sshd versucht einen Reverse-DNS-Lookup der Client-IP, der in einen Timeout läuft. Lösung: Setzen Sie UseDNS no in der sshd_config. Es hat keinen Sicherheitsgewinn und verursacht nur Probleme.


# 6. Monitoring & Intrusion Prevention

Nutzen Sie Fail2Ban, um IPs automatisch zu blockieren, die mehrfach falsche Logins versuchen (siehe Artikel 028).

# Überwachung der SSH-Logins
journalctl -u ssh -f
# Suche nach fehlgeschlagenen Versuchen
grep "Failed password" /var/log/auth.log

# 7. Fazit & Empfehlung

  • Key-Only: Passwörter haben auf Servern nichts verloren.
  • Port: Das Ändern des Ports (z.B. auf 2222) verhindert 99% des automatisierten Bot-Traffics.
  • MFA: Für extrem kritische Server nutzen Sie Google Authenticator (TOTP) als zweiten Faktor für SSH.

# Anhang: Cheatsheet

Aufgabe Befehl
Config testen (Syntax) sudo sshd -t
Dienst neu starten sudo systemctl restart ssh
Eigene Fingerprints sehen ssh-add -l
SSH-Agent nutzen eval $(ssh-agent) && ssh-add
Aktive Sessions sehen who oder w
Port scannen nmap -p 22 <ip>
Alle Keys eines Users löschen > ~/.ssh/authorized_keys