Secure Shell

Secure Shell
SSH im TCP/IP‑Protokollstapel:
Anwendung SSH
Transport TCP
Internet IP (IPv4, IPv6)
Netzzugang Ethernet Token
Bus
Token
Ring
FDDI

Secure Shell oder SSH bezeichnet sowohl ein Netzwerkprotokoll als auch entsprechende Programme, mit deren Hilfe man auf eine sichere Art und Weise eine verschlüsselte Netzwerkverbindung mit einem entfernten Gerät herstellen kann. Häufig wird diese Methode verwendet, um sich eine entfernte Kommandozeile quasi auf den lokalen Rechner zu holen, das heißt, auf der lokalen Konsole werden die Ausgaben der entfernten Konsole ausgegeben und die lokalen Tastatureingaben werden an den entfernten Rechner gesendet. Hierdurch wird der Effekt erreicht, als säße man vor der entfernten Konsole, was beispielsweise sehr gut zur Fernwartung eines in einem entfernten Rechenzentrum stehenden Root-Servers genutzt werden kann. Die neuere Protokoll-Version SSH-2 bietet weitere Funktionen wie Datenübertragung per SFTP.

Die IANA hat dem Protokoll den TCP-Port 22 zugeordnet, jedoch lassen sich in den Konfigurationsdateien des Daemons auch beliebige andere Ports auswählen, um z.B. Angriffe zu erschweren, da der SSH-Port dem Angreifer nicht bekannt ist.

Inhaltsverzeichnis

Geschichte

Die erste Version des Protokolls (jetzt SSH-1 genannt) wurde 1995 von Tatu Ylönen als Reaktion auf die Nachfrage nach drop-in replacements für Berkeley Services unter Unix einschließlich der Befehle rsh (remote shell), rcp (remote copy) und rlogin (remote login) entwickelt. Er veröffentlichte seine Implementation 1995 als Freeware, die daraufhin relativ schnell an Popularität gewann; Ende des Jahres 1995 zählte man bereits 20.000 Benutzer in fünfzig Ländern.

Im Dezember gründete Tatu Ylönen die Firma SSH Communications Security, um SSH zu vermarkten und weiterzuentwickeln. Die Originalsoftware enthielt ursprünglich Open-Source-Quellcode, entwickelte sich aber im Laufe der Zeit immer mehr zu proprietärer Software.

Nachdem einige Schwachstellen in der Integritätsprüfung von SSH-1 bekannt geworden waren, wurde 1996 mit SSH-2 eine überarbeitete Version des Protokolls entwickelt. Sie ist inkompatibel zu SSH-1. Dabei wurde unter anderem das Protokoll in verschiedene Einzelteile aufgegliedert und somit die Verwendung sicherer Verschlüsselungs- und Authentifikations-Algorithmen ermöglicht. Damit wurde die Schwachstelle beseitigt. Derzeit gilt das Protokoll als sicher.

1999 wurde der Wunsch nach einer freien Implementation von SSH laut, und aus der letzten freien Version der Originalimplementation entwickelte sich das separate OpenSSH-Projekt. Spätestens seit dieser Zeit existiert das SSH-Protokoll in zwei Implementationen: Als Open-Source-Software (OpenSSH) und als proprietäre Software (Produktname: SSH Tectia), entwickelt und vertrieben von der Firma SSH Communications Security, also den Original-Entwicklern rund um Ylönen.

2005, also zehn Jahre nach der Original-Entwicklung, ist die Firma SSH Communications Security mit der Generation 3 (SSH G3) an die Öffentlichkeit gegangen. Dieses Protokoll unterstützt die Verwendung des proprietären Algorithmus „CryptiCore“ (bei dem laut Hersteller Vorteile vor allem im Datendurchsatz bestehen), der jedoch als unsicher gilt (siehe Verschlüsselung). Die anderen, etablierten Verschlüsselungsalgorithmen werden weiterhin ebenfalls unterstützt. 2006 wurde dieses Protokoll (Version 2) von der IETF als Internetstandard vorgeschlagen. Eine Zertifizierung nach FIPS-Standard 140-2 besteht bereits länger.

Verwendung

Eine X11-Verbindung wird über SSH weitergeleitet

SSH ermöglicht eine sichere, authentifizierte und verschlüsselte Verbindung zwischen zwei Rechnern über ein unsicheres Netzwerk. Dadurch dient es unter anderem als Ersatz für die Vorgänger rlogin, telnet und rsh; diese übertragen jeglichen Netzverkehr, darunter auch die Passwörter, unverschlüsselt.

Das ursprüngliche Anwendungsgebiet ist das Anmelden an entfernten Rechnern über ein Netzwerk (meistens das Internet), doch insbesondere SSH-2 ist nicht nur auf Terminalfunktionen beschränkt.

  • SFTP und SCP bieten kryptographisch sicherere Alternativen zu FTP und RCP.
  • X11 kann über SSH transportiert und somit gesichert werden.
  • Über SSH können beliebige TCP/IP-Verbindungen getunnelt werden (Portweiterleitung); dabei wird jeweils ein einzelner Port von einem entfernten Server auf den Client weitergeleitet oder umgekehrt. So kann etwa eine ansonsten unverschlüsselte VNC-Verbindung abgesichert werden.
  • Ein SSH-Client kann sich wie ein SOCKS-Server verhalten und ermöglicht somit einen automatisierten Zugriff auf entfernte Rechner durch den SSH-Tunnel, etwa zum Umgehen einer Firewall.
  • Über SSHFS kann ein entferntes Dateisystem auf dem lokalen Rechner gemountet werden.
  • Mit „ssh-keyscan“ kann der öffentliche Schlüssel eines entfernten Rechners ausgelesen werden. Damit kann man unter Zuhilfenahme des zugehörigen öffentlichen Schlüssels zum Beispiel feststellen, ob die IP-Adresse und/oder der DNS-Eintrag eines SSH-Servers manipuliert worden ist.

Wahlweise kann die Verbindung auch komprimiert werden, um die Datenübertragung zu beschleunigen und Bandbreite zu sparen.

Damit lassen sich nun grundsätzlich mehrere Anwendungsszenarien darstellen:

Secure System Administration (Sichere Systemverwaltung)
zur Absicherung der Fernverwaltung von Servern. Ersetzt telnet, rlogin etc.
Secure Application Tunneling (Sicheres Tunneln)
zum transparenten Schutz TCP/IP-basierender Anwendungen als „End-to-End-Security“.
Secure Remote Command Execution (Sichere Ausführung von Kommandos)
zur Ausführung einzelner Kommandos auf einem anderen Rechner. Dabei werden stdin, stdout und stderr transparent weitergeleitet. Sonderfall davon:
Secure Subsystem Execution (Sichere Ausführung von Subsystemen)
zur Ausführung von auf dem Server vordefinierter Kommandos, wobei stderr jedoch nicht weitergeleitet wird.
Beispiel: Secure File Transfer (Sicherer Dateitransfer)
zur Herstellung sicherer, automatisierter und interaktiver Dateitransfers.

Anmerkung: Natürlich kann SSH auch über mehrere Stationen laufen.

Subsysteme

Im Fall von Secure Subsystem Execution können Subsysteme, die in einer SSH-Serverinstallation definiert wurden, aus der Ferne ausgeführt werden, ohne den genauen Pfad des auf dem Server auszuführenden Programms zu kennen. SFTP ist das gängigste Subsystem.

In den einschlägigen RFCs sind jedoch noch mehrere solcher Subsysteme definiert.

Dienst SSH Connection Protocol Subsystem Name laut RFC4250 einschlägiger RFC
SFTP sftp draft-ietf-secsh-filexfer
SSH Public Key Subsystem publickey RFC4819
SNMP snmp RFC5592
Netconf netconf RFC4742, Errata 1628
SSH transport mapping for SYSLOG syslog draft-gerhards-syslog-transport-ssh-00.txt

Jeder Admin kann darüber hinaus seine eigenen Subsysteme definieren; dabei sollte im Falle von nicht IANA-registrierten Subsystemen die Conventions for Names eingehalten werden (Stichwort @-Syntax).

Sicherheit

Die Sicherheit von SSH wird durch eine Reihe von kryptographischen Algorithmen zur Verschlüsselung und Authentifizierung gewährleistet.

Authentifizierung

Der Server identifiziert sich dem Client gegenüber mit einem RSA-, DSA- oder ECDSA-Zertifikat, wodurch Manipulationen im Netzwerk erkannt werden können (kein anderer kann sich als ein bekannter Server ausgeben).

Der Client kann sich wahlweise per Public-Key-Authentifizierung mit einem privaten Schlüssel, dessen öffentlicher Schlüssel auf dem Server hinterlegt ist, oder einem gewöhnlichen Kennwort authentifizieren. Während Letzteres immer eine Benutzerinteraktion erfordert (solange das Kennwort nicht unverschlüsselt auf dem Client-Rechner gespeichert werden soll), ermöglicht die Public-Key-Authentifizierung, dass sich Client-Computer auch ohne Benutzerinteraktion auf SSH-Servern einloggen können, ohne dass dabei ein Passwort auf dem Client im Klartext gespeichert werden muss. Allerdings können zur weiteren Absicherung die privaten SSH-Schlüssel auch mit einem Passwort geschützt werden.

Verschlüsselung

Nach erfolgreicher Authentifizierung wird für die Dauer der Sitzung ein geheimer Schlüssel erzeugt, mit dem die gesamte nachfolgende Kommunikation verschlüsselt wird. Je nach Protokollversion kommt dabei ein anderer Verschlüsselungsalgorithmus zum Einsatz: SSH-2 benutzt standardmäßig den AES mit einer 128-Bit-Schlüssellänge. Außerdem werden 3DES, Blowfish, Twofish, CAST, IDEA, Arcfour, SEED und AES mit anderen Schlüssellängen unterstützt. Die neue Generation SSH G3 unterstützt auch den proprietären Algorithmus CryptiCore, der unter Cryptoexperten als Security-through-obscurity-Algorithmus verpönt ist und außer einem Geschwindigkeitsgewinn (lt. Hersteller) keine Sicherheitsvorteile bietet.[1]

Schwachstellen

Die von SSH-1 verwendete Integritätsprüfung weist Schwachstellen auf, die es einem Angreifer ermöglichen, eine SSH-1-Sitzung auszuspähen. Daher sollte nur noch die neue Protokollversion ab SSH-2 aufwärts verwendet werden. Diese zeichnet sich durch einen modularen Aufbau der Transport-, Autorisierungs- und Verbindungsschichten aus und ermöglicht im Gegensatz zu SSH-1 die Verwendung von verschiedenen Verschlüsselungsalgorithmen.

Implementierungen

SSH-Implementationen waren ursprünglich nur unter Unix verfügbar, mittlerweile wurden jedoch sowohl SSH-Server als auch Clients für andere Plattformen programmiert (siehe auch: Geschichte). Populär sind beispielsweise die SSH-Clients PuTTY (für Microsoft Windows und Unix, sowie Symbian) sowie WinSCP. Unter Cygwin gibt es auch einen Sshd für Windows, der auf OpenSSH basiert. Damit kann man sich per SSH auf einer Windows-Maschine einloggen und bekommt dort eine Shell. Für skriptgesteuerte Aufgaben, zum Beispiel Datensicherung, ist dies ein mächtiges Werkzeug.

Mit OpenSSH existiert auch eine freie Implementierung von SSH, die mittlerweile einen sehr großen Verbreitungsgrad erreicht hat. Weitere freie Ausführungen sind dropbear oder lsh.

Weiterhin gibt es für Microsoft Windows die kostenlose SSH-Implementation freeSSHd. Der SSH-Server lässt sich unter Windows als Dienst installieren. Die Benutzersteuerung unterstützt NT-Authentifizierung, somit kann man sich an eine Domäne anmelden.

Die SSH Communications Security bietet mit dem SSH Tectia Client/Server eine kommerzielle SSH-Implementation an, die eine Authentifizierung mittels Smartcards und USB-Tokens (PKCS#11) sowie X.509.v3-Zertifikaten ermöglicht. Aber auch OpenSSH kann Smartcards verwenden.

RFC-Spezifikationen

  • RFC 4250 – The Secure Shell (SSH) Protocol Assigned Numbers
  • RFC 4251 – The Secure Shell (SSH) Protocol Architecture
  • RFC 4252 – The Secure Shell (SSH) Authentication Protocol
  • RFC 4253 – The Secure Shell (SSH) Transport Layer Protocol
  • RFC 4254 – The Secure Shell (SSH) Connection Protocol
  • RFC 4255 – Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
  • RFC 4256 – Generic Message Exchange Authentication for the Secure Shell Protocol (SSH)
  • RFC 4335 – The Secure Shell (SSH) Session Channel Break Extension
  • RFC 4344 – The Secure Shell (SSH) Transport Layer Encryption Modes
  • RFC 4345 – Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol
  • RFC 4419 – Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol
  • RFC 4432 – RSA Key Exchange for the Secure Shell (SSH) Transport Layer Protocol
  • RFC 4462 – Generic Security Service Application Program Interface (GSS-API) Authentication and Key Exchange for the Secure Shell (SSH) Protocol
  • RFC 4716 – The Secure Shell (SSH) Public Key File Format
  • RFC 4819 – Secure Shell Public Key Subsystem

Weblinks

Einzelnachweise

  1. Crypto-Gram

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Secure Shell — or SSH is a network protocol that allows data to be exchanged using a secure channel between two networked devices. RFC 4252] Used primarily on Linux and Unix based systems to access shell accounts, SSH was designed as a replacement for TELNET… …   Wikipedia

  • Secure Shell — Fonction Session à distance sécurisée Sigle SSH Port 22 RFC …   Wikipédia en Français

  • Secure shell — Pile de protocoles 7 • Application 6 • Présentation 5 • Session 4 • Transport …   Wikipédia en Français

  • Secure shell — SSH Название: Secure Shell Уровень (по модели OSI): Прикладной Семейство: TCP/IP Порт/ID: 22/TCP Назначение протокола: Удалённый доступ Спецификация: RFC 4251 Основные реализации (клиенты): PuTTY, SecureCRT Основные реализации (сервер …   Википедия

  • Secure Shell — SSH Название: Secure Shell Уровень (по модели OSI): Прикладной Семейство: TCP/IP Порт/ID: 22/TCP Назначение протокола: Удалённый доступ Спецификация: RFC 4251 Основные реализации (клиенты): PuTTY, SecureCRT Основные реализации (сервер …   Википедия

  • Secure Shell — «SSH» redirige aquí. Para el aeropuerto, véase Aeropuerto Internacional de Sharm el Sheij. Secure Shell (SSH) Familia: Función: Sirve para acceder a máquinas remotas a través de una red. Ubicación en la pila de protocolos Aplicac …   Wikipedia Español

  • Secure Shell — SSH (Secure SHell) es el nombre de un protocolo y del programa que lo implementa. Este protocolo sirve para acceder a máquinas remotas a través de una red, de forma similar a como se hace con telnet. La diferencia principal es que SSH usa… …   Enciclopedia Universal

  • Secure Shell Filesystem — (SSHFS) es un sistema de archivos para Linux (y otros sistemas operativos con una implementación FUSE, tal como en Mac OS X), que opera sobre archivos en una computadora remota usando un entorno seguro de acceso. En la computadora local donde se… …   Wikipedia Español

  • Secure shell file system — (ou SSHFS) permet le partage d un système de fichiers de manière sécurisée en utilisant le protocole SSH. Sommaire 1 Principes de fonctionnement 2 Installation et configuration du client SSHFS 3 Utilisation …   Wikipédia en Français

  • Secure FTP — im TCP/IP‑Protokollstapel: Anwendung FTP SSH Transport TCP Internet IP (IPv4, IPv6) Netzzugang …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”