1

Мой домашний компьютер состоит из хоста VMWare под управлением Linux Mint и нескольких клиентов VMWare.

Каждую ночь я запускаю резервные копии, которые сжимают мои виртуальные жесткие диски на съемный жесткий диск.

Я хотел бы зашифровать сжатые изображения. И я бы хотел сделать это без включения пароля в мои скрипты резервного копирования.

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

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

(Я бы оставил либо личный ключ, либо парольную фразу в файле личного ключа в моей базе данных KeePass, которую я также записываю на свой резервный носитель.)

Но дело в том, что я хотел бы запустить это автономно, чтобы я мог расшифровать резервные копии, не используя ничего, кроме того, что было записано на резервные диски. То есть, если я использую gpg, я хотел бы получить копию gpg на резервных дисках, которую я мог бы запустить сам, без необходимости что-либо устанавливать или настраивать. (То есть никаких зависимостей от ~/.gpgconf и т.д.)

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

Любые идеи о том, как:

  • Запустите gpg в неустановленном режиме или
  • Как сделать это с помощью другого инструмента? (OpenSSL?)

Добавлены комментарии ...

Почему я не могу просто установить gpg?

Проблема в восстановлении.

Предположим, у меня полный системный сбой, возможно, мой дом сгорел и все было разрушено.

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

Что я делаю?

Я загружаю какую-то версию Linux, которая может монтировать разделы ext4 с флешки, и начинаю собирать все вместе.

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

1 ответ1

0

Я играл с этой проблемой, и я думаю, что у меня есть подход.

Во-первых, один раз, прежде чем делать резервные копии:

Сгенерируйте пару ключей RSA:

$ openssl genpkey -out backupkey.pem -aes-256-cbc -algorithm rsa
.................++
............................++
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
$ 

Используйте хорошую фразу-пароль - не то, что кто-то собирается взломать. Шесть-восемь случайных слов работает хорошо. Не выбирайте цитаты из любимых книг или песен.

Затем извлеките новый открытый ключ из только что созданного файла .pem:

$ openssl rsa -in backupkey.pem -pubout -out backupkey.key
Enter pass phrase for backupkey.pem:
writing RSA key
$ ls -l backupkey.*
-rw-r--r-- 1 jdege jdege  800 Jan 15 20:26 backupkey.key
-rw-r--r-- 1 jdege jdege 3418 Jan 15 20:16 backupkey.pem
$ 

Сохраните их где-нибудь, вы будете использовать их в каждой резервной копии. Я храню их со своими сценариями резервного копирования и помещаю копии в мою базу паролей KeePass.

Затем на каждой резервной копии

Генерация случайного ключа сеанса:

$ openssl rand -hex 128 > session.key
$

Затем запустите резервное копирование, сделав шифрование результата последним шагом в вашем конвейере:

$ generate-my-backup.sh |
> gzip |
> openssl enc -aes-256-cbc -pass file:./session.key -out /mnt/backups/20190115/backup.bup.gz.enc
$ 

Затем зашифруйте ключ сеанса с помощью открытого ключа RSA, удалите ключ сеанса и скопируйте зашифрованный ключ сеанса на резервный носитель:

$ openssl rsautl -encrypt -inkey backupkey.key -pubin -in session.key -out session.key.enc
$ cp session.key.enc /mnt/backups/20190115/
$ rm session.key
$ 

И скопируйте файл, содержащий ваш закрытый ключ, на ваш резервный носитель:

$ cp backupkey.pem /mnt/backups/20190115/
$ 

Если вам нужно восстановить

Это просто, если вы знаете кодовую фразу для вашего закрытого ключа:

$ openssl rsautl -decrypt -inkey backupkey.pem  -in session.key.enc |
> openssl enc -d -aes-256-cbc -in backup.bup.gz.enc -pass stdin |
> gunzip |
> restore-my-backup.sh
Enter pass phrase for backupkey.pem:
$

Мы запускаем openssl rsautl для расшифровки зашифрованного ключа сеанса на стандартный вывод, а затем запускаем openssl enc -d для расшифровки файла резервной копии, читаем его ключ из стандартного ввода и записываем вывод в стандартный вывод. Для передачи в любой другой конвейер необходимо поместить файл туда, где он принадлежит.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .