Das Secure Shell (SSH)-Protokoll stellt verschlüsselte Fernverbindungen zwischen Computern her. Es ermöglicht auch das Tunneln.
Nach Lektüre dieses Artikels können Sie Folgendes:
Ähnliche Inhalte
Was ist Authentifizierung?
Zugriffskontrolle
Sicherheit bei externen Mitarbeitern
Zero Trust-Sicherheit
Abonnieren Sie theNET, Cloudflares monatliche Zusammenfassung der beliebtesten Einblicke in das Internet!
Link zum Artikel kopieren
Das SSH-Protokoll (Secure Shell) ist eine Methode, um Befehle sicher über ein unsicheres Netzwerk an einen Computer zu senden. SSH verwendet Kryptographie zur Authentifizierung und Verschlüsselung von Verbindungen zwischen Geräten. SSH ermöglicht auch das Tunneln oder Weiterleiten von Ports, d. h., Datenpakete können Netzwerke durchqueren, die sie sonst nicht passieren könnten. SSH wird häufig zur Fernsteuerung von Servern, zur Verwaltung der Infrastruktur und zur Übertragung von Dateien verwendet.
Wenn die Ladenbesitzerin auf Reisen ist, kann sie ihrem Team aus der Ferne Anweisungen geben, damit der Laden auch in ihrer Abwesenheit reibungslos funktioniert. In ähnlicher Weise können Administratoren mit dem SSH-Protokoll Server und Geräte aus der Ferne verwalten. Ältere Protokolle zur Fernverwaltung wie Telnet übermittelten die Befehle der Administratoren in einer für alle sichtbaren Form. (Das ist so, als ob das Team während eines Gesprächs den Lautsprecher einschaltet und alle Anwesenden im Geschäft die privaten Anweisungen mithören können.) Im Gegensatz zu Telnet ist SSH sicher – daher der Name Secure Shell.
Verschlüsselte Remote-Verbindungen: SSH stellt eine Verbindung zwischen dem Gerät eines Nutzers und einem entfernten Rechner, häufig einem Server, her. Dabei werden die über die Verbindung übertragenen Daten verschlüsselt. Ein Abhörer würde nur statische Daten finden – zufällige Daten, die nichts bedeuten, wenn sie nicht entschlüsselt werden. (SSH verwendet Verschlüsselungsmethoden, die eine Entschlüsselung für Außenstehende sehr schwierig machen.)
Die Möglichkeit zum Tunneling: In der Netzwerktechnik ist Tunneling eine Methode, um Datenpakete über ein Netzwerk zu transportieren, indem ein Protokoll oder ein Pfad verwendet wird, der normalerweise nicht verwendet werden könnte. Beim Tunneling werden Datenpakete* – in zusätzliche Informationen, so genannte Header, verpackt, um ihren Bestimmungsort zu ändern. SSH-Tunnel verwenden eine Technik namens Port Forwarding, um Pakete von einem Rechner an einen anderen zu senden. Port Forwarding wird im Folgenden näher erläutert.
*Alle Daten, die ein Netzwerk durchqueren, werden in kleinere Stückchen zerlegt; diese Stückchen nennt man „Pakete“.
SSH läuft auf der TCP/IP-Protokollsuite, auf der ein Großteil des Internets basiert. TCP steht für Transmission Control Protocol und IP für Internet Protocol. TCP/IP kombiniert diese beiden Protokolle, um Pakete zu formatieren, zu routen und auszuliefern. IP gibt unter anderem an, an welche IP-Adresse ein Paket gesendet werden soll (ähnlich einer Postanschrift), während TCP angibt, an welchen Port ein Paket an jeder IP-Adresse gehen soll (ähnlich dem Stockwerk eines Gebäudes oder einer Wohnungsnummer).
TCP ist ein Protokoll der Transportschicht: Es befasst sich mit dem Transport und der Zustellung von Datenpaketen. In der Regel werden neben TCP/IP weitere Protokolle eingesetzt, um die übertragenen Daten in eine für Anwendungen nutzbare Form zu bringen. SSH ist ein solches Protokoll. (Weitere Beispiele sind HTTP, FTP und SMTP).
Diese „asymmetrischen“ Schlüssel – so genannt, weil sie unterschiedliche Werte haben – ermöglichen es den beiden Seiten der Verbindung auch, identische, gemeinsame symmetrische Schlüssel für die weitere Verschlüsselung über den Kanal auszuhandeln. Sobald diese Aushandlung abgeschlossen ist, verwenden beide Seiten die symmetrischen Schlüssel, um die ausgetauschten Daten zu verschlüsseln.
Bei einer SSH-Verbindung haben beide Seiten ein öffentliches/privates Schlüsselpaar, und jede Seite authentifiziert die andere anhand dieser Schlüssel. Dies unterscheidet SSH von HTTPS, das in den meisten Implementierungen nur die Identität des Webservers in einer Client-Server-Verbindung verifiziert. (Zu den weiteren Unterschieden gehört, dass HTTPS dem Client in der Regel keinen Zugriff auf die Befehlszeile des Servers erlaubt und dass Firewalls manchmal SSH, aber fast nie HTTPS blockieren).
Während die Public Key-Kryptographie die angeschlossenen Geräte in SSH authentifiziert, erfordert ein ordnungsgemäß gesicherter Computer dennoch eine Authentifizierung durch die Person, die SSH verwendet. Dies geschieht häufig durch die Eingabe eines Benutzernamens und eines Passworts.
Sobald die Authentifizierung abgeschlossen ist, kann die Person auf dem entfernten Computer Befehle ausführen, als ob sie auf ihrem eigenen lokalen Computer arbeiten würde.
Port Forwarding ist wie die Weiterleitung einer Nachricht zwischen zwei Personen. Bob kann eine Nachricht an Alice senden, die diese wiederum an Dave weiterleitet. In ähnlicher Weise sendet Port Forwarding Datenpakete, die an eine IP-Adresse und einen Port auf einem Computer adressiert sind, an eine IP-Adresse und einen Port auf einem anderen Computer.
Ein Beispiel: Ein Administrator möchte von einem entfernten Standort aus eine Änderung an einem Server vornehmen, der sich in einem von ihm verwalteten privaten Netzwerk befindet. Aus Sicherheitsgründen empfängt dieser Server jedoch nur Datenpakete von anderen Computern innerhalb des privaten Netzwerks. Der Administrator könnte stattdessen eine Verbindung zu einem zweiten Server innerhalb des Netzwerks herstellen – einem Server, der für den Empfang von Internetverkehr offen ist – und sich dann über SSH Port Forwarding mit dem ersten Server verbinden. Aus Sicht des ersten Servers kommen die Datenpakete des Administrators aus dem privaten Netz.
Linux- und Mac-Betriebssysteme haben SSH bereits integriert. Auf Windows-Rechnern muss eventuell eine SSH-Client-Anwendung installiert werden. Auf Mac- und Linux-Computern können die Nutzer die Terminal-Anwendung öffnen und direkt SSH-Befehle eingeben.
Technisch gesehen kann SSH jede Art von Daten über ein Netzwerk übertragen und SSH-Tunneling kann für eine Vielzahl von Zwecken eingerichtet werden. Die häufigsten Anwendungsfälle für SSH sind jedoch
Port 22 ist der Standardport für SSH. Manchmal kann es vorkommen, dass Firewalls den Zugriff auf bestimmte Ports auf Servern hinter der Firewall blockieren, aber Port 22 offen lassen. SSH ist daher nützlich, um auf Server auf der anderen Seite der Firewall zuzugreifen: Pakete, die an Port 22 adressiert sind, werden nicht blockiert und können an jeden anderen Port weitergeleitet werden.
Jedes Protokoll kann von böswilligen Parteien ausgenutzt werden, und die verschlüsselte Natur und die Tunneling-Funktionen von SSH machen es für Angreifer besonders attraktiv. Es wurde eine Reihe von Angriffen dokumentiert, bei denen SSH verwendet wurde, um private Daten zu extrahieren, Hintertüren in ein sicheres Netzwerk zu öffnen und sogar Root-Zugriff auf Server zu erlangen.
Bei bestimmten Arten von Angriffen können auch SSH-Schlüssel gestohlen werden, um Zugang zu privaten Computern und Servern zu erhalten. Die Verwaltung von SSH-Schlüsseln ist in der Tat ein ernstes Sicherheitsproblem für große Unternehmen, da ihre zahlreichen Server oft Tausende oder sogar Millionen von Schlüsseln verwenden und es praktisch unmöglich ist, diese Schlüssel zu verfolgen und zu aktualisieren. Ist ein Angreifer erst einmal in den Besitz eines Schlüssels gelangt, hat er unter Umständen monate- oder sogar jahrelang Zugriff.
Einer der Hauptunterschiede zwischen SSH und anderen Tunneling-Protokollen ist die OSI-Schicht, auf der sie arbeiten. GRE, IP-in-IP und IPsec sind alle Protokolle der Netzwerkschicht. Als solche kennen sie keine Ports (ein Konzept der Transportschicht) und arbeiten stattdessen zwischen IP-Adressen. (Die genaue OSI-Schicht von SSH ist nicht klar definiert, aber die meisten Quellen beschreiben es als Protokoll der Schicht 7/Anwendungsschicht).
Ein weiterer Unterschied ist die Verwendung von TCP in SSH. TCP ist, wie oben beschrieben, ein Protokoll der Transportschicht und eines der wichtigsten im Internet verwendeten Protokolle. Ein weiteres weit verbreitetes Protokoll der Transportschicht ist UDP, das User Datagram Protocol. UDP ist ein „Best-Effort“-Transportprotokoll, d. h. es sendet Pakete, ohne deren Zustellung zu garantieren, was es schneller macht, aber manchmal zu Paketverlusten führt. TCP ist zwar langsamer als UDP, garantiert aber die Zustellung aller Pakete in der richtigen Reihenfolge und ist daher zuverlässiger.
IPsec verwendet ausschließlich UDP anstelle von TCP, damit IPsec-Pakete Firewalls passieren können. Daher sind IPsec-Tunnel in der Regel schneller als SSH-Tunnel, können aber während der Übertragung Pakete verlieren. GRE und IP-in-IP können sowohl mit TCP als auch mit UDP verwendet werden.
Schließlich verschlüsselt SSH immer nur eine Anwendung und nicht den gesamten Datenverkehr von und zu einem Gerät. Dies unterscheidet SSH von IPsec, das den gesamten Netzwerkverkehr verschlüsselt, unabhängig davon, von welcher Anwendung er stammt. Aus diesem Grund wird SSH nicht für die Einrichtung von VPNs verwendet.
SSH ist weit verbreitet, aber es ist immer riskant, die Ports eines Servers für das Internet zu öffnen. Mit Cloudflare Zero Trust können Unternehmen ihre SSH-Server über das Internet zugänglich machen, ohne das Risiko einzugehen, diese eingehenden Ports zu öffnen. Die Server können sicher mit dem Cloudflare-Netzwerk verbunden werden. Administratoren und andere Nutzer können dann über Cloudflare auf den Server zugreifen, indem sie einen Cloudflare WARP-Client auf ihrem Gerät installieren; mehr dazu erfahren Sie hier.