3.9 KiB
3.9 KiB
🔐 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:
-
Transportschicht-Protokoll:
- Authentifiziert Server, sichert Vertraulichkeit & Integrität.
- Optional: Kompression.
-
User-Authentifizierungsprotokoll:
- Authentifiziert Benutzer gegenüber dem Server.
-
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)
-
TCP-Verbindung vom Client zum Server
-
Protokoll- & Versionsaustausch
-
Umstieg auf binäres SSH-Protokoll
-
Server sendet:
- Public Host Key (langfristig)
- Public Server Key (flüchtig, stündlich neu)
-
Austausch der unterstützten Algorithmen
-
Client generiert 256-Bit Sitzungsschlüssel
-
Verschlüsselt diesen mit beiden Server-Keys → sendet verschlüsselt
-
Server entschlüsselt mit privaten Keys
-
Server schickt Quittung → verschlüsselte Verbindung aktiv
-
Client authentifiziert sich
-
Sitzung wird eingerichtet
🧠 SCHLÜSSELMANAGEMENT
-
Private Schlüssel:
- Nie weitergeben, mit Passphrase sichern
- Auth Agents wie
ssh-agent,Pageantspeichern 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
- Konfigurierbar in
-
2FA möglich
-
Analyse-Tool:
ssh-auditzur 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-adderhöhen Sicherheit & Komfort - Passwortauthentifizierung deaktivieren (wo möglich)
- ssh-audit zur Analyse verwenden
- SSH2/OpenSSH = Standard, SSH1 = veraltet