Files
2025-07-02 14:34:34 +02:00

3.9 KiB
Raw Permalink Blame History

🔐 SSH Secure Shell

Definition & Zweck

  • SSH ist ein sicheres Protokoll für entfernte Verbindungen zwischen Client & Server.
  • Ersatz für unsichere Protokolle wie Telnet, FTP, R-Login, RSH, etc.
  • Unterstützt: Datenverschlüsselung, Authentifizierung, Integrität, Komprimierung
  • SSH agiert als Tunnelsystem, transportiert z.B. SMTP, POP, X11 sicher.

🧱 ARCHITEKTUR

SSH besteht aus 3 Schichten:

  1. Transportschicht-Protokoll:

    • Authentifiziert Server, sichert Vertraulichkeit & Integrität.
    • Optional: Kompression.
  2. User-Authentifizierungsprotokoll:

    • Authentifiziert Benutzer gegenüber dem Server.
  3. Verbindungsprotokoll:

    • Multiplexing mehrerer Kanäle über eine SSH-Verbindung.

🔐 SICHERHEIT

  • Verschlüsselungsalgorithmen: AES, DES, Blowfish, ArcFour, CAST128, Twofish
  • Key Exchange: RSA-basierte, asymmetrische Schlüsselaustauschverfahren
  • Authentifizierung: asymmetrisch (Public/Private Key)
  • Keine Schlüssel werden dauerhaft gespeichert (nur temporär im Speicher)

🗝️ AUTHENTIFIZIERUNG

1. Host-bezogen

  • IP-basiert (unsicher)
  • RSA-basiert:
    • Public Key wird auf Server gespeichert
    • Client beweist Besitz des Private Keys

2. User-bezogen

  • RSA-Authentifizierung mit Challenge-Response
  • Passwort (verschlüsselt übertragen, aber weniger sicher)
  • RHost-RSA: Mischung aus IP + RSA

🔐 SCHLÜSSELPAARE

  • Jeder Client/Host besitzt ein eigenes RSA/ECDSA-Schlüsselpaar
  • Tools: ssh-keygen, PuTTYgen
  • Private Key: bleibt geheim auf Client
  • Public Key: wird auf Server (z.B. in authorized_keys) hinterlegt

🔁 VERBINDUNGSAUFBAU (Ablauf)

  1. TCP-Verbindung vom Client zum Server

  2. Protokoll- & Versionsaustausch

  3. Umstieg auf binäres SSH-Protokoll

  4. Server sendet:

    • Public Host Key (langfristig)
    • Public Server Key (flüchtig, stündlich neu)
  5. Austausch der unterstützten Algorithmen

  6. Client generiert 256-Bit Sitzungsschlüssel

  7. Verschlüsselt diesen mit beiden Server-Keys → sendet verschlüsselt

  8. Server entschlüsselt mit privaten Keys

  9. Server schickt Quittung → verschlüsselte Verbindung aktiv

  10. Client authentifiziert sich

  11. Sitzung wird eingerichtet


🧠 SCHLÜSSELMANAGEMENT

  • Private Schlüssel:

    • Nie weitergeben, mit Passphrase sichern
    • Auth Agents wie ssh-agent, Pageant speichern Keys im Speicher
  • Public Keys:

    • Nur vertrauenswürdige auf Server hinterlegen

🛡️ SICHERHEITSFEATURES & ABSICHERUNG

  • MiM-Angriffe können durch Key-Verifikation verhindert werden

  • Passwort-Auth deaktivieren (empfohlen):

    • Konfigurierbar in sshd_config: PasswordAuthentication no
  • 2FA möglich

  • Analyse-Tool: ssh-audit zur Prüfung von Konfiguration und Sicherheit


🔧 BEFEHLE (OpenSSH)

Befehl Beschreibung
ssh Verbindung zum Server
sshd SSH-Serverdienst
ssh-agent Key-Agent
ssh-add Keys zum Agent hinzufügen
scp Dateiübertragung
sftp sicherer FTP-Ersatz
ssh-keygen Schlüsselpaar erzeugen
ssh-keyscan Schlüssel von Hosts abrufen
sftp-server Serverseitige SFTP-Komponente

📦 SSH-PROTOKOLLVARIANTEN

Variante Merkmale
SSH1 unsicher, veraltet
SSH2 neuer, sicherer (neu geschrieben, bessere Kryptografie)
OpenSSH Open-Source, nutzt OpenSSL für Krypto, unterstützt SSH1 & SSH2

KLAUSURRELEVANTE PUNKTE

  • SSH ersetzt unsichere Protokolle → verschlüsselt alles
  • Authentifizierung über RSA/ECDSA Schlüsselpaar
  • Sitzungsschlüssel durch asymmetrische Verschlüsselung ausgetauscht → dann symmetrisch
  • Tools wie ssh-agent & ssh-add erhöhen Sicherheit & Komfort
  • Passwortauthentifizierung deaktivieren (wo möglich)
  • ssh-audit zur Analyse verwenden
  • SSH2/OpenSSH = Standard, SSH1 = veraltet