IT Explained

IT Explained:

SSH (Secure Shell)




Was ist SSH?

 

 

Definition

SSH ist ein Akronym und steht für Secure Shell. Es ist ein Oberbegriff, der sich neben anderen Dingen wie OpenSSH auf Versionen von SSH-Protokollen wie z. B. SSH-1 und SSH-2 bezieht. Obwohl es oft als Version von SSH bezeichnet wird, ist es streng genommen eine Suite, die aus Netzwerkdienstprogrammen auf Grundlage des SSH-Protokolls besteht.

In SSH-Protokollen werden Standards zum sicheren Betrieb von Netzwerkdiensten zwischen nicht vertrauenswürdigen Hosts über ungesicherte Netzwerke spezifiziert. Die Kommunikation zwischen Client und Server per SSH ist verschlüsselt, weswegen sich SSH ideal für ungesicherte Netzwerke eignet.

Ursprünglich bezog sich das Wort Shell in SSH auf ein Programm, das Unix-Befehle verarbeitete. Mit der Zeit wurde der Begriff zunehmend für die Benutzeroberflächen von Servern verwendet, welche die Interaktion mit ihnen benutzerfreundlicher gestalten. Ein Beispiel einer anderen häufig verwendeten Shell ist die Windows-Eingabeaufforderung (Command prompt cmd.exe), die Zugriff auf die Tools des Windows-Betriebssystems bietet. SSH selbst ist anders als die Unix Bourne Shell oder C-Shell keine Shell, sondern erzeugt stattdessen einen Kanal zur Ausführung einer Shell auf einem Remote-Computer.

SSH verwaltet über die Hälfte der Webserver der Welt – sowohl lokal als auch in der Cloud. SSH wird für Sicherung, Konfiguration, Verwaltung, Pflege und Betrieb von Netzwerkservern, Routern, Firewalls, Switches, Betriebssystemen und Anwendungen verwendet. SSH-Protokolle decken Authentifizierung, Verschlüsselung und Datenintegrität ab. SSH ist so beliebt, dass es ähnlich wie Google auf Englisch oft als Verb verwendet wird, z. B. SSH-ing.

Versionen

Es gibt zwei Hauptversionen von SSH: SSH-1 und SSH-2. Ein dritter SSH-Typ, SSH-1.9, wurde 2006 definiert. Er wird zur Kennzeichnung von Servern verwendet, die abwärtskompatibel mit SSH-Versionen sind, insbesondere für Server, die sowohl SSH-2 als auch frühere Versionen von SSH unterstützen.

SSH wird am häufigsten von Varianten des Unix-Betriebssystems wie z. B. Linux und macOS eingesetzt. Auch bei Microsoft Windows findet es Verwendung, z. B. setzt Windows 10 OpenSSH als standardmäßigen SSH-Client und SSH-Server ein.

Im Vergleich zu SSH-1 verfügt SSH-2 über Sicherheits- und Funktionsverbesserungen, ist aber nicht kompatibel mit SSH-1. Eine der Sicherheitsverbesserungen von SSH-2 ist die Verwendung des Diffie-Hellman-Schlüsselaustausches. Dabei handelt es sich um eine Methode zum Austausch von Kryptografieschlüsseln über einen öffentlichen Kanal wie das Internet. Bei SSH-2 wurden außerdem Nachrichtenauthentifizierungscodes hinzugefügt, um die Datenintegrität zu verbessern.

Aufgrund von Konstruktionsmängeln wird SSH-1 allgemein als veraltet angesehen. Die meisten modernen Systeme unterstützen SSH-2.

 

Geschichte

 

 

SSH wurde 1995 von Tatu Ylonen, einem Forscher an der Technischen Universität Helsinki, entwickelt. Ylonen erstellte die erste Version des Protokolls, nachdem das Universitätsnetzwerk gehackt worden war und Tausende von Benutzernamen und Passwörtern gestohlen wurden. Ylonen wollte eine Lösung entwickeln, mit der er sich per Remote-Anmeldung sicher mit dem Internet verbinden konnte.

Zuerst verbrachte er einige Zeit mit dem Studium der Kryptographie, dem Rückgrat von SSH. Nachdem er SSH von der Internet Engineering Task Force (IETF) standardisieren ließ, entwickelte er das SSH File Transfer Protocol (SFTP) und gründete dann die SSH Communications Security Corporation, um kommerziellen Support für die kostenpflichtigen Versionen von SSH bereitzustellen.

SSH wurde konzipiert, um Telnet (Port 23) und FTP (Port 21) zu ersetzen, und Tatu Ylonen konnte erreichen, dass SSH von der Internet Assigned Numbers Authority (IANA) den Port 22 zugewiesen bekam..

Was ist ein SSH-Client?

 

 

SSH basiert auf einem Modell mit Client-Server-Architektur. In diesem Modell ist jeder beliebige, mit einem Netzwerk verbundene Computer ein Host. Clients und Server sind Programme, die auf einem Host laufen.

Ein Benutzer verwendet seinen Computer (den Client) zur Verbindung mit einem Remote-Computer (dem Server). Mit einer grafischen Benutzeroberfläche (GUI) oder einem Befehlszeilentool kann ein Benutzer Daten zwischen Client und Server übertragen. Sowohl für den Client als auch für den Server muss SSH aktiviert sein.

Der SSH-Client ist ein Programm auf dem Computer, das eine Anfrage vornimmt, bei der SSH zur Verbindung mit einem Remote-System verwendet wird. Bei Betriebssystemen vom Unix-Typ ist die SSH-Funktionalität eingebaut. Bei Nicht-Unix-Betriebssystemen stehen auch externe Clients zur Verfügung, z. B. PuTTY, EasySSH und Cyberduck. Für Windows-Betriebssysteme gibt es ebenfalls zahlreiche SSH-Clients, z. B. PuTTY, Solar-PuTTy, WinSCP und MobaXterm.

Die meisten SSH-Clients bieten mehr Funktionen als eine herkömmliche SSH-Befehlszeilenausführung, z. B. die Möglichkeit, mehrere Sitzungen gleichzeitig auszuführen, Schlüsselwörter sitzungsübergreifend hervorzuheben, andere Verbindungsarten wie Telnet zu verwenden und Anmeldeinformationen zu speichern.

Wo wird SSH eingesetzt?

 

 

SSH wird oft in Verbindung mit verschiedenen anderen Internetprotokollen verwendet. SFTP ist eine sichere Alternative zu den herkömmlichen FTP- und SCP-Protokollen (Secure Copy Protocol), die Dateiübertragungen zwischen Hosts in einem Netzwerk unterstützen. SFTP ermöglicht schnelle, dynamische Verschlüsselungen und Entschlüsselungen.

Automatisierte sichere Verbindungen

In Unternehmensumfeldern werden automatisierte SSH-Verbindungen häufig für verschlüsselte Datenübertragungen und automatisierte Authentifizierungen für Machine-to-Maschine-Prozesse (M2M) verwendet. Zu den automatisierten Aufgaben gehören Datensicherung und Archivierung, Berichterstellung, Datenbankbereinigungen, Systemsicherungen und Netzwerkwartung.

Manuelle sichere Verbindungen

Unternehmen können SSH-Tunnel einsetzen, um Dateien sicher mit Kunden auszutauschen.

Remote-Netzwerkverwaltung

SSH ermöglicht sichere Anmeldungen bei Remote-Computern. Es wird routinemäßig von Netzwerkadministratoren und Webmastern verwendet, um Dateiübertragungen zu sichern, Datenübertragungen mit SSH-Skripts zu automatisieren, VPNs einzurichten, Anwendungen zu testen, Systeme neu zu starten, Dateiberechtigungen zu ändern und Benutzerzugriffe zu verwalten. Die meisten Administratoren verwenden routinemäßig einen SSH-Client für sicheren Zugriff auf Remote-Server, Switches, Router, Virtualisierungsplattformen und Betriebssysteme. Zu den Aufgaben gehören das Streamen von Videos mit SFTP, die Erstellung einer einzigen authentifizierten Sitzung für mehrere Verbindungen, die Durchführung von Remote-Sicherungen, die Verbindung von Remote-Ordnern mit einem lokalen Verzeichnis und die Verwendung eines Verschlüsselungsschlüssels für mehrere Konten anstelle unterschiedlicher Passwörter.

Anwendungssicherheit

Normalerweise verwenden TCP/IP-Anwendungen einen dedizierten Port zur Kommunikation. Mit Portweiterleitung können mehrere Anwendungen einen einzigen Port nutzen, nämlich Port 22.

SSH-Hauptfunktionen

 


SSHD

Zur Einrichtung einer SSH-Verbindung muss der Remote-Computer einen SSH-Daemon (SSHD) ausführen. Dabei handelt es sich um ein Programm, das auf Verbindungsanfragen wartet – gewöhnlich auf Port 22 –, sie authentifiziert und Verbindungen auslöst.

Der SSH-Daemon ermöglicht den verschlüsselten Austausch von Daten zwischen nicht vertrauenswürdigen Hosts über ein ungesichertes Netzwerk mit dem SSH-Protokoll. Ein Daemon ist eine Anwendung, die im Hintergrund läuft und – wie jede andere Anwendung – codiert und konfiguriert wird, um bestimmte Aufgaben für eine bestimmte Anwendung auszuführen.

RFCs

SSH wird durch eine Reihe von RFC-Veröffentlichungen (Request For Comments) definiert. Eine RFC beschreibt für das Internet relevante Standards, Protokolle und Technologien wie etwa SSH. Zum Beispiel gibt es Standarddokumente für alle SSH-Schichten, SSH-Kryptografiealgorithmen und SSH-Sicherheitszertifikate. Es gibt auch eine RFC mit der Vorgabe, dass die SSH-Transportschicht Perfect Forward Secrecy (PFS) zulassen muss. Perfect Forward Secrecy garantiert, dass ein Hacker im Fall einer Gefährdung des privaten Schlüssels eines Servers nicht auf zuvor übertragene Daten zugreifen kann.

SSH-Schichten

SSH besteht aus drei Schichten: der Transport-, der Benutzerauthentifizierungs- und der Verbindungsschicht.

Die Transportschicht ist für die Verschlüsselung und Entschlüsselung der ausgetauschten Daten zuständig. Sie authentifiziert auch den Server und stellt Vertraulichkeit und Integrität her.

Die Benutzerauthentifizierungsschicht authentifiziert die Identität des Clients.

Die Verbindungsschicht verwaltet die Kanäle, über die Daten zwischen authentifizierten Parteien ausgetauscht werden. Es gibt Kanäle bzw. Datenströme für verschiedene Kommunikationsarten, z. B. gleichzeitige Verbindungen mit verschiedenen Remote-Terminals oder -Diensten oder weitergeleitete X11-Sitzungen.

SSH-Verschlüsselung

Der Hauptvorteil von SSH gegenüber den Alternativen ist der Einsatz von Verschlüsselung. SSH verschlüsselt den gesamten Datenverkehr zwischen einem Client und einem Server während der Übertragung. Wenn versucht wird, den Datenverkehr abzuhören, z. B. mit einem Packet-Sniffing-Programm, ist es nicht möglich, auf die übertragenen Daten zuzugreifen oder sie zu entschlüsseln.

SSH setzt drei Verschlüsselungsmethoden ein: symmetrische Verschlüsselung, asymmetrische Verschlüsselung und Hashing.

Bei der symmetrischen Verschlüsselung kommt ein geheimer Schlüssel zum Einsatz, der für die Verschlüsselung und Entschlüsselung einer ganzen SSH-Verbindung verwendet wird. Der symmetrische Schlüssel wird anhand eines vereinbarten Schlüsselaustauschalgorithmus erzeugt.

Bei der asymmetrischen Verschlüsselung werden zwei separate Schlüssel in Form eines öffentlich/privaten Schlüsselpaars für die Verschlüsselung und Entschlüsselung verwendet. In einer SSH-Sitzung wird asymmetrische Verschlüsselung eingesetzt, um die symmetrische Verschlüsselung einzurichten. In der symmetrischen Verschlüsselungsphase erzeugen Client und Server temporäre Schlüsselpaare und tauschen den öffentlichen Schlüssel aus, um den symmetrischen Schlüssel zu erstellen. Asymmetrische Verschlüsselung wird auch verwendet, um die Identität des Clients für den Server zu authentifizieren.

Bei der Hashing-Methode werden die übertragenen Daten in einen anderen eindeutigen Wert konvertiert. SSH setzt Hashing ein, um die Echtheit von Nachrichten zu bestätigen.

Tunneling und Portweiterleitung

SSH unterstützt Portweiterleitung und Tunneling. Die Begriffe Portweiterleitung und Tunneling werden oft synonym verwendet. Tunneling ist jedoch ein umfassenderer Begriff, durch den drei Arten von Portweiterleitung beschrieben werden: lokale Portweiterleitung, Remote-Portweiterleitung und dynamische Portweiterleitung.

SSH-Tunneling kann verwendet werden, um unverschlüsselten Datenverkehr in einem Netzwerk über einen verschlüsselten Kanal zu übertragen. Zum Beispiel kann ein verschlüsselter SSH-Tunnel erstellt werden, um Daten zwischen einem FTP-Server und einem Client zu übertragen, obwohl das FTP-Protokoll nicht verschlüsselt ist. SSH-Tunnel können auch verwendet werden, um auf geographisch begrenzte Inhalte zuzugreifen und Firewalls zu umgehen.

X11-Weiterleitung

SSH ermöglicht X11-Weiterleitung, die eingesetzt werden kann, wenn ein Benutzer sich mit einem Remote-Server verbinden möchte und auch eine grafische Benutzeroberfläche braucht, um die laufende Anwendung oder die Daten zu sehen. Mit X11-Weiterleitung kann ein Benutzer eine Remote-Anwendung starten und dann die Ausgabe der Anwendung an einen lokalen Windows-Rechner übertragen.

 

Vorteile von SSH

 

 

SSH wurde entwickelt, um unsichere Remote-Shell-Protokolle wie Telnet, FTP, rsh, rlogin und rexec zu ersetzen. Diese Protokolle sind prinzipiell unsicher, weil sie Informationen einschließlich Passwörtern als Klartext austauschen und somit anfällig für Sicherheitsverletzungen sind. Der Hauptvorteil von SSH besteht in der Verwendung von Verschlüsselung zur Sicherung der Übertragung von Informationen zwischen dem Client und dem Server.

SSH ermöglicht es Benutzern, Shell-Befehle auf einem Remote-Computer genauso auszuführen, als wenn sie direkt vor dem Computer sitzen würden. Mit SSH-Befehlen und -Skripts können Administratoren Dateien sehen, entfernen oder verschieben, neue Ordner, Dateien und Verzeichnisse anlegen und Dateien herunterladen.

Die SSH-Verbindungsschicht ermöglicht mehrere Datenströme über eine einzige TCP-Verbindung. Dies wird als Multiplexing bezeichnet, was bedeutet, dass weniger TCP-Verbindungen gebraucht werden, wodurch wiederum die gemeinsame Nutzung knapper Ressourcen ermöglicht und der Overhead reduziert wird.

Die Fähigkeit von SSH, Port-Tunneling und -Weiterleitung einzusetzen, kann zur Umgehung restriktiver Firewalls verwendet werden.

SSH ermöglicht es Netzwerkadministratoren, den Benutzerzugriff zu einem Netzwerk remote zu begrenzen.

Anstelle von Benutzernamen und Passwörtern können SSH-Schlüssel zur Authentifizierung von Benutzern verwendet werden, die sich bei einem System anmelden. Ein SSH-Agent ist ein Programm, das private Schlüssel speichert und Authentifizierungsdienste bereitstellt. SSH-Schlüssel sind schwerer zu hacken als Passwörter, obwohl der SSH-Authentifizierungsprozess etwas schwieriger einzurichten ist als Benutzernamen und Passwörter. Mit SSH-Schlüsseln wird der Erfolg von Brute-Force-Passwortangriffen abgeschwächt.

SSH-Tunnel werden beim Cloud-Computing eingesetzt, um Konnektivitätsprobleme zu lösen und Sicherheitsrisiken zu vermeiden, wenn cloudbasierte virtuelle Maschinen direkt dem Internet ausgesetzt sind. SSH-Tunnel bieten einen sicheren Weg über das Internet und durch eine Firewall zu einem virtuellen Rechner.

Nachteile bei der Verwendung von SSH

 

 

SSH-2 wird allgemein als sicher angesehen. Jedoch haben alle Sicherheitsimplementierungen Schwachstellen.

SSH unterstützt Tunneling, das z. B. von Administratoren verwendet wird, um von Remote-Standorten aus in ein Netzwerk zu tunneln. Uneingeschränkte ausgehende SSH-Transaktionen können jedoch zu Sicherheitsschwachstellen führen. Tunneling kann Hintertüren für Hacker öffnen und auch einige Sicherheitsbestimmungen wie PCI und HIPAA verletzen. Eingehende SSH-Transaktionen lassen sich leichter kontrollieren als ausgehende, z. B. durch Umleitung von Verbindungen an Port 22 (SSH) zu einer bestimmten IP-Adresse.

SSH-Schlüssel, die von Benutzern oft anstelle von Passwörtern zur Anmeldung verwendet werden, laufen nie ab. In großen Organisationen gibt es möglicherweise Hunderte von SSH-Schlüsseln an mehreren Servern. Schlechte Verwaltung von SSH-Benutzerschlüsseln kann zu unkontrollierter Schlüsselverbreitung führen und eine Hintertür für Hacker öffnen. SSH-Tunneling kann es einem Angreifer ermöglichen, diese SSH-Schlüssel zur Umgehung von Firewalls zu verwenden. Tunneling-Angriffe sind jedoch nicht auf Systeme beschränkt, bei denen SSH eingesetzt wird.

Es kann vorkommen, dass sich einige Hosts denselben Schlüssel teilen, weil er in einem Gerät vorkonfiguriert wurde. Private Schlüssel zu diesen Geräten können durch Reverse Engineering zugänglich sein. Ältere, kurze Schlüssel können es einem Angreifer auch ermöglichen, die Werte privater Schlüssel abzuleiten.

Bei langsamen Verbindungen kann SSH langsame Reaktionen auf Befehle mit hoher Bandbreite zeigen.

Manche Studien weisen darauf hin, dass die Mehrheit der SSH-Sicherheitsfehler auf schlechte Verwaltung von SSH durch IT-Abteilungen zurückzuführen ist.

 

Quellenangabe