Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
secrets-manager-rs — Инструмент командной строки для безопасного резервного копирования, восстановления и проверки секретов с использованием интероперабельных стандартов, таких как шифрование age и coreutils, обеспечивающий долгосрочную доступность без привязки к вендору. | Kitploit
Инструменты/GitHubGitHub/fran314/secrets-manager-rs
Инструменты шифрования/дешифрованияВосстановление ДанныхБезопасность облачных средDevSecOpsУтилиты и фреймворкиАутентификация
GitHubfran314/secrets-manager-rs

secrets-manager-rs

Инструмент командной строки для безопасного резервного копирования, восстановления и проверки секретов с использованием интероперабельных стандартов, таких как шифрование age и coreutils, обеспечивающий долгосрочную доступность без привязки к вендору.

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
21232 месяцев назадПроверено Kitploit

secs-man

secs-man — это инструмент для управления резервными копиями секретов, ориентированный на независимость от инструмента: если вы зашифровали свои секреты с помощью этого программного обеспечения, вы должны иметь возможность расшифровать и восстановить их без этого программного обеспечения. Даже если secs-man исчезнет с лица Земли, ваши данные останутся доступными.

secs-man можно использовать для управления секретами локальных и удалённых машин, и он идеально подходит для создания только локальных резервных копий данных, которые слишком чувствительны для резервного копирования где-то в облаке.

Философия

Теория

Вы не должны зависеть от какого-либо конкретного программного обеспечения для резервного копирования ваших чрезвычайно важных данных.

Любое программное обеспечение, которое заставляет вас оставаться в его экосистеме после использования (например: «если вы зашифруете этим программным обеспечением, вы сможете расшифровать только этим же программным обеспечением»), делает вас зависимым от него.

Следовательно, шифрование, расшифровка и восстановление ваших важных данных должны быть развязаны: если вы зашифровали их программным обеспечением X, вы всё ещё должны иметь возможность расшифровать их без программного обеспечения X.

На практике

На практике невозможно создать схему, в которой ваши секреты на 100% защищены от потери данных. Даже если ваше программное обеспечение X совместимо с Y, Z и W, вы всё равно потеряете доступ к данным, если X, Y, Z и W одновременно перестанут работать.

Что вы делаете на практике — это убеждаетесь, что зависите только от технологий, которые являются «стандартами» или близки к ним. Я готов мириться с зависимостью от существования bash-интерпретаторов, USB-портов и Linux-машин.

Истинная цель secs-man тогда сводится к тому, чтобы быть полностью воспроизводимым только с помощью:

  • терминала
  • coreutils, таких как cp, mv и sha256sum
  • age
  • ручной работы и небольшого количества времени

Зависимость от age — самая деликатная, но зависимость от какой-либо криптографической библиотеки неизбежна, а у age и большая популярность, и отличные биндинги для Rust.

Это гарантирует, что даже если с этим программным обеспечением что-то случится, что помешает вам использовать его снова, при условии, что age всё ещё существует и вы готовы потратить 30 минут своей жизни, вы всё равно сможете восстановить все свои секреты.

Раздел ручное восстановление объясняет, как импортировать секреты, экспортированные этим программным обеспечением, не используя это программное обеспечение, то есть только с помощью coreutils, age и терминала.

Установка

secs-man нигде не опубликован (это не опубликованный крейт, его нет в nixpkgs, AUR или аналогичных репозиториях). Его можно установить только напрямую из этого репозитория одним из следующих способов.

С помощью nix run

Если вам нужно запускать secs-man лишь изредка, вы можете запускать его напрямую без установки (требуется включённый flakes)

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

Через вашу конфигурацию Nix

Чтобы сделать secs-man доступным системно, вы можете импортировать этот репозиторий в свою конфигурацию Nix с помощью fetchGit и добавить полученный пакет в environment.systemPackages (или в home.packages с помощью home-manager)

root@kitploit:~
let
  secs-man = pkgs.callPackage "${builtins.fetchGit {
    url = "https://github.com/Fran314/secrets-manager-rs.git";
    ref = "main";
    # rev = "<commit>"; # закрепите конкретный коммит для воспроизводимости
  }}/default.nix" { };
in
# добавьте `secs-man` в environment.systemPackages или home.packages

С помощью cargo

Если вы не на NixOS, вы можете установить бинарник secs-man, указав cargo на этот репозиторий

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

обратите внимание, что ни один из этих способов не устанавливает скрипт secs-man-ssh, необходимый для удалённых машин: это отдельный скрипт, который нужно скопировать из этого репозитория отдельно

Использование

Этот инструмент позволяет экспортировать и шифровать файлы из заданного исходного каталога, а также восстанавливать их путём импорта в тот же каталог. Рекомендуемый способ использования этого инструмента — хранить все ваши «секреты» (ключи, файлы и т. д.) в централизованном каталоге.

В корне каталога секретов должен находиться файл .secrets-manifest в открытом виде, содержащий список секретов, которыми нужно управлять, в виде путей относительно каталога секретов. Пути к файлам не могут содержать пробелы. Каждая запись также может указывать owner и mode, которые будут использоваться для установки правильных прав доступа при импорте. Синтаксис см. в .secrets-manifest.example.

Во время экспорта файлы, перечисленные в манифесте, шифруются с помощью age парольной фразой, запрашиваемой через интерактивный запрос (secs-man никогда не читает её из файла, аргумента или переменной окружения). Та же парольная фраза запрашивается снова при импорте для расшифровки файлов. Целостность файлов гарантируется сопутствующим файлом *.sha256, который автоматически создаётся, если отсутствует. Зашифрованные файлы экспортируются в снапшот с временной меткой внутри целевого каталога экспорта.

Затем файлы можно расшифровать и импортировать, указав либо целевой каталог экспорта (для импорта последнего снапшота), либо конкретный снапшот внутри этого каталога.

Следующие команды можно запускать без sudo, однако они завершатся ошибкой, если в манифесте указан владелец, отличный от пользователя, выполняющего команду (так как внутренний вызов chown завершится ошибкой).

Чтобы экспортировать ваши секреты, выполните

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

Чтобы проверить целостность существующего экспорта (см. примечание ниже), выполните

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

обратите внимание, что проверка целостности автоматически выполняется при каждом экспорте. Она нужна только если вы хотите проверить целостность старого экспорта, который, возможно, мог деградировать и повредиться

Чтобы импортировать ваши секреты, выполните

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

Использование с удалёнными машинами

Этот инструмент также можно использовать для развёртывания и резервного копирования секретов на удалённых машинах.

Самый простой способ экспортировать удалённые секреты — экспортировать их во временный каталог на удалённом хосте, а затем скопировать экспортированный снапшот в локальную резервную копию. Аналогично, для импорта локальной резервной копии проще всего скопировать локальный снапшот во временный каталог на удалённом хосте, а затем импортировать их оттуда. Однако здесь есть проблема: парольная фраза шифрования/расшифровки должна проходить через удалённый хост, который может считаться недоверенным.

Чтобы разворачивать на недоверенных удалённых хостах или создавать резервные копии с них без передачи парольной фразы через удалённый хост, вы можете использовать скрипт secs-man-ssh. Этот скрипт не предполагает root-логин по SSH (так как он может быть отключён по соображениям безопасности), но предполагает, что у удалённого пользователя есть привилегии sudo (чтобы позволить secs-man выполнять chown и chmod).

Чтобы экспортировать с удалённого хоста, выполните:

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

Чтобы импортировать на удалённый хост, выполните:

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

Ручное восстановление

Экспорт

Экспортированные файлы шифруются с помощью age парольной фразой. Имя экспортированного файла — исходное имя с дополнительным расширением .age.

Чтобы добиться такого же поведения, можно использовать следующее:

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

Обратите внимание, что:

  • перед экспортом проверяется контрольная сумма исходного файла
  • во время экспорта существующая контрольная сумма файла в открытом виде экспортируется рядом с зашифрованным файлом
  • после экспорта для всех зашифрованных файлов создаётся ещё одна контрольная сумма, позволяющая проверить целостность экспорта в более поздний момент

Проверка экспорта

Проверка целостности экспорта заключается в проверке совпадения всех контрольных сумм. Для этого достаточно выполнить

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

в каталоге экспортированного снапшота

Импорт

Импортируемые файлы расшифровываются с помощью age парольной фразой. Имя импортируемого файла — имя экспортированного файла без расширения .age. Если для записи в манифесте указаны owner и/или mode, импортированному файлу устанавливаются указанные владелец и режим. Если режим не указан, по умолчанию используется 600.

Чтобы добиться такого же поведения, можно использовать следующее:

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

Обратите внимание, что:

  • перед импортом проверяется контрольная сумма исходного файла
  • после импорта проверяется контрольная сумма импортированных файлов

Модель угроз

Этот инструмент автоматически создаёт снапшоты при экспорте, которые не удаляются самим инструментом. Это означает, что при экспорте секретов с помощью этого инструмента следует соблюдать осторожность.

При экспорте «аутентифицирующих» секретов (ключи SSH/WireGuard, токены), которые легко можно ротировать, наличие снапшота не создаёт дополнительного риска.

Однако при экспорте «расшифровывающих» секретов (ключи дисков, age/PGP-идентичности, мастер-ключ менеджера паролей) наличие снапшотов означает, что если секреты внутри экспортов утекут и будут каким-то образом расшифрованы, злоумышленник может получить доступ к текущим и прошлым ключам расшифровки. По этой причине при ротации «расшифровывающих» секретов было бы безопасно также удалять старые экспортированные снапшоты (это легко сделать с помощью rm -r /path/to/export/endpoint/export-YYYY-MM-DD_HH-MM-SSZ). Обратите внимание, что критический путь, который раскрывает старые ключи расшифровки, также подразумевает знание текущих секретов, что, вероятно, является более серьёзной проблемой.

Скачать инструмент