Mit autorisierten SSH-Schlüsseln die Aktualisierung privilegierter Dateien in einem LAN durchführen?

505
Stilez

Ich habe einen Server, der von Zeit zu Zeit einen Satz privilegierter Dateien (z. B. Zertifikatsschlüssel, Konfigurationsdateien usw.) automatisch aktualisiert. Es muss diese Dateien auf anderen Systemen im LAN speichern. Ich weiß ungefähr, wie es geht, aber ich kenne die Details der Implementierung nicht.

Die Remote-Befehle zum Empfangen und Speichern der Dateien (die auf diesen anderen LAN-Servern ausgeführt werden) können als statisch betrachtet werden oder sehr selten geändert werden. Sie können hart codiert sein. Dies bedeutet, dass sie ideal für die Verwendung mit autorisierten SSH-Schlüsseln sind, jedoch viele Es ist jedoch Vorsicht geboten, da die empfangenen und gespeicherten Dateien immer noch privilegiert und in Pfaden gespeichert werden, die sonst nur von root lesbar sind. Bei den beteiligten Systemen handelt es sich ausschließlich um FreeBSD (+ eine OpenBSD).

Ich visualisiere einen Prozess wie folgt:

  1. Generieren Sie ein Schlüsselpaar ssh-keygen, das für lokales SSH geeignet ist (muss nicht mit einem öffentlichen Netzwerk oder anderen Systemen oder Funktionen arbeiten).
  2. Erstellen Sie PRIV_USERauf allen Systemen ein privilegiertes Konto, auf das außer über sshd überhaupt kein Zugriff besteht (es werden entweder im Allgemeinen su Berechtigungen benötigt, die für ein festes Skript sicher sein sollten, oder mindestens Schreibzugriff auf bestimmte fest codierte Speicherorte, die normalerweise von gelesen / beschrieben werden können) nur root, da die empfangenen Dateien gespeichert werden müssen).
  3. Richten Sie auf allen anderen Systemen einen Abschnitt "Authorized Keys" in sshd ein, der bei einer Verbindung als PRIV_USERautomatisch ein tar-Archiv von Dateien empfängt, diese auf das lokale Dateisystem entpackt und die Verbindung dann trennt.
  4. Wenn auf dem sendenden System Dateien remote aktualisiert werden müssen, führen Sie ein kurzes Skript aus, das ein tar-Archiv der zu sendenden Dateien erstellt und dann eine Verbindung zu den Remote-Systemen herstellt, da PRIV_USERdie Dateien über SSH gesendet werden. stellt fest, dass die Konsole nicht erfolgreich war / ist, und beendet den Vorgang.

Ich möchte verhindern, dass die Sicherheit durch falsche Informationen beeinträchtigt wird, und ich habe bisher keine autorisierten Schlüssel für diesen Zweck verwendet, noch musste ich meine eigenen internen Schlüsselpaare für einen solchen Zweck generieren oder eingeschränkte privilegierte Konten erstellen. Es gibt also viele Möglichkeiten, wie ich es leicht falsch verstehen kann.

Was sind die richtigen Befehle, die ich für eine minimale grundlegende Implementierung dieser Funktion verwenden sollte? :)

0
SSH verwendet kein SSL. SSH-Schlüssel verfallen nicht. Sie haben keine CA. Daniel B vor 6 Jahren 1
Danke - ich habe ein bisschen editiert. Wenn weitere Korrekturen erforderlich sind, lass es mich wissen und ich bearbeite das Q, um es zu korrigieren. Stilez vor 6 Jahren 0
Nun, wie gesagt: Kein SSL beteiligt. Also kein OpenSSL / LibreSSL, keine Vertrauenskette oder was auch immer. Es sind überhaupt keine CAs beteiligt. Einfach "ssh-keygen". Daniel B vor 6 Jahren 0
Danke - Ich habe Verweise auf OpenSSL / LibreSSL bearbeitet und entfernt. Stilez vor 6 Jahren 0

1 Antwort auf die Frage

0
danblack
  1. ssh-keygen zum Erstellen eines lokalen Schlüssels
  2. Neue Server erstellen
  3. ssh-copy-id an root @ newserver
  4. ansible Playbook-Repository der gewünschten Konfiguration erstellen (nur sshd-Passwort)
  5. Lauf ansible-playbook