SSH: Sicher für den Client, um einen privaten RSA-Schlüssel zu hosten?


10

Ist es sicher, ein öffentliches / privates Schlüsselpaar auf dem Server zu generieren, den öffentlichen Schlüssel zur Liste der autorisierten Schlüssel hinzuzufügen und dann den privaten Schlüssel wie hier beschrieben auf jeden Client zu kopieren ( http://www.rebol.com/docs/)? ssh-auto-login.html ) Angenommen, Sie behalten die permanente Kontrolle über jeden Client? (dh gleicher Benutzer, viele Computer).

Ein typisches Verfahren besteht darin, das öffentliche / private Schlüsselpaar auf dem Client zu generieren und dann den öffentlichen Schlüssel des Clients zur Liste der autorisierten Schlüssel auf dem Server hinzuzufügen, wie hier beschrieben ( http://www.linuxproblem.org/art_9.html ). Wenn Sie mit dieser Methode mehrere Client-Computer haben, muss bei dieser Methode jede Menge mit der Liste der autorisierten Schlüssel verknüpft und im Laufe der Zeit verwaltet werden.

Antworten:


22

Herzlichen Glückwunsch, Sie haben ein Internet-Tutorial mit schlechten Ratschlägen gefunden.

Das Problem bei der Verwendung eines einzelnen Schlüsselpaars für mehrere Computer tritt auf, wenn einer der Computer gefährdet ist. Dann haben Sie keine andere Wahl, als das Schlüsselpaar überall zu widerrufen und jeden einzelnen Computer, der dieses Schlüsselpaar verwendet, neu zu verschlüsseln. Sie sollten immer eindeutige Schlüsselpaare pro Maschine und pro Benutzer verwenden, um den Schaden zu begrenzen, den ein kompromittierter Schlüssel anrichten kann.

Für dieses Tutorial ist es erstaunlich schlecht, das Schlüsselpaar auf dem Server zu generieren und den privaten Schlüssel auf den Client zu kopieren . Das ist völlig rückwärts. Stattdessen sollte das Schlüsselpaar auf dem Client generiert und der öffentliche Schlüssel auf den Server kopiert werden. Es gibt sogar ein Hilfsskript, ssh-copy-iddas genau dies tut und dabei sicherstellt, dass alle Berechtigungen korrekt sind, der Client den Hostschlüssel des Servers erhält usw.

Es kann tatsächlich Situationen geben, in denen Sie die Identitätsschlüssel der Benutzer zentral verwalten möchten, z. B. für automatisierte Skripte. In diesem Fall sollten Sie dies jedoch wirklich von einem dritten Host oder idealerweise von einem Konfigurationsverwaltungssystem wie Puppet aus tun.


2
Darüber hinaus muss sich der Benutzer des Clientcomputers daran erinnern, dass dieser bestimmte Schlüssel nicht sicher für andere Zwecke verwendet werden kann, da Sie nicht wissen können, wo sich der private Schlüssel befunden hat. Wenn Sie wissen, dass der geheime Schlüssel auf dem Client generiert wurde und den Client nie verlassen hat, ist es im Allgemeinen sicher, denselben Schlüssel zu verwenden, um sich bei verschiedenen Systemen anzumelden.
Kasperd

7
Eine Analogie zum Teilen von Nadeln kam mir in den Sinn, aber ich war mir wirklich nicht sicher, ob ich so weit gehen wollte ...
Michael Hampton

Ich bin mir nicht sicher, wie Sie den asymmetrischen Teil in diese Analogie bringen würden.
Kasperd

1
Nun ... hängt davon ab, welches Ende der Nadel Sie sind.
Mircea Vutcovici

3

Das größte Problem mit dem in diesem Lernprogramm beschriebenen Protokoll besteht darin, dass nicht angegeben wird, wie Sie den privaten Schlüssel auf sichere Weise auf den Clientcomputer herunterladen (dh das Abhören verhindern). Wenn Sie noch keinen sicheren Kanal haben, wird der Schlüssel vermutlich eindeutig über das Internet übertragen (HTTP, FTP, E-Mail usw.). Sie können HTTPS verwenden, aber wenn Sie kein echtes Zertifikat haben, kann MITM den Schlüssel schnüffeln. Mach es einfach so, wie du es sollst; Generieren Sie das Schlüsselpaar auf dem Clientcomputer, übertragen Sie den öffentlichen Schlüssel auf den Server und vergessen Sie nicht, eine Prüfsumme der Datei zu überprüfen, um sicherzustellen, dass sie bei der Übertragung nicht geändert wurde.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.