Fernwartung mit SSH

☰ Menü

 Bevor wir beginnen:
Diesen Minikurs zum Mitnehmen gibt's im Fundus zum Download .

SSH-Grundlagen

 

Was ist SSH?

SSH (Secure Shell) ist sowohl die Bezeichnung eines Netzwerkprotokolls als auch der Name entsprechender Netzwerkprogramme. Es gibt mehrere Implementierungen von SSH. Unter Linux wird das quelloffnene OpenSSH eingesetzt.

SSH ermöglicht eine gesicherte Fernwartung anderer Rechner über ungesicherte Netzwerke (Internet / LAN) mit Konsolenbefehlen bzw. speziellen Dateimanangern (z.B. WinSCP). Die aktuelle Version SSH-2 enthält weitere Funktionsmerkmale wie SCP (Secure Copy) und SFTP (SSH File Transfer Protocol). Sie sind eine verschlüsselte Alternative zu den ungesicherten Protokollen RCP (Remote Copy) und FTP (File Transfer Protocol).

Fernwartung

 

Mit SSH können andere Netzwerkverbindungen wie bsp. VNC (Virtual Network Computing) getunnelt werden. SSH liegt im Netzwerkprotokollstapel auf der Anwendungsschicht (OSI-Ebene 7). Somit baut SSH grundsätzlich Ende-zu-Ende-Verbindungen auf. Sie wissen bereits (bzw. werden noch kennen lernen), dass öffentliche Schlüssel von HTTPS-Servern bei CAs (Zertifizierungsagenturen) hinterlegt sind. Internetprovider betreiben Proxy-Server, welche einen Schlüsselaustausch prinzipiell ermöglichen. Somit hat zumindest der Provider die Möglichkeit, HTTPS-Verbindungen einzusehen. Bei SSH ist dies anderes: Es gibt keine CAs. SSH-Client und -Server müssen einander direkt vertrauen. Sie verwenden asymmetrische Verschlüsselung. Öffentlicher und privater Schlüssel sind mit einem identischen Fingerabdruck (engl. Fingerprint) gekennzeichnet. Es findet keine Entschlüsselung auf dem Übertragungsweg statt. Die aktuelle Version SSH-2 wird aktuell von Fachleuten als sicher eingeschätzt.

Authentifizierung

Der SSH-Server weist sich dem Client gegenüber durch den Fingerabdruck seines öffentlichen Schlüssels (RSA-, DSA- oder ECDSA-Zertifikat) aus. Bei der ersten Verbindung zeigt der SSH-Client Putty folgenden Warnhinweis:

RSA2-Zertifikat

 

Klickt man 'Ja', wird der Serverschlüssel vom SSH-Clienten gespeichert. Der häufig unter Windows genutzte SSH-Client Putty legt diese Information in der Registrierungsdatenbank im Zweig HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys ab.

Registry

 

Bei Linux sieht das dann so aus: Man meldet sich mit dem Konsolenbefehl ssh username@host an. Der Fingerabdruck wird vom Client an die Datei /home/{linux-user}/.ssh/known_hosts bzw. /root/.ssh/known_hosts angehängt, falls Sie sich für die Antwort 'yes' entschieden haben.

ECDSA-Zertifikat

 

Vergleichen Sie die beiden Windows-Screenshots mit der Anzeige in der Linux-Konsole! Was fällt Ihnen auf? Es erfolgt ein SSH-Zugriff von einem Windows-Client und von einem Linux-Client auf ein und den selben Server. Aber was ist der wesentliche Unterschied?

Richtig! Putty bevorzugt RSA2, Linux ECDSA. Der Server unterstützt mehrere Verschlüsselungsvarianten, unter anderem: RSA (benannt nach den Entwicklern Rivest, Shamir, Adleman), DSA (Digital Signature Algorithm) und ECDSA (Elliptic Curve Digital Signature Algorithm). Welche Variante zum Zuge kommt, hängt davon ab, was Client und Server bem Verbindungsaufbau miteinander aushandeln.

Es stellt sich noch die Frage, wie Sie herausfinden, ob der angezeigte Fingerabdruck wirklich dem öffentlichen Schlüssel genau dieses SSH-Servers gehört. Alle SSH-Schlüssel sind im Ordner /etc/ssh gespeichert. Die öffentlichen Schlüssel erkennen Sie an der Endung .pub. Mit dem Konsolenbefehl ssh-keygen -lf keyfile können Sie sich den MD5-Fingerabdruck anzeigen lassen. Diesen können Sie ggf. auf Ihrer Webseite veröffentlichen.

 

In jedem Fall ist es ratsam, den Fingerabdruck des Serverschlüssels auf dem Client zu speichern. Bei der nächsten SSH-Sitzung werden Sie dann nicht mehr gefragt, ob Sie den Fingerabdruck speichern möchten.

Das Schema zeigt den vereinfachten Ablauf des Aufbaus einer SSH-Verbindung:

SSH-Verbindungsschema

 

Aufgaben 1

  1. Lesen Sie die Artikel de.wikipedia.org/wiki/Secure_Shell und de.wikipedia.org/wiki/Public-Key-Authentifizierung! Machen Sie sich strukturierte Notizen, insbesondere zu den Abschnitten Funktionsweise und Sicherheit, sowie zur Public-Key- Authentifizierung!
  2. Nach erfolgreichem Aufbau der verschlüsselten Verbindung wird ein Sitzungsschlüssel erzeugt, mit dem alle Nutzdaten verschlüsselt werden. Erläutern Sie den Zweck dieses zusätzlichen Schlüssels!
  3. Erläutern Sie anhand des Artikels de.wikipedia.org/wiki/Tunnel_(Rechnernetz) den Begriff Tunnel!
  4. Welchen Port nutzt SSH standardmäßig?
  5. Betrachten Sie das Bildschirmfoto des Programms Putty! Warum ist es ratsam, den Fingerabdruck des Serverschlüssels auf dem Clienten dauerhaft zu speichern?
  6. Egal ob Sie Putty unter Windows, oder den Linuxkonsolenbefehl SSH starten, der Fingerabdruck wird im Profil des gerade angemeldeten Benutzers und nie im benutzerunabhängigen Teil, z.B. HKEY_LOCAL_MACHINE bzw. /etc/ssh/ gespeichert. Was ist die Konsequenz?

 

W. Hermanns, © 2017