GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie funktioniert SSH?

Einführung

Die Datenübertragung zwischen Geräten in einem Netzwerk muss reguliert werden, damit die Geräte ordnungsgemäß kommunizieren können. Die Übertragung erfolgt mit einem Regelwerk, das als Netzwerkprotokoll bezeichnet wird.

Frühe Netzwerkprotokolle wie Telnet und rsh boten keinen ausreichenden Schutz vor böswilligen Cyberangriffen. Die Notwendigkeit einer sichereren Netzwerkkommunikationsmethode inspirierte die Entwicklung des SSH-Protokolls.

In diesem Tutorial werden wir darüber sprechen, was SSH ist, warum es verwendet wird und wie es funktioniert.

Was ist SSH?

SSH (kurz für Secure Shell) ist ein Netzwerkprotokoll, das zwei Computern eine sichere Möglichkeit bietet, sich remote zu verbinden. SSH verwendet Verschlüsselung, um sicherzustellen, dass Hacker den Datenverkehr zwischen zwei verbundenen Geräten nicht interpretieren können.

SSH besteht aus drei unterschiedlichen Schichten:

  • Die Transportschicht stellt während und nach der Authentifizierung eine sichere Kommunikation zwischen einem Client und einem Server her. Es überwacht die Datenverschlüsselung, -entschlüsselung und den Integritätsschutz. Darüber hinaus hilft es, den Datenaustausch zu beschleunigen, indem es Datenkomprimierung und Caching bereitstellt.
  • Die Authentifizierungsschicht teilt dem Client die unterstützten Authentifizierungsmethoden mit. Es führt auch den gesamten Benutzerauthentifizierungsprozess durch.
  • Die Verbindungsschicht verwaltet die Kommunikation zwischen den Maschinen, nachdem die Authentifizierung erfolgreich war. Es verwaltet das Öffnen und Schließen von Kommunikationskanälen und ermöglicht mehrere Kanäle für mehrere Sitzungen.

Wofür wird SSH verwendet?

SSH bietet eine Sicherheitsebene für die Informationsübertragung zwischen Computern. Einige wichtige Anwendungsfälle für SSH sind:

  • Remote-Zugriff – SSH gewährleistet verschlüsselte Remote-Verbindungen für Benutzer und Prozesse.
  • Dateiübertragungen – SFTP, ein sicheres Dateiübertragungsprotokoll, das von SSH verwaltet wird, bietet eine sichere Möglichkeit, Dateien über ein Netzwerk zu manipulieren.
  • X11-Weiterleitung – Benutzer können servergehostete X-Anwendungen von ihren Client-Rechnern aus ausführen.
  • Portweiterleitung – Durch die Zuordnung des Ports eines Clients zu den Remote-Ports des Servers hilft SSH dabei, andere Netzwerkprotokolle wie TCP/IP zu sichern.
  • Tunnelung – Diese Kapselungstechnik bietet sichere Datenübertragungen. Tunneling ist nützlich für den Zugriff auf geschäftskritisches Online-Material aus ungesicherten Netzwerken, da es als praktische VPN-Alternative fungieren kann.
  • Netzwerkverwaltung – Das SSH-Protokoll verwaltet die Netzwerkinfrastruktur und andere Teile des Systems.

Wie funktioniert SSH?

SSH ist ein Client-Server-basiertes Protokoll. Das bedeutet, dass das Protokoll es einem Gerät, das Informationen oder Dienste anfordert (dem Client), erlaubt, sich mit einem anderen Gerät (dem Server) zu verbinden.

Wenn sich ein Client über SSH mit einem Server verbindet, kann die Maschine wie ein lokaler Computer gesteuert werden.

Der Server hat einen festgelegten TCP-Port, über den er das Netzwerk überwacht und darauf wartet, dass Clients die Verbindung initialisieren. Bevor ein Client eine Verbindung herstellt und SSH-Befehle ausgibt, muss er den Authentifizierungsprozess durchlaufen.

Herstellen einer SSH-Verbindung

Führen Sie den folgenden Befehl auf einem Clientcomputer aus, um eine SSH-Verbindung zu initiieren:

ssh [username]@[server_ip_or_hostname]

Wenn der Server die Anfragen erhält, beginnt eine Aushandlung der Sitzungsverschlüsselung.

Sitzungsverschlüsselungsverhandlung

Beim Empfang einer Verbindungsanfrage sendet der Server dem Client eine Reihe von unterstützten Verschlüsselungsprotokollen. Der Server verwendet den öffentlichen Schlüssel als Authentifizierungsmethode.

Der Client vergleicht die Protokolle mit seinem eigenen Satz. Wenn übereinstimmende Protokolle vorhanden sind, stimmen die Maschinen zu, eines zum Herstellen der Verbindung zu verwenden.

Der Client vergleicht beim ersten Verbindungsversuch den öffentlichen Schlüssel des Servers mit dem in seinem System gespeicherten privaten Schlüssel. Wenn die Schlüssel übereinstimmen, vereinbaren der Client und der Server, symmetrische Verschlüsselung für die Kommunikation während der SSH-Sitzung zu verwenden. Dazu kommunizieren sie mit einem asymmetrisch verschlüsselten Verfahren, das den Diffie-Hellman (DH)-Schlüsselaustauschalgorithmus verwendet.

Der DH-Algorithmus ermöglicht es Maschinen, zusammenzuarbeiten und sicher einen kryptografischen Schlüssel über ein öffentliches Netzwerk zu erstellen. Um einen Schlüssel zu generieren, führen die Maschinen die folgenden Schritte aus:

  • Die Maschinen einigen sich auf zwei Zahlen :ein Modul und eine Basiszahl. Um eine Brute-Force-Schlüsselentschlüsselung zu verhindern, ist der gewählte Modul eine Primzahl mit mindestens 600 Ziffern.
  • Die Maschinen wählen separat eine Nummer aus und wende es auf die Gleichung an, die die beiden öffentlichen Zahlen beinhaltet.
  • Der Server und der Client tauschen die berechneten Werte aus .
  • Jede Maschine führt jetzt eine Berechnung durch unter Verwendung des vom anderen erhaltenen Ergebnisses.

Indem Sie die obigen Schritte ausführen, berechnen beide Maschinen denselben Wert, ihren geheimen Schlüssel. Schließlich versucht der Server dann, den Benutzer zu authentifizieren, der den Zugriff anfordert.

Benutzerauthentifizierung

Die beiden am häufigsten verwendeten SSH-Benutzerauthentifizierungsmethoden sind Kennwörter und SSH-Schlüssel. Die Clients senden sicher verschlüsselte Passwörter an den Server. Passwörter sind jedoch eine riskante Authentifizierungsmethode, da ihre Stärke vom Bewusstsein des Benutzers darüber abhängt, was ein starkes Passwort ausmacht.

Asymmetrisch verschlüsselte SSH-Public-Private-Key-Paare sind eine bessere Option. Sobald der Client die Nachricht entschlüsselt, gewährt der Server dem Client Zugriff auf das System.

Um ein SSH-Schlüsselpaar zu generieren, geben Sie ssh-keygen ein im Endgerät. Als Ergebnis generiert und speichert das System die Schlüssel.

Weitere Informationen zu diesem Vorgang finden Sie unter So generieren Sie SSH-Schlüssel unter Ubuntu (der Vorgang ist im Wesentlichen auf allen Linux-Distributionen und Mac OS gleich).

Erläuterung der SSH-Verschlüsselungstechnologien

SSH verwendet während der Kommunikation zwischen den Maschinen drei Datenverschlüsselungstypen. Diese sind:

  • Symmetrische Verschlüsselung
  • Asymmetrische Verschlüsselung
  • Hashing.

Symmetrische Verschlüsselung

Symmetrische Verschlüsselung generiert einen einzigen Schlüssel, den zwei Maschinen austauschen. Dann verwenden die Maschinen den Schlüssel sowohl für die Verschlüsselung als auch für die Entschlüsselung. Diese Methode ist schnell, sie ist nicht ressourcenintensiv und SSH verwendet sie für jede Sitzung.

Wann immer der Client und der Server aushandeln, welcher Algorithmus für eine SSH-Sitzung verwendet werden soll, wählen sie immer den ersten Algorithmus auf der Liste des Clients, den der Server unterstützt.

Asymmetrische Verschlüsselung

Daten werden asymmetrisch verschlüsselt, wenn Maschinen zwei unterschiedliche, aber mathematisch verwandte Schlüssel verwenden, öffentliche und private, um die Verschlüsselung durchzuführen. Der Client-Computer, der an der Einrichtung der Verschlüsselung beteiligt war, kann die Informationen mithilfe des privaten Schlüssels entschlüsseln.

SSH verwendet temporäre asymmetrische Schlüssel, um symmetrische Schlüssel auszutauschen, z. B. während des Benutzerauthentifizierungsprozesses.

Hashing

SSH verwendet Hashing, um zu überprüfen, ob die Datenpakete von der Quelle stammen, von der sie zu stammen scheinen. Hashing-Algorithmen, die zur Erzeugung von Hashes in SSH verwendet werden, sind Message Authentication Code (MAC) und Hashed Message Authentication Code (HMAC).

Ein Hash-Algorithmus verwendet ein Datenpaket, um eine eindeutige Hash-Zeichenfolge zu erstellen. Die Maschine, die das Paket sendet, sendet das Paket immer zusammen mit dem Hash-Wert.

Die empfangende Maschine kennt den Algorithmus, mit dem der Hash erstellt wurde, und kann ihn auf die Daten anwenden. Der Zweck besteht darin, zu sehen, ob der berechnete Hash-Wert derselbe ist. Wenn der erhaltene Hash-Wert vom Hash des Absenders abweicht, wurden die Daten während der Übertragung beschädigt.


Ubuntu
  1. Wie funktioniert Sanlock in der RedHat-Virtualisierung?

  2. Wie funktioniert Rm? Was macht Rm?

  3. Wie funktioniert sig_atomic_t eigentlich?

  4. Wie funktioniert ein Debugger unter Linux?

  5. Wie funktioniert der ps-Befehl?

Was ist Reverse-DNS und wie funktioniert es?

Wie funktioniert SFTP?

Ssh – Wie funktioniert Reverse-SSH-Tunneling?

Was ist Docker? Wie funktioniert es?

Wie funktioniert Swap-Speicher in Linux?

Wie funktioniert die Anzeige von Linux?