SSH-Konfiguration¶
SSH (Secure Shell) ist der primäre Zugang zu deinem Server. Eine sichere SSH-Konfiguration ist essentiell.
Warum SSH härten?¶
SSH-Angriffe
SSH-Server sind das häufigste Angriffsziel bei Linux-Servern. Automatisierte Bots versuchen kontinuierlich, sich per Brute-Force-Attacke Zugang zu verschaffen.
pie
title Typische Angriffsversuche pro Tag
"SSH Brute-Force": 85
"Web-Angriffe": 10
"Andere": 5
Vorbereitung¶
Zweite SSH-Verbindung offen halten
KRITISCH: Halte während der gesamten SSH-Konfiguration eine zweite SSH-Verbindung offen. Falls du dich aussperrst, kannst du über diese Verbindung Fehler korrigieren.
1. SSH-Konfiguration sichern¶
Erstelle ein Backup der aktuellen Konfiguration:
2. SSH-Konfiguration bearbeiten¶
Öffne die SSH-Konfigurationsdatei:
Empfohlene Konfiguration¶
Ersetze den Inhalt mit folgender Konfiguration:
AllowUsers anpassen
Ersetze DEIN_USERNAME mit dem tatsächlichen Benutzernamen!
Falsche Einstellung führt zur Aussperrung!
# ============================================
# SSH Server Konfiguration - Gehärtet
# ============================================
# Netzwerk-Einstellungen
Port 2222 # (1)!
AddressFamily inet # (2)!
ListenAddress 0.0.0.0
# Host Keys
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
# Logging
SyslogFacility AUTH
LogLevel VERBOSE # (3)!
# Authentifizierung
LoginGraceTime 30 # (4)!
PermitRootLogin prohibit-password # (5)!
StrictModes yes
MaxAuthTries 3 # (6)!
MaxSessions 3
# Public Key Authentifizierung
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# Passwort-Authentifizierung DEAKTIVIEREN
PasswordAuthentication no # (7)!
PermitEmptyPasswords no
ChallengeResponseAuthentication no
# Weitere Sicherheit
UsePAM yes
X11Forwarding no # (8)!
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
UseDNS no # (9)!
# Nur bestimmte Benutzer erlauben
AllowUsers root DEIN_USERNAME # (10)!
# Idle-Timeout
ClientAliveInterval 300 # (11)!
ClientAliveCountMax 2
# Banner (optional)
Banner /etc/ssh/banner
# SFTP
Subsystem sftp /usr/lib/openssh/sftp-server
# Algorithmen (nur sichere)
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
- Änderung des Standard-Ports
22auf2222 - Nur IPv4. Bei Bedarf
anyfür IPv4+IPv6. - Ausführliches Logging für Sicherheitsanalysen.
- Nur 30 Sekunden Zeit für die Anmeldung.
- KRITISCH: Kein direkter Root-Login mit Password möglich! Der
Root-Login wird für Coolify benötigt, ansonsten könnte dieser mit
nokomplett deaktiviert werden. - Maximal 3 Authentifizierungsversuche.
- KRITISCH: Keine Passwort-Authentifizierung!
- Kein X11-Forwarding (wird nicht benötigt).
- Schnellerer Login ohne DNS-Lookup.
- WICHTIG: Ersetze mit deinem Benutzernamen!
- Idle-Verbindungen nach 10 Minuten trennen.
Optionale SSH-Port-Änderung¶
SSH-Port ändern (Security through Obscurity)
Das Ändern des SSH-Ports reduziert automatisierte Angriffe erheblich, ist aber keine echte Sicherheitsmaßnahme.
Vorteile:
- Weniger Brute-Force-Versuche in den Logs
- Reduziert "Noise" von automatisierten Scans
Nachteile:
- Kein echter Sicherheitsgewinn
- Komplexere Verbindung
- Port-Scans finden den Port trotzdem
3. SSH-Banner erstellen¶
Erstelle ein Login-Banner mit rechtlichem Hinweis:
sudo tee /etc/ssh/banner << 'EOF'
*******************************************************************
* AUTORISIERTE NUTZUNG ERFORDERLICH *
*******************************************************************
* Dieser Server ist privates Eigentum. Unbefugter Zugriff ist *
* verboten und wird strafrechtlich verfolgt. *
* *
* Alle Aktivitäten werden protokolliert. *
*******************************************************************
EOF
4. Konfiguration testen¶
Teste die Konfiguration auf Syntaxfehler:
Keine Ausgabe = Erfolg
Wenn der Befehl keine Ausgabe produziert, ist die Syntax korrekt.
Bei Fehlern siehst du eine Meldung wie:
5. SSH-Dienst neu starten¶
6. Verbindung testen¶
Fenster offen lassen
Schließe dein aktuelles Terminal NICHT!
Öffne ein neues Terminal und teste die Verbindung:
Fehlerbehebung¶
Verbindung abgelehnt
Problem: Connection refused oder Permission denied
Lösung (in der noch offenen Verbindung):
- Prüfe den Benutzernamen in
AllowUsers - Prüfe den SSH-Key in
~/.ssh/authorized_keys - Stelle das Backup wieder her:
Passwort wird abgefragt
Problem: SSH fragt nach dem Passwort statt den Key zu akzeptieren
Lösung:
-
Prüfe die Berechtigungen:
-
Prüfe den Inhalt von
authorized_keys:
7. Root-Login testen¶
Versuche, dich als Root mit Passwort anzumelden (sollte fehlschlagen):
Erwartete Antwort:
Root-Login deaktiviert
Wenn du diese Meldung siehst, ist der Root-Login korrekt deaktiviert.
8. Passwort-Login testen¶
Versuche, dich mit Passwort anzumelden (sollte fehlschlagen):
Erwartete Antwort:
SSH-Konfiguration für den Client¶
Erstelle oder Erweitere deine lokale SSH-Konfiguration für einfacheren Zugang:
Host fcl-tech.de
HostName DEINE_SERVER_IP
User DEIN_USERNAME
Port 2222
UseKeychain yes
AddKeysToAgent yes
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_fcltechde
Nun kannst du dich einfach verbinden mit:
Zusammenfassung¶
Nach Abschluss dieses Abschnitts:
- SSH-Konfiguration gehärtet
- Root-Login für Coolify konfiguriert
- Passwort-Authentifizierung deaktiviert
- Nur SSH-Key-Authentifizierung erlaubt
- Nur spezifischer Benutzer erlaubt
- Sichere Algorithmen konfiguriert