Zwischenspeichern einer Master-Passphrase auf einem Linux-Server

7

Ich versuche, Schlüsselbund auf Debian neuesten Stall mit einigen Schwierigkeiten zu verwenden. Bei der Online-Suche konnte ich keine Lösung finden, dachte aber, dass in diesem Fall ein anderer Ansatz oder ein anderes Tool besser sein könnte.

Ich möchte etwas ziemlich Unkompliziertes erreichen:

  • Wenn Sie sich nach dem Neustart als Root beim Server anmelden, wird der Benutzer einmal zur Eingabe einer Master-Passphrase aufgefordert .
  • Diese Passphrase wird in den Speicher geladen und zum Entsperren sowohl des ssh private key(zum Abrufen von Code aus einem Remote-Git-Repository, der Remote-Authentifizierung usw.) als auch des gpg private key(zum Entschlüsseln einiger Konfigurationsparameter, die auch von Git stammen) verwendet.

Auf diese Weise kann nur die Passphrase extrahiert werden, wenn Sie nur Zugriff auf das Root-Konto haben oder Speicher sichern können. Sobald der Server neu gestartet wird, wird die Passphrase gelöscht. Ich habe nicht das Budget / die Ressourcen für einen HSM oder etwas Aufwändigeres. Ich möchte etwas Einfaches und Billiges und das funktioniert zuverlässig und sicher genug.

Schlüsselbund scheint ein guter Kandidat zu sein, aber ich kann ihn nicht richtig zum Laufen bringen, um beide Anforderungen zu erfüllen. Es wird nämlich zweimal nach der Pasphrase gefragt, und auch beim Versuch, etwas mit gpg zu entschlüsseln, wird ein drittes Mal danach gefragt ... Gibt es eine Möglichkeit, dies sicher mit einem Schlüsselbund oder einem anderen Tool oder Shell-Skript zu erreichen?

[ps nicht sicher, ob dies auf ServerFault oder hier gehört]

Yoav Aner
quelle
1
Der Schlüsselbund macht nicht das, was Sie denken: Er veranlasst nur das Starten und Stoppen von ssh-agent und gpg-agent. Beide Programme speichern Schlüssel, keine Passphrasen. Wenn Sie also einen SSH-Schlüssel und einen GPG-Schlüssel haben, müssen Sie zwei Passphrasen eingeben, auch wenn diese zufällig identisch sind. Sie können die Schlüssel in einem Gnome-Schlüsselring ( gnome-keyring-daemon) speichern und diesen einmal pro Sitzung entsperren. Aber Sie müssten eine Version bekommen, die GPG unterstützt (die in Debian nicht, AFAIK), und sie ist ohne X unhandlich.
Gilles 'SO - hör auf böse zu sein'
1
Nur als Randnotiz - eine Alternative zur Verwendung eines TrueCrypt-Containers, der sowohl (passphrasenlose) gpg- als auch ssh-Schlüssel enthält, würde die funktionalen Anforderungen erfüllen, aber nicht die Sicherheitsanforderungen! (die Schlüssel / Passphrase nur zum besseren Schutz im Speicher speichern sollen) ... obwohl dies derzeit mein Fallback ist, wenn ich keinen Schlüsselbund oder ähnliches zum Laufen bringen kann ...
gnome-keyring-daemonselbst erfordert kein X, aber ich weiß nicht, ob es eine Möglichkeit gibt, Schlüssel ohne X einzugeben. Es entspricht jedoch nicht Ihren Sicherheitsanforderungen, da die Schlüssel in einer Schlüsselbunddatei gespeichert werden. Auf der anderen Seite sehe ich keinen Unterschied in Bezug auf die Sicherheit zwischen der Speicherung mehrerer Dateien auf derselben Festplatte und dem Schutz durch dasselbe Kennwort (SSH-Schlüssel und GPG-Schlüssel) und einer Datei, die durch dieses Kennwort geschützt ist (Gnome-Schlüsselbund oder kennwortlose Schlüssel) auf einem encfs- oder truecrypt-Dateisystem).
Gilles 'SO - hör auf böse zu sein'
Vielleicht haben Sie Recht, und es gibt keinen ausreichend großen Sicherheitsunterschied. Ich dachte nur, wenn jemand in das Root-Konto gelangt, in dem die verschlüsselte Datei / der verschlüsselte Container bereits bereitgestellt ist, kann er alle diese Schlüssel problemlos kopieren. Wenn Sie einen Schlüsselbund oder ähnliches verwenden, müssen Sie den Speicher überprüfen, um diese Schlüssel zu extrahieren. Dies sollte nur ein wenig (aber wahrscheinlich nicht wesentlich) schwieriger sein ...
ssh-agent speichert Passphrasen bis zum Neustart im Speicher. Ich benutze das für den in der Frage beschriebenen Zweck, mit ein wenig Skript, um die Verbindung zu ssh-agent zu automatisieren. Dies gilt jedoch nur für SSH-Schlüssel, und obwohl eine ähnliche Methode wahrscheinlich für GPG-Schlüssel funktioniert, müssen Sie dennoch zwei Kennwörter eingeben (eines für SSH-Agent und eines für GPG), sodass ich nicht sicher bin, ob dies gut genug wäre Du. Es braucht aber kein X.
Janos

Antworten:

2

Verwenden Sie ein separates verschlüsseltes Dateisystem (das tatsächlich in einer regulären Datei gespeichert und über dm bereitgestellt werden kann). In Bezug auf die Sicherheit führen die Zugriffsberechtigungen für das Dateisystem den gleichen Trick aus wie die Speicherung im virtuellen Speicher eines laufenden Prozesses. Auf beide kann über root zugegriffen werden (es sei denn, Sie ergreifen zusätzliche Maßnahmen, um dies zu verhindern). Tatsächlich sollte es weniger wahrscheinlich sein, dass das Kennwort beim Auslagern landet, als im Fall des Zwischenspeicherns in einem Agenten-Helfer. Sie sollten Ihren Swap jedoch trotzdem verschlüsselt (oder vollständig deaktiviert) lassen, wenn die Sicherheit Ihr Hauptanliegen ist.

Peterph
quelle
Danke Peterph. Das ist so ziemlich das, was ich letztendlich benutzt habe. Ich habe ein ecryptfs-Dateisystem mit einer Passphrase gemountet, die mit dem privaten Schlüssel ssh generiert wurde. Ich lade den ssh-Schlüssel also nur einmal in den Speicher und kann daraus andere Passphrasen generieren ... Ich sollte den Code wahrscheinlich einige Zeit online stellen, bin aber nicht ganz dazu gekommen.
Yoav Aner