Linux-Pass-Dienstprogramm für mehrere Benutzer

10

Ich versuche, einen geschäftsinternen Kennwortspeicher einzurichten, der von verschiedenen Skripten (und Personen) verwendet wird. Ich habe mir viele Alternativen angesehen, aber die einfachste Änderung, um mein Ziel zu erreichen, scheint der passNutzen zu sein.

Ich bin nicht so gut mit Sicherheit und ein echter Neuling, wenn es um GPG geht. Ich habe es geschafft, Dinge für einen einzelnen Benutzer zum Laufen zu bringen, indem ich:

  • Generieren eines neuen GPG-Schlüssels
  • mit pass init <key_hex>

Ich weiß auch, dass ich die -pOption (oder eine env-Variable) verwenden kann, um den Passspeicher in einem "Daten" -Ordner anstatt in einem Home-Verzeichnis zu initialisieren (standardmäßig ~/.password-store).

Ich bin jedoch in einer Situation, in der ich möchte, dass alle Benutzer eines (Linux-) Hosts / einer Box (oder Benutzer einer bestimmten Gruppe später) auf denselben Kennwortspeicher zugreifen können. Nach meinem Verständnis muss ich für alle diese Benutzer einen gemeinsamen GPG-Schlüssel erstellen, damit jeder Benutzer das passDienstprogramm verwenden kann, um auf denselben Speicher zuzugreifen und Kennwörter abzurufen. Ich habe keine Ahnung, wie man so ein Setup macht und ich stecke irgendwie fest ...

Jede Hilfe wäre dankbar

städtisch
quelle
Passwortspeicher für Skripte? Klingt nach dem XY-Problem. meta.stackexchange.com/a/66378/307622 Warum möchten Sie, dass mehrere Benutzer auf denselben Kennwortspeicher zugreifen?
Wildcard
Hallo @Wildcard, dies ist ein häufiges Problem (glaube ich) in einem NOC. Es gibt viele Skripte für verschiedene Jobs, aber es gibt die Regeln: (1) Keine Hardcodierungsdurchläufe, (2) Niemals, niemals Klartextdurchläufe (irgendwo anders als im Speicher - keine Dateien, keine Cmd-Zeile, nicht auf dem Draht) . Daher ist ein Mechanismus erforderlich, um sagen zu können "Gib mir Cisco Ro Community". Manchmal führt ein Benutzer das Skript / Tool aus ... damit wir fragen können ... aber manchmal ist es eine CRON-basierte Sache. Ich erwähne die interne Ursache, weil es nicht kugelsicher sein muss - es ist ein stark feuerwandiges Netzwerk. Alle Richtungen / Ideen werden gut sein
urban
Eine andere Sache, die zu klären ist, ist, dass ich das Dienstprogramm ändern muss, um gruppenbasierten Zugriff, Syslog, Pass-Roll-Outs usw. für viele geschäftliche Anforderungen durchzuführen. Also passscheint mir das flexibelste Werkzeug (könnte falsch sein)
urban
2
Ich bin sicher, die Antwort ist in Unterschlüsseln ... aber ich habe hier eine andere Software verwendet , die auf pythonundkeepassdb
urban

Antworten:

9

Der .gpg-idDatei können mehrere GPG-IDs hinzugefügt werden, um jedes Kennwort im Verzeichnis zu verschlüsseln. Dies würde einen gemeinsamen Passwortspeicher für verschiedene Mitglieder ermöglichen, ohne dass der private Schlüssel an alle weitergegeben werden muss.

Es ist auch möglich, Unterverzeichnisse mit unterschiedlichen Gruppen von GPG-IDs zu erstellen, wenn dies sinnvoll ist.

Siehe man passunter dem initAbschnitt für weitere Details.

Hier ist ein ausgezeichneter Artikel, der den Prozess beschreibt: https://medium.com/@davidpiegza/using-pass-in-a-team-1aa7adf36592

Hoffe das hilft.

mantlepro
quelle
6

Um zu vermeiden, dass ein privater Schlüssel freigegeben wird, der nicht wirklich ihr Zweck ist, sollten Sie sich die relativ neue gopassAlternative zu ansehen pass, die mit passmehreren Empfängern kompatibel ist und diese ermöglicht, während Sie eine gitbasierte Arbeit erzwingen. fließen.

Es ist Open Source, Go-basiert und auf Github verfügbar .

Es bietet die folgenden Funktionen, die Ihnen derzeit möglicherweise fehlen, wenn Sie pass in einer Umgebung mit mehreren Benutzern verwenden:

  • Git Auto-Push & Auto-Pull, um keine Änderung zu verpassen.
  • Multi-Stores, die wie Dateisysteme auf Linux / UNIX-Systemen übereinander gemountet werden können
  • Listen Sie Empfänger in der Befehlszeile auf, fügen Sie sie hinzu und entfernen Sie sie
  • Speichern Sie die öffentlichen GPG-Schlüssel in einem Schlüsselordner im Kennwortspeicher
  • voll kompatibel mit git pgp signierten Commits

Dies ist sehr interessant, wenn Sie in einem Team arbeiten, um Passwörter auszutauschen.

Es ist wie pass, was bedeutet, dass es verwendet wird gpg, es speichert die Passwörter im gleichen Format wie passin der ersten Zeile der .gpgDateien usw.

Der normale Workflow mit Gopass wäre wie folgt:

  1. Ein Benutzer richtet den Kennwortspeicher ein (oder nimmt passeinen) und fügt jeden Empfänger hinzu.
  2. Der Benutzer teilt den Kennwortspeicher in einem allgemein zugänglichen Git-Repository (wenn möglich auf einem internen Git-Server. Da jedoch alles verschlüsselt ist, können Sie ihn auch auf einem externen Server speichern. Beachten Sie jedoch, dass die Strukturen und Namen Ihrer Einträge so sind ausgesetzt.)
  3. Jeder arbeitet mit seinem eigenen privaten Schlüssel, um die Daten zu entschlüsseln, die dann bei Änderungen mit den öffentlichen Schlüsseln aller neu verschlüsselt werden.

Das Schöne ist, dass jedes Commit für Ihren Passwortspeicher über git signiert werden kann, mit PGP-Smartcards kompatibel ist. passWenn Sie Go bereits in Ihrem Leben verwendet haben, können Sie es ganz einfach nach Ihren Wünschen anpassen. Der Code enthält umfangreiche Komponententests und eine ausreichend gute Dokumentation.

In Ihrem speziellen Fall sollte es ziemlich gut funktionieren. Sie können sogar vollständig entfernte Git-Server vermeiden und diese einfach in einem gemeinsamen Ordner speichern.

Lery
quelle
1

Jeder Benutzer hat Zugriff auf die Übergabe und führt eine Übergabe an dieses Verzeichnis durch, wobei ein GPG-Schlüssel in seinem Schlüsselbund vorhanden ist (ein zweiter statt seines eigenen).

Stellen Sie zunächst sicher, dass Ihr Passspeicher mit git initialisiert ist.

Fügen Sie die benötigten Passwörter hinzu. Commit und Push zu einem Repo, auf das alle Benutzer zugreifen können.

Dann klont jeder Benutzer dieses Git-Repo, das Ihr verschlüsseltes Passwort enthält (aber nicht den GPG-Schlüssel).

Sie können Ihren GPG-Schlüssel verbreiten mit:

gpg --export-secret-key -a "User Name" > private.key

Und dann für jeden Benutzer importieren

gpg --allow-secret-key-import --import private.key

Schließlich wird jeder Benutzer ein eigenes Pass-Repo mit der gemeinsam genutzten GPG-Schlüssel-ID initiieren

init [ --path=sub-folder, -p sub-folder ] gpg-id...

Sie können die Schlüssel-ID mit erhalten

gpg --list-keys 

NB: Sie müssen über die Logistik der Freigabe privater Schlüssel nachdenken.

Ich zitiere [email protected] auf diesem guten Spickzettel über GPG

Anwendungsfall * .2: Oben wurden die Befehle zum Exportieren und Importieren geheimer Schlüssel erwähnt, und ich möchte einen Grund erläutern, warum Sie dies möglicherweise tun möchten. Wenn Sie zu einer Gruppe gehören und ein einzelnes Schlüsselpaar für diese Gruppe erstellen möchten, erstellt eine Person das Schlüsselpaar, exportiert dann die öffentlichen und privaten Schlüssel, gibt sie an die anderen Mitglieder der Gruppe weiter und Sie würden alle dieses Schlüsselpaar importieren. Dann könnte ein Mitglied der Gruppe oder eine andere Person den öffentlichen Schlüssel der Gruppe verwenden, die Nachricht und / oder Daten verschlüsseln und an Mitglieder der Gruppe senden, und alle könnten auf die Nachricht und / oder Daten zugreifen. Grundsätzlich könnten Sie ein vereinfachtes System erstellen, in dem nur ein öffentlicher Schlüssel benötigt wird, um verschlüsselte Daten an mehrere Empfänger zu senden.

Antoine Claval
quelle