Suchen

Definition Was ist Secure Shell (SSH / SSH-1 / SSH-2 / OpenSSH)?

Secure Shell (SSH) ist ein Protokoll, mit dem sich im IP-Netz über eine verschlüsselte Verbindung auf einen entfernten Rechner zugreifen lässt. Es kann als sichere Alternative zu den unverschlüsselt arbeitenden Protokollen wie Telnet oder Rlogin verwendet werden.

(© aga7ta - Fotolia)

SSH ist ein 1995 ursprünglich vom Finnen Tatu Ylönen entwickeltes Netzwerkprotokoll für den verschlüsselten Zugriff auf andere Rechner eines IP-Netzwerks. Die Abkürzung SSH steht für Secure Shell. Das Protokoll lässt sich als sichere Alternative zu unverschlüsselt arbeitenden Protokollen wie Rlogin oder Telnet einsetzen und ist weit verbreitet.

Secure Shell stellt Funktionen zum Login, zum Übermitteln und Ausführen von textbasierten Befehlen und für das Kopieren von Daten zur Verfügung. Neben der Verschlüsselung bietet SSH eine zuverlässige gegenseitige Authentifizierung über Zertifikate und mit Public- und Private Key-Verfahren. Beliebtes Anwendungsgebiet von Secure Shell ist die Fernwartung von Servern.

Als Standardport ist dem Protokoll der TCP-Port 22 zugewiesen. Aufgrund einiger Schwachstellen in der Version SSH-1 aus dem Jahr 1995 wurde 1996 SSH-2 entwickelt. Mittlerweile existiert SSH in zwei grundsätzlichen Implementierungen. Einer Open-Source-Variante OpenSSH und einer proprietären Variante der Firma SSH Communications Security. Zunächst war SSH hauptsächlich auf Unix- und Linux-basierten Systemen verfügbar. Auf Rechner mit dem Betriebssystem Windows ist SSH in der Regel nicht installiert. Es lassen sich jedoch kostenlose Clients wie der populäre Client PuTTY installieren, mit dem SSH-Verbindungen aufgebaut werden können. Ein SSH-Server kann zudem als eigener Dienst auf Windows gestartet werden.

Die Funktionsweise von SSH

Secure Shell arbeitet auf der Anwendungsschicht (nach ISO/OSI-Schichtenmodell auf Layer 5 bis Layer 7) und basiert in der Transportschicht auf TCP. Das SSH-2 Protokoll besteht nach der in RFC 4251 beschriebenen Architektur aus drei Teilen:

  • dem Transport Layer Protocol (RFC 4253)
  • dem Authentication Protocol (RFC 4252)
  • dem Connection Protocol (RFC 4254)

Zentrale Funktionen von Secure Shell sind die Authentifizierung und die Verschlüsselung. Bei der Authentifizierung kann sich ein Server gegenüber einem Client mit einem Zertifikat und dem Public-Key-Verfahren identifizieren. Ein Client kann sich gegenüber dem Server darüber hinaus auch per Passwort authentifizieren. Neuere SSH-Implementierungen unterstützen zusätzlich die Mehrfaktor-Authentifizierung beispielsweise per Token oder Smartcards.

Nachdem sich Server und Client gegenseitig authentifiziert haben, wird für die Sitzung ein Session-Key erzeugt, mit dem die komplette Kommunikation verschlüsselt wird. Unter Umständen kann der Session-Key während einer Sitzung mehrfach neu ausgehandelt werden. Secure Shell unterstützt viele verschiedene Verschlüsselungsverfahren wie 3DES, AES, Blowfish, IDEA oder SEED. Der Ablauf eines Verbindungsaufbaus beinhaltet kurz zusammengefasst folgende Schritte:

Zunächst wird eine TCP-Verbindung über Port 22 aufgebaut. Der Server schickt anschließend seine Protokollversion und Informationen zu unterstützten Protokollen und Algorithmen. Der Client sendet ebenfalls seine unterstützten Versionen und wählt ein Protokoll aus. Anschließend verlangt er nach dem öffentlichen Schlüssel des Servers. Mit dem vom Server gesendeten öffentlichen Schlüssel verschlüsselt der Client den generierten Session-Key. Mit Hilfe des privaten Schlüssels kann der Server den Session-Key wieder entschlüsseln. Von nun an können Server und Client sämtliche zu übertragenen Daten mit dem Session-Key per symmetrischem Verfahren verschlüsseln. Die Authentifizierung startet nach der erfolgreichen Aushandlung und Übermittlung des Session-Keys. Dadurch ist sichergestellt, dass sämtliche Daten der Authentifizierung nur in verschlüsselter Form über das Netzwerk versendet werden.

Verwendung von Secure Shell

Hauptanwendungsgebiet von Secure Shell ist die Herstellung einer sicheren, verschlüsselten und gegenseitig authentifizierten Verbindung zwischen einem Client und einem Server. Dank der Verschlüsselung können Verbindungen über das öffentliche Internet für Aufgaben wie für die Remote-Administration genutzt werden. Secure Shell löst damit unsichere Protokolle ohne Verschlüsselung wie Telnet, Rlogin oder Rsh ab. Ein unbefugtes Abhören einer Session ist mit dem verschlüsselten Protokoll nicht mehr möglich.

Dank der Funktionserweiterungen von SSH-2 ist der Anwendungsbereich nicht mehr nur auf die Übertragung von textbasierten Kommandos und Terminalfunktionen beschränkt. Mit SSH-2 lassen sich prinzipiell beliebige TCP/IP-Anwendungen in einer verschlüsselten Verbindung tunneln. SSH-2 bietet damit beispielsweise eine kryptographisch sichere Alternative zur Dateiübertragung per FTP. Auch komplette Dateisysteme auf einem entfernten Rechner können per SSHFS (Secure Shell File System) gemounted werden. Um die übertragenen Datenmengen zu reduzieren und vorhandene Bandbreiten effizienter zu nutzen, lassen sich SSH-Verbindungen komprimieren. Typische Anwendungsbereiche für Secure Shell sind:

  • sichere Administration eines entfernten Rechners über IP-Netzwerke
  • Tunneln von Anwendungen auf TCP/IP-Basis in einer verschlüsselten, authentifizierten Verbindung
  • sichere Ausführung von Kommandos auf einem anderen Rechner
  • sichere Übertragung von Dateien über ein IP-Netz
  • sichere Bereitstellung von kompletten Dateisystemen über IP-Netzwerke
  • sichere Übertragung von Bildschirmfenstern per X11

Besonderheiten und Sicherheitsaspekte von Secure Shell

Die erste veröffentlichte Version SSH-1 besitzt eine konzeptionelle Schwachstelle, die es Unbefugten unter bestimmten Umständen erlaubt, eine SSH-1-Session auszuspähen oder komplett zu übernehmen. Aus diesem Grund empfiehlt es sich, nur noch die Version SSH-2 oder noch neuere Versionen zu nutzen. Die Schwachstelle wurde in diesen Versionen behoben.

Das Unternehmen SSH Communications Security veröffentlichte im Jahr 2005 SSH G3. Ein Kritikpunkt an dieser Version ist die Unterstützung des proprietären Verschlüsselungsalgorithmus CryptiCore. Einige Experten bezweifeln die Sicherheit dieses Algorithmus.

(ID:45154654)

Über den Autor