## 🔐 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** --- Wenn du möchtest, kann ich dir daraus gerne: - **Lernkarten (Flashcards)** - eine **Mindmap** - oder ein **Mini-Quiz** erstellen. Sag einfach Bescheid!