Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/fran314/secrets-manager-rs
Outils de Chiffrement/DéchiffrementRécupération de DonnéesSécurité CloudDevSecOpsUtilitaires et FrameworksAuthentification
GitHubfran314/secrets-manager-rs

secrets-manager-rs

Un outil en ligne de commande pour sauvegarder, restaurer et vérifier en toute sécurité des secrets en utilisant des standards interopérables comme le chiffrement age et coreutils, garantissant une accessibilité à long terme sans dépendance à un fournisseur.

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
2123il y a 2 moisVérifié par Kitploit

secs-man

secs-man est un outil pour gérer les sauvegardes de secrets en gardant à l'esprit l'indépendance vis-à-vis des outils : si vous chiffrez vos secrets avec ce logiciel, vous devriez pouvoir les déchiffrer et les restaurer sans ce logiciel. Même si secs-man disparaît de la surface de la Terre, vos données restent accessibles.

secs-man peut être utilisé pour gérer les secrets de machines locales et distantes, et est idéal pour créer des sauvegardes locales uniquement pour des données trop sensibles pour être sauvegardées dans le cloud.

Philosophie

La théorie

Vous ne devriez dépendre d'aucun logiciel spécifique pour sauvegarder vos données extrêmement importantes.

Tout logiciel qui vous oblige à rester dans son écosystème après utilisation (par exemple : "si vous le chiffrez avec ce logiciel, vous ne pouvez le déchiffrer qu'avec ce logiciel") vous rend dépendant de celui-ci.

Ainsi, le chiffrement, le déchiffrement et la restauration de vos données importantes devraient être découplés, c'est-à-dire que si vous les avez chiffrées avec un logiciel X, vous devriez toujours pouvoir les déchiffrer sans le logiciel X.

La pratique

En pratique, vous ne pouvez pas créer une configuration où vos secrets sont 100% à l'abri de la perte de données. Même si votre logiciel X est compatible avec Y, Z et W, vous perdrez toujours l'accès à vos données si X, Y, Z et W cessent tous de fonctionner en même temps.

Ce que vous faites en pratique, c'est vous assurer de ne dépendre que de technologies qui sont des « standards » ou qui s'en approchent. Je suis d'accord pour dépendre de l'existence d'interpréteurs bash, de ports USB et de machines Linux.

Le vrai objectif de secs-man devient alors d'être parfaitement reproductible uniquement avec :

  • un terminal
  • coreutils tels que cp, mv et sha256sum
  • age
  • du travail manuel et un peu de temps

La dépendance à age est la plus délicate, mais la dépendance à une bibliothèque cryptographique est inévitable, et age bénéficie à la fois d'une grande popularité et de bonnes liaisons en Rust.

Cela garantit que même si quelque chose arrivait à ce logiciel vous empêchant de l'utiliser à nouveau, en supposant que age existe toujours et que vous êtes prêt à passer 30 minutes de votre vie, vous pourriez toujours récupérer tous vos secrets.

La section récupération manuelle explique comment importer les secrets exportés par ce logiciel sans utiliser ce logiciel, c'est-à-dire uniquement avec coreutils, age et un terminal.

Installation

secs-man n'est publié nulle part (ce n'est pas une crate publiée, ni sur nixpkgs, l'AUR ou similaire). Il ne peut être installé que directement depuis ce dépôt, de l'une des manières suivantes.

Avec nix run

Si vous n'avez besoin d'exécuter secs-man qu'occasionnellement, vous pouvez l'exécuter directement sans l'installer (nécessite l'activation des flakes)

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

Via votre configuration Nix

Pour rendre secs-man disponible à l'échelle du système, vous pouvez importer ce dépôt dans votre configuration Nix avec fetchGit et ajouter le package résultant à environment.systemPackages (ou home.packages avec home-manager)

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

Avec cargo

Si vous n'êtes pas sur NixOS, vous pouvez installer le binaire secs-man en pointant cargo vers ce dépôt

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

notez qu'aucune de ces méthodes n'installe le script secs-man-ssh nécessaire pour les machines distantes : c'est un script autonome qui doit être copié depuis ce dépôt séparément

Utilisation

Cet outil permet d'exporter et de chiffrer des fichiers depuis un répertoire source donné, et de les récupérer en important dans le même répertoire. La manière recommandée d'utiliser cet outil est d'avoir tous vos "secrets" (clés, fichiers, ...) dans un répertoire centralisé.

À la racine du répertoire des secrets, il doit y avoir un fichier texte .secrets-manifest contenant la liste des secrets à gérer, sous forme de chemins relatifs au répertoire des secrets. Les chemins de fichiers ne peuvent pas contenir d'espaces. Chaque entrée peut également spécifier un owner et un mode qui seront utilisés pour définir les autorisations correctes lors de l'import. Voir .secrets-manifest.example pour la syntaxe.

Lors d'une exportation, les fichiers listés dans le manifeste sont chiffrés via age avec une phrase de passe demandée via une invite interactive (secs-man ne la lit jamais depuis un fichier, un argument ou une variable d'environnement). La même phrase de passe est demandée à nouveau lors de l'importation pour déchiffrer les fichiers. L'intégrité des fichiers est garantie par un fichier *.sha256 compagnon, qui est automatiquement généré s'il est manquant. Les fichiers chiffrés sont exportés dans un snapshot horodaté dans le répertoire cible d'exportation.

Les fichiers peuvent ensuite être déchiffrés et importés soit en pointant vers le répertoire cible d'exportation (pour importer le dernier snapshot), soit vers un snapshot spécifique à l'intérieur de ce répertoire.

Les commandes suivantes peuvent être exécutées sans sudo, mais elles échoueront si le manifeste spécifie un propriétaire différent de l'utilisateur exécutant la commande (car l'appel interne à chown échouera).

Pour exporter vos secrets, exécutez

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

Pour vérifier l'intégrité d'une exportation existante (voir la note ci-dessous), exécutez

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

notez qu'une vérification d'intégrité est automatiquement effectuée à chaque exportation. Cela n'est nécessaire que si vous souhaitez vérifier l'intégrité d'une ancienne exportation qui pourrait s'être dégradée et corrompue

Pour importer vos secrets, exécutez

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

Utilisation avec des machines distantes

Cet outil peut également être utilisé pour déployer et sauvegarder des secrets sur des machines distantes.

La façon la plus simple d'exporter des secrets distants est de les exporter dans un répertoire temporaire sur l'hôte distant, puis de copier le snapshot exporté vers une sauvegarde locale. De même, pour importer une sauvegarde locale, l'approche la plus simple est de copier le snapshot local dans un répertoire temporaire sur l'hôte distant, puis de les importer à partir de là. Cependant, cela pose le problème que la phrase de passe de chiffrement/déchiffrement doit passer par l'hôte distant, qui peut être considéré comme non fiable.

Afin de déployer vers / sauvegarder depuis des hôtes distants non fiables sans faire passer la phrase de passe par le réseau distant, vous pouvez utiliser le script secs-man-ssh. Ce script ne suppose pas de connexion root via SSH (car cela pourrait être désactivé pour des raisons de sécurité), mais il suppose que l'utilisateur distant dispose des privilèges sudo (afin de permettre à secs-man d'exécuter chown et chmod).

Pour exporter depuis un hôte distant, exécutez :

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

Pour importer vers un hôte distant, exécutez :

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

Récupération manuelle

Exportation

Les fichiers exportés sont chiffrés avec age en utilisant une phrase de passe. Le nom du fichier exporté est le nom original avec l'extension supplémentaire .age.

Pour obtenir le même comportement, vous pouvez utiliser ce qui suit :

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

Notez que :

  • avant l'exportation, la somme de contrôle du fichier source est vérifiée
  • pendant l'exportation, la somme de contrôle existante du fichier en clair est exportée à côté du fichier chiffré
  • après l'exportation, une autre somme de contrôle est créée pour tous les fichiers chiffrés afin de permettre de vérifier l'intégrité de l'exportation à un moment ultérieur.

Vérifier l'exportation

Vérifier l'intégrité d'une exportation consiste à vérifier que chaque somme de contrôle correspond. Pour ce faire, on peut simplement exécuter

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

Importation

Les fichiers importés sont déchiffrés avec age en utilisant une phrase de passe. Le nom du fichier importé est le nom exporté sans l'extension .age. Si owner et/ou mode sont spécifiés dans le manifeste pour une entrée donnée, le fichier importé est défini avec le propriétaire et le mode spécifiés. Si aucun mode n'est spécifié, la valeur par défaut est 600.

Pour obtenir le même comportement, vous pouvez utiliser ce qui suit :

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

Notez que :

  • avant l'importation, la somme de contrôle du fichier source est vérifiée
  • après l'importation, la somme de contrôle des fichiers importés est vérifiée

Modèle de menace

Cet outil crée automatiquement des snapshots lors de l'exportation qui ne sont pas nettoyés par l'outil lui-même. Cela signifie qu'il faut faire attention lors de l'exportation de secrets avec cet outil.

Lors de l'exportation de secrets « d'authentification » (clés SSH/WireGuard, jetons), qui peuvent facilement être renouvelés, l'existence du snapshot ne présente aucun risque supplémentaire.

Cependant, lors de l'exportation de secrets « de déchiffrement » (clés de disque, identités age/PGP, mot de passe principal du gestionnaire de mots de passe), l'existence des snapshots signifie que, si les secrets à l'intérieur des exportations venaient à fuiter et à être déchiffrés d'une manière ou d'une autre, un attaquant pourrait avoir accès aux clés de déchiffrement actuelles et passées. Pour cette raison, lors du renouvellement de secrets « de déchiffrement », il serait prudent de supprimer également les anciens snapshots exportés (ce qui peut être facilement fait avec rm -r /path/to/export/endpoint/export-YYYY-MM-DD_HH-MM-SSZ). Notez que le chemin critique qui expose les anciennes clés de déchiffrement implique également la connaissance des secrets actuels, ce qui est probablement une préoccupation plus importante.

Télécharger l’outil