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

Wie SSH eine sichere Kommunikation herstellt

Wenn wir sensible Informationen/Briefe versenden, möchten wir, dass diese vor der Außenwelt verborgen bleiben. Deshalb haben wir dafür gesorgt, dass es geschützt ist, indem wir es in einem Umschlag versiegelt und mit dem United States Postal Service (USPS) an einen Bestimmungsort geschickt haben. So haben wir früher zumindest Informationen verschickt. Ich trete nicht einmal in eine Diskussion über Verschlüsselung und Morsecode ein, die eine höhere Geheimhaltungsstufe verwendeten.

Jetzt, da wir Menschen uns weiterentwickelt und an das Internet angepasst haben, tauschen wir Informationen über eine sichere Verbindung aus. Früher haben wir Telnet verwendet, um uns über Port 23 mit einem Remote-Server zu verbinden. Das Problem war, dass wir die Informationen per Klartext gesendet haben, was bedeutet, dass jeder, der die Informationen lesen wollte, das Netzwerk ausspionieren konnte und die Informationen kompromittiert wurden (das Äquivalent ist dass sie den über den USPS gesendeten Brief öffnen und lesen könnten.)

Dieses Ergebnis ist nicht das, was wir wollten, als wir die ursprüngliche Nachricht gesendet haben. Es muss eine sichere Möglichkeit geben, eine Nachricht an einen entfernten Server zu senden, richtig? Auf jeden Fall, und die Lösung besteht darin, es über die Secure Shell (SSH) zu senden.

Wie SSH verschlüsselte Nachrichten sendet

Ich möchte also sicher mit verschlüsselten Nachrichten vom Client zum Server und umgekehrt kommunizieren. Ich erreiche dies mit SSH wie folgt. SSH stellt eine sichere Verbindung zwischen zwei Hosts über Port 22 her:Host-1 (der Server) und Host (der Client). Nachdem sie sich gegenseitig authentifiziert haben, haben sie den sicheren Nachrichtenaustausch aktiviert.

Verschlüsselungstypen

SSH verwendet drei verschiedene Verschlüsselungstypen:

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

Ich werde diese Typen kurz erklären.

Symmetrische Verschlüsselung

Die symmetrische Verschlüsselung wird auch als Shared-Key-Verschlüsselung bezeichnet und besteht normalerweise aus einem einzelnen Schlüssel oder einem Schlüsselpaar, das sowohl für die Verschlüsselung als auch für die Entschlüsselung einer Nachricht verwendet wird. Dieser Schlüssel wird verwendet, um die gesamte Kommunikationssitzung zwischen einem Client und einem Server zu verschlüsseln.

Sowohl Client als auch Server einigen sich auf ein einziges Verfahren und generieren einen gemeinsamen Schlüssel, der natürlich niemals an Dritte weitergegeben wird und daher zum Senden von gemeinsamen/geheimen Schlüsselnachrichten verwendet wird. Das Interessanteste an dieser Methode ist, dass der Schlüssel niemals zwischen einem Client und einem Server ausgetauscht wird. Stattdessen berechnet jede Maschine den gemeinsam genutzten Schlüssel unabhängig unter Verwendung einer zuvor vereinbarten Methode. Selbst wenn ein Drittanbieter-Computer die Daten erfasst, kann er sie nicht entschlüsseln, da die zum Verschlüsseln der Daten verwendete Methode unbekannt ist.

Asymmetrische Verschlüsselung

Anders als das obige Verfahren verwendet dieses Verfahren ein Schlüsselpaar zur Verschlüsselung und Entschlüsselung. Diese werden als öffentliche und private Schlüssel bezeichnet. Der öffentliche Schlüssel ist, wie der Name schon sagt, weit verbreitet. Der private Schlüssel ist funktional eng mit dem öffentlichen Schlüssel verwandt, kann aber nicht allein durch Kenntnis des öffentlichen Schlüssels berechnet werden.

Der private Schlüssel ist ein wichtiger Faktor in der gesamten Kommunikation, da die Geheimhaltung davon abhängt, dass der private Schlüssel keinem Dritten offenbart wird und er der einzige Schlüssel ist, der die Nachricht entschlüsseln kann, die mit seinem eigenen öffentlichen Schlüssel verschlüsselt ist. Wenn also eine Partei die Nachrichten entschlüsseln und lesen möchte, muss sie den privaten Schlüssel besitzen.

Lassen Sie uns diese Methode mit zwei Systemen ausprobieren. Wir beginnen mit der Workstation, auf der zwei Schlüsselpaare wie folgt generiert werden:

Ich initiiere dann die Verbindung vom Server zur Workstation:

Und daher speichert der Server die Informationen der Arbeitsstation in seinen known_hosts Datei als:

Nachdem der Server überprüft wurde, handeln der Server und der Client einen Sitzungsschlüssel mit dem Diffie-Hellman-Schlüsselaustauschalgorithmus aus. Dieser gemeinsame Schlüssel wird zur Verschlüsselung und Entschlüsselung verwendet.

Die letzte Stufe ist die Authentifizierung des Clients, und dies erfolgt mit dem SSH-Schlüsselpaar. Das folgende Diagramm zeigt, wie dieser Prozess abläuft:

Wenn ich den Befehl ssh -v [email protected] ausführe , Folgendes passiert:

Schlussfolgerung

Der Zweck dieses Artikels war es, den Benutzer darauf aufmerksam zu machen, wie SSH eine sichere Kommunikation zwischen zwei Systemen herstellt. Hoffentlich habe ich einen Einblick in diesen Prozess gegeben.

[Möchten Sie mehr über SSH erfahren? Laden Sie den erweiterten SSH-Spickzettel herunter.]


Linux
  1. Wie generiert man einen SSH-Schlüssel in Linux Dedicated Server?

  2. Wie man SSH unter Linux von Android aus macht

  3. So richten Sie SSH-Schlüssel ein

  4. So richten Sie SSH-Schlüssel unter Ubuntu 18.04 ein

  5. So richten Sie passwortloses SSH unter Linux ein

So richten Sie einen SSH-Schlüssel auf einem Plesk-Server ein

So fügen Sie dem Server einen öffentlichen SSH-Schlüssel hinzu

So richten Sie SSH unter CentOS und RHEL ein

Generieren und Verwenden eines SSH-Schlüssels mit PuTTY

So führen Sie SSH zum Server über Linux

So sichern Sie SSH mit Fail2Ban