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_keys
Stellen 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.
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.
quelle