SSHD Config Generator
Zero-Trust Infrastructure Security

OpenSSH-Server (sshd_config) Härtungs-Konfigurationsgenerator

Erstellen Sie produktionsgehärtete Linux sshd_config-Vorlagen mit erzwungener Public-Key-Authentifizierung, modernen AEAD-Ciphers, strikten Timeouts und deaktiviertem Root-Login.

CVE-2024-6387 RegreSSHion Protection Active
Vorlagen:

Changing to a non-standard port stops 99% of automated port 22 credential bots.

DebianBanner (OS Fingerprinting)
Disabling stops OpenSSH from exposing specific Debian/Ubuntu package versions.
# ==============================================================================
# OpenSSH Server Hardened Configuration (sshd_config)
# Target File: /etc/ssh/sshd_config
# Standards: CIS Linux Benchmark / Mozilla Infosec / NIST SP 800-53
# Generated by ToolsAA: https://toolsaa.com/tools/sshd-config-generator
# ==============================================================================

# ------------------------------------------------------------------------------
# 1. Network & Address Binding
# ------------------------------------------------------------------------------
Port 2222
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

# ------------------------------------------------------------------------------
# 2. Host Key Infrastructure (Ed25519 & RSA)
# ------------------------------------------------------------------------------
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key

# ------------------------------------------------------------------------------
# 3. Logging & Auditing (VERBOSE records key fingerprints for auth tracing)
# ------------------------------------------------------------------------------
LogLevel VERBOSE
SyslogFacility AUTH

# ------------------------------------------------------------------------------
# 4. Authentication & Access Control
# ------------------------------------------------------------------------------
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no
GSSAPIAuthentication no
KerberosAuthentication no
StrictModes yes
MaxAuthTries 3
MaxSessions 3
LoginGraceTime 30
AllowGroups ssh-users wheel

# ------------------------------------------------------------------------------
# 5. Cryptography Hardening (Ciphers, KEX, MACs & HostKeyAlgorithms)
# ------------------------------------------------------------------------------
KexAlgorithms [email protected],curve25519-sha256,[email protected],diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
Ciphers [email protected],[email protected],[email protected]
MACs [email protected],[email protected],[email protected]
HostKeyAlgorithms ssh-ed25519,[email protected],rsa-sha2-512,rsa-sha2-256

# ------------------------------------------------------------------------------
# 6. Session Lifecycle & Security Defenses
# ------------------------------------------------------------------------------
ClientAliveInterval 300
ClientAliveCountMax 2
TCPKeepAlive no
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
GatewayPorts no
PermitUserEnvironment no
Compression no
MaxStartups 10:30:60
UsePAM yes

# ------------------------------------------------------------------------------
# 7. Banners & Information Disclosure
# ------------------------------------------------------------------------------
PrintMotd no
PrintLastLog yes
Banner none
DebianBanner no

# ------------------------------------------------------------------------------
# 8. SFTP Subsystem
# ------------------------------------------------------------------------------
Subsystem sftp internal-sftp
Sicherheits-Bewertung
Score: 100/100(A+)
Krypto-Richtlinie
Post-Quantum & Curve25519
Schwachstellen-Schutz
CVE-2024-6387 Mitigated

Moderne kryptographische Standards

Beschränkt OpenSSH auf Post-Quantum- und Curve25519-Schlüsselaustausch sowie ChaCha20-Poly1305 und AES-GCM AEAD-Chiffren und eliminiert veraltete CBC- und 3DES-Verfahren.

Zero-Trust-Angriffsflächenminimierung

Erzwingt strikte Public-Key-Authentifizierung, sperrt Root-Passwörter, schützt vor RegreSSHion (CVE-2024-6387) und beendet inaktive Geistersitzungen automatisch.

Modulare Drop-In-Dateien & Ausfallsicheres Setup

Erzeugt vollständige Konfigurationsdateien oder moderne conf.d-Dateien sowie ein verifiziertes Bereitstellungsskript mit sshd -t Syntaxprüfung vor dem Daemon-Neustart.

Technische Referenz & Architektur-Leitfaden

OpenSSH-Server (sshd_config) Härtungs-Konfigurationsgenerator — Referenz-Leitfaden

Erstellen Sie produktionsgehärtete Linux sshd_config-Vorlagen mit erzwungener Public-Key-Authentifizierung, modernen AEAD-Ciphers, strikten Timeouts und deaktiviertem Root-Login.

Wichtige Parameter & Steuerelemente

PermitRootLoginenum (no | prohibit-password | yes)

Steuert, ob sich der Root-Superuser direkt über SSH anmelden darf. Die Einstellung 'no' erzwingt die Anmeldung über unprivilegierte Benutzerkonten mit anschließender sudo-Eskalation.

Standard: no
PasswordAuthenticationboolean (yes | no)

Legt fest, ob eine passwortbasierte Authentifizierung akzeptiert wird. Der Wert 'no' deaktiviert Passwörter strikt und erzwingt asymmetrische Public-Key-Authentifizierung.

Standard: no
Ciphersstring list

Bestimmt zulässige symmetrische Verschlüsselungsalgorithmen nach Priorität, forciert moderne AEAD-Modi (chacha20-poly1305, aes256-gcm) und sperrt anfällige CBC-Ciphers.

KexAlgorithmsstring list

Definiert zulässige Schlüsselaustauschalgorithmen (KEX), priorisiert elliptische Kurven (Curve25519) und eliminiert schwache 1024-Bit-Diffie-Hellman-Gruppen.

Standard: curve25519-sha256,[email protected],diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
ClientAliveIntervalinteger (Sekunden)

Legt das Leerlaufzeitintervall in Sekunden fest, nach dem der Server ein Keepalive-Signal über den verschlüsselten Kanal sendet.

Standard: 300
ClientAliveCountMaxinteger

Bestimmt die Anzahl unbeantworteter Keepalive-Pakete, bevor der SSH-Server eine inaktive oder nicht reagierende Sitzung automatisch beendet.

Standard: 2

Profi-Tipps & Best Practices

Führen Sie vor jedem Neustart 'sudo

Führen Sie vor jedem Neustart 'sudo sshd -t' aus, um /etc/ssh/sshd_config auf Syntaxfehler zu analysieren. Wenn der Befehl keine Ausgabe erzeugt, ist die Konfigurationssyntax fehlerfrei.

Trennen Sie niemals Ihre aktuelle

Trennen Sie niemals Ihre aktuelle Terminalsitzung, während Sie sshd neu laden. Öffnen Sie ein zweites Fenster und testen Sie die neue Verbindung ('ssh -i ~/.ssh/id_ed25519 user@host'), bevor Sie sich abmelden.

Bedingte Direktiven in 'Match Group'

Bedingte Direktiven in 'Match Group' oder 'Match User' gelten für alle nachfolgenden Zeilen bis zum nächsten Match-Block oder Dateiende. Platzieren Sie alle globalen Sicherheitsrichtlinien immer vor der ersten Match-Anweisung.

Bei modernen Debian/Ubuntu-Systemen

Bei modernen Debian/Ubuntu-Systemen mit systemd-Socket-Aktivierung ('ssh.socket') müssen Portänderungen per 'systemctl restart ssh.socket' übernommen oder der Dienst dauerhaft auf ssh.service umgestellt werden.

Häufige Fallstricke & Fehlerbehebung

Fehler 'Permission denied (publickey)' nach Deaktivierung der Passwortauthentifizierung.

Stellen Sie sicher, dass ~/.ssh die Rechte 700 ('chmod 700 ~/.ssh') und authorized_keys die Rechte 600 ('chmod 600 ~/.ssh/authorized_keys') besitzt. Das Benutzer-Homeverzeichnis darf zudem für Gruppen oder Andere nicht schreibbar sein (OpenSSH StrictModes).

sshd startet nicht mit 'Bad configuration option' oder 'Unsupported algorithm'.

Führen Sie 'sudo /usr/sbin/sshd -t' aus, um veraltete Optionen oder inkompatible Cipher-Suiten zu lokalisieren. Ältere OpenSSH-Versionen (< 7.6) unterstützen Algorithmen wie curve25519-sha256 möglicherweise nicht.

Verbindungsaufbau scheitert mit Connection Refused oder Timeout nach Portwechsel.

Passen Sie die Firewall an ('ufw allow <port>/tcp' oder 'firewall-cmd --add-port=<port>/tcp --permanent'). Ist SELinux aktiv, muss der neue Port per 'semanage port -a -t ssh_port_t -p tcp <port>' freigegeben werden.

Häufig gestellte Fragen (FAQ)

Worin besteht der sicherheitsrelevante Unterschied zwischen 'PermitRootLogin no' und 'prohibit-password'?▼

'no' blockiert jede direkte Root-Anmeldung unabhängig von der Authentifizierungsmethode. Administratoren müssen sich unprivilegiert einloggen und Rechte via sudo eskalieren. 'prohibit-password' verbietet Passwörter, gestattet Root aber weiterhin die Anmeldung via SSH-Schlüssel (z. B. für automatisierte Backups).

Warum werden CBC-Ciphers und MD5/SHA-1 MACs in gehärteten Konfigurationen untersagt?▼

CBC-Modi (Cipher Block Chaining) sind anfällig für Padding-Oracle-Angriffe (z. B. CVE-2008-5161) zur Klartextrekonstruktion. MD5 und SHA-1 weisen praktische Kollisionsschwächen auf und verletzen regulatorische Standards wie PCI-DSS v4.0, SOC 2 und BSI/NIST-Vorgaben.

Wie kann ich die aktuell tatsächlich wirksamen Laufzeitparameter meines OpenSSH-Servers auslesen?▼

Führen Sie 'sshd -T' auf dem Server aus. Im Gegensatz zum bloßen Betrachten der statischen Konfigurationsdatei liefert 'sshd -T' die evaluierten Laufzeitparameter und alle vom laufenden Daemon aktiv angewendeten Standardwerte.

Wie schützt die Begrenzung von MaxAuthTries vor automatisierten Brute-Force-Attacken?▼

Ein niedriger Wert wie 'MaxAuthTries 3' beschränkt die maximal erlaubten Fehlversuche pro Verbindungsaufbau. In Kombination mit fail2ban oder iptables/nftables werden automatisierte Credential-Stuffing-Angriffe bereits nach minimalen Fehlversuchen blockiert.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →