Secure Shell
Anwendung | SSH | ||||
Transport | TCP | ||||
Internet | IP (IPv4, IPv6) | ||||
Netzzugang | Ethernet | Token Bus |
Token Ring |
FDDI | … |
Secure shell oder SSH ist sowohl ein Programm als auch ein Netzwerkprotokoll, mit dessen Hilfe man sich zum Beispiel über das Internet auf einem entfernten Computer einloggen und dort Programme ausführen kann. Die IANA hat dem Protokoll den TCP-Port 22 zugeordnet.
Geschichte
Die erste Version des Protokolls (jetzt SSH-1 genannt) wurde 1995 von Tatu Ylönen als Reaktion auf eine Passwort-Sniffingattacke 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 Ylönen die Firma SSH Communications Security, um SSH zu vermarkten und weiterzuentwickeln. Die Originalsoftware beinhaltete ursprünglich Open-Source-Quellcode, entwickelte sich aber im Laufe der Zeit immer mehr zu proprietärer Software.
1996 wurde eine überarbeitete Version des Protokolls, genannt SSH-2, entwickelt; sie ist inkompatibel zu SSH-1. 2006 wurde dieses Protokoll von der IETF als Internetstandard vorgeschlagen.
1999 wurde der Wunsch nach einer freien Implementation von SSH laut, und aus der letzten freien Version der Originalimplementation entwickelte sich das seperate OpenSSH-Projekt.
Verwendung
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 unter anderem Passwörter unverschlüsselt und sollten nicht mehr verwendet werden. X11-Sitzungen und andere TCP/IP-Verbindungen können ebenfalls über diesen sicheren Kanal weitergeleitet werden.
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.
- Eine X11-Sitzung kann auch über SSH hergestellt werden, dadurch wird auch die Verwendung grafischer Programme auf einem entfernten Rechner ermöglicht.
- Über SSH können beliebige TCP/IP-Verbindungen getunnelt werden (Portweiterleitung); dabei wird jeweils genau ein Port vom Server auf den lokalen Rechner weitergeleitet.
- Ein passender SSH-Client kann sich wie ein SOCKS-Server verhalten und stellt somit eine praktikable Alternative zu einem VPN dar.
Sicherheit
Die Sicherheit von SSH wird durch eine Reihe von kryptographischen Algorithem zur Verschlüsselung und Authentifizierung sichergestellt.
===Authentifizierung==? Der Server identifiziert sich dem Client gegenüber mit einem RSA-Zertifikat, wodurch Manipulationen im Netzwerk erkannt werden können (niemand anderer kann sich als ein bekannter Server ausgeben).
Der Client kann sich wahlweise mit einem Public Key oder einem gewöhnlichen Textpasswort identifizieren.
Verschlüsselung
Nach erfolgreicher Authentifizierung wird für die Dauer der Sitzung ein geheimer Schlüssel erzeugt, mit dem die gesamte nachfolgende Kommunikation verschüsselt wird. Je nach Protokollversion kommt dabei ein anderes Verschlüsselungsalgorithmen zum Einsatz: SSH2 benutzt standardmäßig den AES mit einer 128-Bit-Schlüssellänge. Des Weiteren werden 3DES, Blowfish, Cast, Arcfour und AES mit anderen Schlüssellängen unterstützt.
Schwachstellen
Die von SSH1 verwendete Integritätsprüfung weist Schwachstellen auf, die es einem Angreifer ermöglichen, eine SSH1-Sitzung auszuspähen. Daher sollte nur noch die neue Protokollversion SSH2 verwendet werden. Diese zeichnet sich durch einen modularen Aufbau der Transport-, Autorisierungs- und Verbindungsschichten aus und ermöglicht im Gegensatz zu SSH1 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. Populär ist beispielsweise der SSH-Client PuTTY für Microsoft Windows, welcher mittlerweile auch auf Unix portiert wurde, oder auch Tera Term, Teemtalk, Neoware, Pericom.
Mit OpenSSH existiert auch eine freie Implementierung von SSH.
Weblinks
- 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