Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
secrets-manager-rs — Ein Kommandozeilenwerkzeug zum sicheren Sichern, Wiederherstellen und Verifizieren von Secrets mithilfe interoperabler Standards wie age-Verschlüsselung und coreutils, das langfristige Zugänglichkeit ohne Vendor-Lock-in gewährleistet. | Kitploit
Tools/GitHubGitHub/fran314/secrets-manager-rs
Verschlüsselungs-/EntschlüsselungstoolsDatenwiederherstellungCloud-SicherheitDevSecOpsDienstprogramme & FrameworksAuthentifizierung
GitHubfran314/secrets-manager-rs

secrets-manager-rs

Ein Kommandozeilenwerkzeug zum sicheren Sichern, Wiederherstellen und Verifizieren von Secrets mithilfe interoperabler Standards wie age-Verschlüsselung und coreutils, das langfristige Zugänglichkeit ohne Vendor-Lock-in gewährleistet.

Repository anzeigen
212vor 1 MonatVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

secs-man

secs-man ist ein Werkzeug zur Verwaltung von Backups von Geheimnissen mit dem Gedanken der Werkzeugunabhängigkeit: Wenn Sie Ihre Geheimnisse mit dieser Software verschlüsseln, sollten Sie in der Lage sein, sie ohne diese Software zu entschlüsseln und wiederherzustellen. Selbst wenn secs-man vom Angesicht der Erde verschwindet, sind Ihre Daten weiterhin zugänglich.

secs-man kann verwendet werden, um Geheimnisse lokaler und entfernter Maschinen zu verwalten, und ist ideal für die Erstellung rein lokaler Backups für Daten, die zu sensibel sind, um irgendwo in der Cloud gesichert zu werden.

Philosophie

Die Theorie

Sie sollten nicht von einer bestimmten Software abhängen, um Ihre äußerst wichtigen Daten zu sichern.

Jede Software, die Sie zwingt, nach der Verwendung in ihrem Ökosystem zu bleiben (wie etwa: „Wenn Sie es mit dieser Software verschlüsseln, können Sie es nur mit dieser Software entschlüsseln"), macht Sie von ihr abhängig.

Daher sollten Verschlüsselung, Entschlüsselung und Wiederherstellung Ihrer wichtigen Daten entkoppelt sein, das heißt, wenn Sie sie mit Software X verschlüsselt haben, sollten Sie sie auch ohne Software X entschlüsseln können.

Die Praxis

In der Praxis können Sie kein Setup erstellen, in dem Ihre Geheimnisse zu 100 % vor Datenverlust sicher sind. Selbst wenn Ihre Software X mit Y, Z und W kompatibel ist, verlieren Sie dennoch den Zugriff auf Ihre Daten, wenn X, Y, Z und W gleichzeitig aufhören zu funktionieren.

Was Sie in der Praxis tun, ist sicherzustellen, dass Sie nur von Technologien abhängig sind, die „Standards" sind oder nahe daran. Ich bin damit einverstanden, von der Existenz von Bash-Interpretern, USB-Anschlüssen und Linux-Maschinen abhängig zu sein.

Das wahre Ziel von secs-man besteht dann darin, perfekt reproduzierbar zu sein, nur mit:

  • ein Terminal
  • Coreutils wie cp, mv und sha256sum
  • age
  • manuelle Arbeit und ein wenig Zeit

Die Abhängigkeit von age ist die heikelste, aber die Abhängigkeit von irgendeiner kryptografischen Bibliothek ist unvermeidlich, und age hat sowohl große Beliebtheit als auch schöne Bindungen in Rust.

Dies stellt sicher, dass Sie, selbst wenn dieser Software etwas zustoßen sollte, das Sie daran hindert, sie wieder zu verwenden, unter der Annahme, dass age noch existiert und Sie bereit sind, 30 Minuten Ihres Lebens zu investieren, dennoch alle Ihre Geheimnisse wiederherstellen könnten.

Der Abschnitt manuelle Wiederherstellung erklärt, wie Sie die von dieser Software exportierten Geheimnisse importieren können, ohne diese Software zu verwenden, also nur mit Coreutils, age und einem Terminal.

Installation

secs-man ist nirgendwo veröffentlicht (weder als veröffentlichte Crate, noch auf nixpkgs, dem AUR oder Ähnlichem). Es kann nur direkt aus diesem Repository installiert werden, auf eine der folgenden Arten.

Mit nix run

Wenn Sie secs-man nur gelegentlich ausführen müssen, können Sie es direkt ausführen, ohne es zu installieren (erfordert aktivierte Flakes)

root@kitploit:~
nix run github:Fran314/secrets-manager-rs -- export /path/to/secrets /path/to/export/endpoint

Über Ihre Nix-Konfiguration

Um secs-man systemweit verfügbar zu machen, können Sie dieses Repository in Ihrer Nix-Konfiguration mit fetchGit importieren und das resultierende Paket zu environment.systemPackages (oder home.packages mit home-manager) hinzufügen.

root@kitploit:~
let
  secs-man = pkgs.callPackage "${builtins.fetchGit {
    url = "https://github.com/Fran314/secrets-manager-rs.git";
    ref = "main";
    # rev = "<commit>"; # pin a specific commit for reproducibility
  }}/default.nix" { };
in
# add `secs-man` to environment.systemPackages or home.packages

Mit cargo

Wenn Sie nicht auf NixOS sind, können Sie die secs-man-Binärdatei installieren, indem Sie cargo auf dieses Repository verweisen.

root@kitploit:~
cargo install --git https://github.com/Fran314/secrets-manager-rs

Beachten Sie, dass keine dieser Methoden das secs-man-ssh-Skript installiert, das für entfernte Maschinen benötigt wird: Es ist ein eigenständiges Skript, das separat aus diesem Repository kopiert werden muss.

Verwendung

Dieses Werkzeug ermöglicht es, Dateien aus einem bestimmten Quellverzeichnis zu exportieren und zu verschlüsseln und sie durch Import in dasselbe Verzeichnis wiederherzustellen. Die empfohlene Art, dieses Werkzeug zu verwenden, besteht darin, alle Ihre „Geheimnisse" (Schlüssel, Dateien, ...) in einem zentralen Verzeichnis zu haben.

Im Wurzelverzeichnis des Geheimnisverzeichnisses sollte eine Klartextdatei .secrets-manifest vorhanden sein, die die Liste der zu verwaltenden Geheimnisse in Form von Pfaden relativ zum Geheimnisverzeichnis enthält. Dateipfade dürfen keine Leerzeichen enthalten. Jeder Eintrag kann auch einen owner und einen mode angeben, die verwendet werden, um beim Import die korrekten Berechtigungen zu setzen. Siehe .secrets-manifest.example für die Syntax.

Während eines Exports werden die im Manifest aufgeführten Dateien mit age mit einer Passphrase verschlüsselt, die über eine interaktive Eingabeaufforderung abgefragt wird (secs-man liest sie niemals aus einer Datei, einem Argument oder einer Umgebungsvariable). Dieselbe Passphrase wird beim Import erneut abgefragt, um die Dateien zu entschlüsseln. Die Integrität der Dateien wird durch eine begleitende *.sha256-Datei gewährleistet, die automatisch erzeugt wird, falls sie fehlt. Die verschlüsselten Dateien werden in einen mit Zeitstempel versehenen Snapshot innerhalb des Export-Zielverzeichnisses exportiert.

Die Dateien können dann entschlüsselt und importiert werden, indem man entweder auf das Export-Zielverzeichnis (um den neuesten Snapshot zu importieren) oder auf einen bestimmten Snapshot in diesem Verzeichnis zeigt.

Die folgenden Befehle können ohne sudo ausgeführt werden, sie schlagen jedoch fehl, wenn das Manifest einen anderen Besitzer angibt als den Benutzer, der den Befehl ausführt (da der interne chown-Aufruf fehlschlägt).

Um Ihre Geheimnisse zu exportieren, führen Sie aus:

root@kitploit:~
sudo secs-man export /path/to/secrets /path/to/export/endpoint

Um die Integrität eines vorhandenen Exports zu überprüfen (siehe Hinweis unten), führen Sie aus:

root@kitploit:~
# to verify the integrity of all the exported snapshots
sudo secs-man verify-export /path/to/export/endpoint

# to verify the integrity of a specific snapshot
sudo secs-man verify-export /path/to/export/endpoint/export-YYYY-MM-DD_HH-MM-SSZ

Beachten Sie, dass bei jedem Export automatisch eine Integritätsprüfung durchgeführt wird. Dies ist nur erforderlich, wenn Sie die Integrität eines alten Exports überprüfen möchten, der möglicherweise beschädigt oder korrupt geworden ist.

Um Ihre Geheimnisse zu importieren, führen Sie aus:

root@kitploit:~
# to import the latest snapshot
sudo secs-man import /path/to/export/endpoint /path/to/secrets

# to import a specific snapshot
sudo secs-man import /path/to/export/endpoint/export-YYYY-MM-DD_HH-MM-SSZ /path/to/secrets

# to import only specific secrets
sudo secs-man import /path/to/export/endpoint /path/to/secrets --pick ssh/id_ed25519 wg/wg0.key

Verwendung mit entfernten Maschinen

Dieses Werkzeug kann auch verwendet werden, um Geheimnisse auf entfernten Maschinen bereitzustellen und zu sichern.

Der einfachste Weg, entfernte Geheimnisse zu exportieren, besteht darin, sie in einem temporären Verzeichnis auf dem entfernten Host zu exportieren und dann den exportierten Snapshot in ein lokales Backup zu kopieren. Ebenso ist es beim Import eines lokalen Backups am einfachsten, den lokalen Snapshot in ein temporäres Verzeichnis auf den entfernten Host zu kopieren und sie von dort zu importieren. Dies hat jedoch das Problem, dass die Verschlüsselungs-/Entschlüsselungspassphrase durch den entfernten Host geleitet werden muss, der möglicherweise als nicht vertrauenswürdig angesehen wird.

Um auf nicht vertrauenswürdigen entfernten Hosts bereitzustellen / von ihnen zu sichern, ohne die Passphrase über den entfernten Host zu übertragen, können Sie das Skript secs-man-ssh verwenden. Dieses Skript setzt keinen Root-Login über SSH voraus (da dieser aus Sicherheitsgründen deaktiviert sein könnte), sondern geht davon aus, dass der entfernte Benutzer sudo-Rechte hat (damit secs-man chown und chmod ausführen kann).

Um von einem entfernten Host zu exportieren, führen Sie aus:

root@kitploit:~
secs-man-ssh export <user@host> <remote-secrets-dir> <local-backup>

# The flow is the following:
# 1. the script copies the remote secrets to a temporary directory on the remote host
# 2. the temporary directory gets chowned to the remote normal user, so that it can be sudo-less read and copied locally
# 3. the temporary directory is copied on the local host and deleted from the remote host
# 4. the local directory gets exported to the local backup, then deleted

Um auf einen entfernten Host zu importieren, führen Sie aus:

root@kitploit:~
# secs-man has to be installed on the remote for the script import to work
secs-man-ssh import <user@host> <local-container> <remote-secrets-dir>

# The flow is the following:
# 1. the latest snapshot gets imported to a temporary local directory with the `--skip-chown-chmod` flag, so that it can be sudo-less read and copied to the remote host
# 2. the local directory gets copied to the remote host in a temporary directory, and deleted from the local host
# 3. the remote temporary directory gets imported to the remote secrets directory with `--from-plaintext`, as the files have already been decrypted
# 4. the remote temporary directory is deleted

Manuelle Wiederherstellung

Export

Exportierte Dateien werden mit age mit einer Passphrase verschlüsselt. Der Name der exportierten Datei ist der ursprüngliche Name mit der zusätzlichen Erweiterung .age.

Um dasselbe Verhalten zu erzielen, können Sie Folgendes verwenden:

root@kitploit:~
age --passphrase --output filename.txt.age --encrypt filename.txt

Beachten Sie, dass:

  • vor dem Export wird die Prüfsumme der Quelldatei überprüft
  • während des Exports wird die vorhandene Prüfsumme der Klartextdatei neben der verschlüsselten Datei exportiert
  • nach dem Export wird für alle verschlüsselten Dateien eine weitere Prüfsumme erstellt, um die Integrität des Exports zu einem späteren Zeitpunkt überprüfen zu können

Export überprüfen

Die Integrität eines Exports zu überprüfen besteht darin, zu prüfen, dass jede Prüfsumme übereinstimmt. Dazu kann man einfach Folgendes ausführen

root@kitploit:~
find . -name "sha256sums.txt" -execdir sha256sum -c sha256sums.txt \;

im Verzeichnis des exportierten Snapshots

Import

Importierte Dateien werden mit age mit einer Passphrase entschlüsselt. Der Name der importierten Datei ist der exportierte Name ohne die Erweiterung .age. Wenn für einen bestimmten Eintrag im Manifest owner und/oder mode angegeben sind, wird die importierte Datei auf den angegebenen Besitzer und Modus gesetzt. Wenn kein Modus angegeben ist, ist der Standardwert 600.

Um dasselbe Verhalten zu erzielen, können Sie Folgendes verwenden:

root@kitploit:~
age --output filename.txt --decrypt filename.txt.age

# if no mode is specified, it defaults to 600
chmod <mode> filename.txt

# if no owner is specified, skip this step
chown <owner> filename.txt

Beachten Sie, dass:

  • vor dem Import wird die Prüfsumme der Quelldatei überprüft
  • nach dem Import wird die Prüfsumme der importierten Dateien überprüft

Bedrohungsmodell

Dieses Werkzeug erstellt beim Export automatisch Snapshots, die nicht vom Werkzeug selbst bereinigt werden. Das bedeutet, dass beim Exportieren von Geheimnissen mit diesem Werkzeug einige Vorsicht geboten ist.

Beim Exportieren von „authentifizierenden" Geheimnissen (SSH-/WireGuard-Schlüssel, Tokens), die leicht rotiert werden können, stellt die Existenz des Snapshots kein zusätzliches Risiko dar.

Beim Exportieren von „entschlüsselnden" Geheimnissen (Festplattenschlüssel, age-/PGP-Identitäten, Master-Schlüssel von Passwort-Managern) bedeutet die Existenz der Snapshots jedoch, dass ein Angreifer, falls die Geheimnisse in den Exporten durchsickern und irgendwie entschlüsselt werden, Zugriff auf aktuelle und vergangene Entschlüsselungsschlüssel haben könnte. Aus diesem Grund wäre es beim Rotieren von „entschlüsselnden" Geheimnissen sicher, auch alte exportierte Snapshots zu löschen (was einfach mit rm -r /path/to/export/endpoint/export-YYYY-MM-DD_HH-MM-SSZ erledigt werden kann). Beachten Sie, dass der kritische Pfad, der alte Entschlüsselungsschlüssel offenlegt, auch die Kenntnis der aktuellen Geheimnisse impliziert, was wahrscheinlich ein größeres Problem darstellt.

Tool herunterladen