Table of Contents
Funktionen und Anforderungen eines Secure Shell Clients
Es gibt viele Vorteile bei der Verwendung eines Secure Shell Clients. Neben der Verschlüsselung des
Datenverkehrs und des sicheren Schlüsselaustauschs bietet das SSH-Protokoll auch die Überprüfung,
dass Sie mit dem richtigen Computer verbunden sind.
Das mag überraschend erscheinen, macht aber absolut Sinn. Beachten Sie dabei, dass wenn jemand
in der Lage wäre, einen Teil des Kommunikationspfads zu kontrollieren, er tatsächlich den Verkehr
zu einem anderen Computer umleiten könnte. Dieser kann dann die Rolle des Computers spielen, zu dem Sie
tatsächlich eine Verbindung herstellen wollten, und könnte entweder gefälschte Daten anzeigen oder
Informationen vom Client-Computer abrufen - beides könnte gleichermaßen schädlich sein. Wenn Sie einen
Secure Shell Client verwenden, müssen Sie sich keine Gedanken über derartige Szenarien machen.
Ein SSH-Client sollte auch verschiedene Authentifizierungsmethoden
unterstützen. Dazu gehören Benutzername/Passwort, Public/Private Key und verschiedene benutzerdefinierte Formate.
Das Letztere könnte ein System sein, bei dem der Server Informationen erhalten könnte, die nur die autorisierten
Benutzer kennen, z.B. durch Verwendung einer Hardware-ID-Karte oder durch Senden eines Zugangscodes
auf das Mobiltelefon des Benutzers.
Ein guter Secure Shell Client muss in der Lage sein, sich mit verschiedenen Servern zu verbinden.
Um dies zu tun, muss er die neuesten Schlüsselaustausch- und Verschlüsselungs-Protokolle unterstützen,
denn was vor fünf Jahren als unknackbar galt, wird heute als wenig sicher betrachtet. Wenn der Server
zu fortschrittlicheren Verschlüsselungsmethoden wechselt, müssen SSH Clients diese ebenfalls unterstützen.
Andere typische Muss-Funktionen für einen SSH-Client wären:
- SFTP-Dateiübertragung
- Port-Weiterleitung (Tunneln von Verbindungen vom Client zum Server durch den SSH-Kanal)
- PKCS#11-Authentifizierung (ermöglicht die Authentifizierung über Hardware, z. B. Smartcards)
- Dynamische Portweiterleitung (ähnlich wie SOCKS)
- ED25519, ECDSA, RSA und DSA Public Key-Authentifizierung
- X11-Weiterleitung (ermöglicht das Ausführen von X-Windows-Programmen auf dem entfernten Server)
- UTF8-Unterstützung in der Terminal-Emulation
- Verbindung über Proxy
Technische SSH-Essentials
Die Grundlagen des SSH-Protokolls sind in der IETF-Internetstandard
RFC 4253 festgelegt.
Das Dokument beschreibt SSH als sicheren Transport, der kryptografische
Hosts, starke Verschlüsselung, Authentifizierung und Integritätsschutz bietet.
Oder, wie RFC 4253 es in seinen eigenen Worten ausdrückt:
Die Secure Shell (SSH) ist ein Protokoll für sichere Remote-Anmeldung und
andere sichere Netzwerkdienste über ein unsicheres Netzwerk.
[...] Das Protokoll kann als Grundlage dienen
für eine Reihe sicherer Netzwerkdienste. Es bietet starke
Verschlüsselung, Serverauthentifizierung und Integritätsschutz.
Es kann auch Komprimierung bieten.
Die Methode für den Schlüsselaustausch, der Public-Key-Algorithmus, der symmetrische Verschlüsselungsalgorithmus,
der Message-Authentifizierungsalgorithmus und der Hash-Algorithmus werden
alle verhandelt.
Es legt daher Wege fest, wie ein gemeinsamer Verschlüsselungsschlüssel in der möglichen
Anwesenheit eines Zuhörers erstellt werden kann, Authentifizierungsmethoden für Host und
Benutzer (d. h. Möglichkeiten in denen Benutzer und Server nachweisen können, dass sie sind,
wer sie vorgeben zu sein), und mögliche Datenkompression zur effektiveren Datenübertragung.
Ein besonders herausfordernder Teil der Verschlüsselung der Kommunikation über öffentliche Netzwerke ist
die Notwendigkeit, einen gemeinsamen Geheimschlüssel (einen Verschlüsselungsschlüssel) über einen Kanal
zu verhandeln, der möglicherweise bereits von einem Gegner überwacht wird.
SSH beantwortet diese Herausforderung durch die Anfangsphase des Schlüsselaustauschs
der Verbindung unter Verwendung der älteren Diffie-Hellman kex-Methode. Neuere Versionen
unterstützen jetzt auch den ED25519 elliptischen Kurvenkex. Es handelt sich um eine
spezifische Implementierung des Edwards-Kurven-Digital-Signature-Algorithmus (EdDSA),
der selbst eine Variante von Schnorrs Signatursystem mit Twisted Edwards-Kurven ist
(mathematische Details finden Sie im
Dokument, einem bevorstehenden IETF-Standard für ED25519).
Guter Terminal Emulator basierend auf dem SSH-Protokoll
Allerdings deckt SSH nur die tatsächliche übertragung von Daten zwischen
dem Client und dem Server ab. Der SSH-Client
ist jedoch in der Regel ein Terminal Emulator,
d.h. eine Software, die es einem entfernten Computer ermöglicht, Tastatureingaben
zu erhalten und formatierten Text (Farbe, Cursorplatzierung usw.)
an den Computer des Benutzers zu senden.
Natürlich muss der Client darüber hinaus in der Lage sein, die Funktionen eines Terminals
auszuführen - Unterstützung verschiedener Terminal-Emulationen, Drucken, Protokollieren,
und so weiter. Deshalb ist ZOC der ideale Secure Shell Client,
er erledigt all das und mehr.