Risiko der Verwendung von öffentlichen ssh-Schlüsseln

10

Ich habe Server A und Server B (Backup) und habe mich gefragt, ob jemand möglicherweise in Server A einbricht. Könnte dies möglicherweise gefährlich sein, in Server B einzudringen, wenn ich die kennwortlose Anmeldung mit öffentlichen SSH-Schlüsseln konfiguriert habe?

Ich versuche, rsnapshot einzurichten.

Vielen Dank


quelle

Antworten:

21

Ja, dies ist eines der Probleme mit kennwortlosen SSH-Schlüsseln. Wenn Sie einen privaten Schlüssel auf Server A speichern, mit dem Sie eine Verbindung zu Server B herstellen können, bedeutet der Zugriff auf Server A effektiv Zugriff auf Server B. (Nicht das Gegenteil ist der Fall - der Zugriff auf Server B führt nicht zu einem Sofortiger Kompromiss von Server A, vorausgesetzt, Sie haben nicht auch SSH-Schlüssel eingerichtet, um kennwortlose Anmeldungen in diese Richtung zu ermöglichen.

Es gibt einige Dinge, die Sie tun können, um dies zu mildern:

  • Wenn der Prozess nicht vollständig automatisiert werden muss, fügen Sie Ihren SSH-Schlüsseln ein Kennwort hinzu. (Dies funktioniert wahrscheinlich nicht für Sie, da Sie feststellen, dass es sich um ein Backup handelt.)
  • Für kennwortlose Anmeldungen unter Ihrem eigenen Konto auf mehreren Computern empfehle ich, für jeden Computer, auf dem Sie physisch eingeben, einen Kennwortschlüssel zu erstellen und den Schlüssel während der Verwendung im SSH-Agenten zu speichern. Die Agentenweiterleitung sollte es Ihnen ermöglichen, von Host zu Host zu "hüpfen", ohne Schlüssel auf jedem Remote-Host zu erstellen.
  • Für automatisierte, kennwortlose SSH-Schlüssel empfehle ich, die Befehle einzuschränken, die der Schlüssel ausführen kann. authorized_keysStellen Sie in Ihrer Datei jedem Schlüssel Folgendes voran:
    command="<allowed command line here>",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty

Vor 8 bis 9 Jahren arbeitete ich in einer gemeinsam genutzten Benutzerumgebung mit Hunderten von lokalen Benutzern, und SSH-Schlüssel-basierte Anmeldungen wurden deaktiviert, da es keine Möglichkeit gab, Kennwortrichtlinien für die Schlüssel durchzusetzen. Solange Sie das Szenario vollständig kontrollieren, sind SSH-Schlüssel heutzutage definitiv besser als nur die Verwendung von Passwörtern.

Natacado
quelle
7

Ja, die meisten Anleitungen im Internet hören auf, passwortloses SSH zum Laufen zu bringen, anstatt es sicher zum Laufen zu bringen. Dieser Leitfaden zeigt sehr gut, was getan werden kann, um die Risiken zu verringern. Grundsätzlich (um den Artikel zu zitieren):

  • Erstellen Sie ein Einzelzweck-Rollenkonto für den Job: dh einen Benutzer dnssyncauf jedem Computer
  • Wenn möglich, machen Sie die Dateien für diesen Benutzer beschreibbar, anstatt sich darauf zu verlassen, dass Sie root sind
  • Erstellen Sie für die Bits, die wirklich privilegierten Zugriff benötigen, ein Skript, um dies zu tun, und verwenden Sie sudo
  • Verwenden Sie command=und from=Optionen in authorized_keysDateien, um die Schlüssel ohne Passphrase einzuschränken
  • Schreiben Sie für die Dateiübertragung ein Skript mit rsync auf den empfangenden Computer, damit der Remotezugriff schreibgeschützt ist
  • Wenn dies bedeutet, dass vom Remote-Computer aus ein Zugriff auf den initiierenden Computer erforderlich ist, verwenden Sie ssh-agenteinen zweiten Schlüssel ohne Passphrase , anstatt ihn zu erstellen
jldugger
quelle
4

Es gibt einige Probleme mit SSH-Schlüsseln:

Keine zentralisierte Möglichkeit, einen Schlüssel zu widerrufen.

Keine Möglichkeit, Kennwortrichtlinien für Schlüssel durchzusetzen (wird Ihr privater Schlüssel verschlüsselt, und wenn ja, wird er mit einem guten Kennwort verschlüsselt?).

Dies sind die Probleme, die Kerberos löst. Es werden jedoch andere vorgestellt, nämlich die Implementierung ist komplexer und erfordert eine echte Benutzerverwaltungsinfrastruktur für die Bereitstellung und Verwaltung.

Obwohl ssh autorisierte_Tasten Angriffe vom Typ Morris-Wurm zulassen , ist sie auf jeden Fall meilenweit (Lichtjahre) besser als .r-Dienste und Telnet.

chris
quelle
Wenn Sie LDAP verwenden, können Sie den öffentlichen Schlüssel im Verzeichnis speichern und dann (OpenSSH-LPK-Patches) [ code.google.com/p/openssh-lpk/] verwenden - dies hilft, das erste Problem zu lösen, obwohl Sie es sind Jetzt müssen neue SSH-Binärdateien erstellt und verteilt werden. Der Gesamtnutzen kann negativ sein.
Zanchey
Das ist interessant, aber es klingt fast so viel Arbeit wie das Einrichten von Kerberos.
Chris
2

In jeder Umgebung, über die ich die Kontrolle hatte, war ich immer ein echter Verfechter der minimal möglichen Berechtigung für Dienstkonten.

In diesem Fall würde ich vorschlagen, sicherzustellen, dass das Benutzerkonto auf dem Remote-Server nur einen kleinen, genau definierten Satz ausführbarer Dateien ausführen darf. Sie können mehrere Konten auf der Remote-Seite und sudo verwenden, um dies zu erreichen.

Selbst in diesem Fall sind Sie immer noch den Eskalationsfehlern für lokale Berechtigungen ausgesetzt. Seien Sie also akribisch und verfolgen Sie Sicherheitslücken genau.

duffbeer703
quelle