amarao (amarao_san) wrote,
amarao
amarao_san

MICRO HOWTO ENCRYPT BACKUPS WITH GPG

В отличие от типичных задач для gpg, описывается тут задача несколько не типичная, но всё-таки важная. А именно: шифрование бэкапа.

Дано: сервер, где ценные данные.
Дано: бэкап сервер в общедоступном месте.
Цель: шифровать бэкап так, чтобы хищение данных с бэкап-сервера не привело к потере информации.

Теория процесса: создаётся пара ключей: открытый и закрытый. Закрытый распечатывается на бумажке в 3х экземплярах и пишется в двух экземплярах на компакт-дисках и выдаётся гендиректору под обещание "хранить в секрете, целостности и безопасности".

В дальнейшем мы шифруем открытым ключом бэкап, кладём его на бэкап-сервер.

В случае страшного ЧП у директора забирается диск (в худшем случае - набирается с бумажки в хекс-кодах) с закрытым ключом, которым бэкап расшифровывается к всеобщему счастью. Для избежания проблем, при передаче дисков и бумажек пишется акт-приёма передачи на отвественное хранение.

Опционально ключ может храниться и у админа - но только после тщательного обсуждения этого с директором. (лично я предпочитаю такие вещи не хранить - меньше хранишь, меньше проблем).


Итак, создание ключа:

(для виндовой версии корректируем пути)

gpg --no-default-keyring --keyring "`pwd`/open.keys" --secret-keyring "`pwd`/secret.keys" --gen-key

Ответы на вопросы:
1
2048
0
y
backup
(два Enter)
O
Enter, Enter

В результате мы имеем два файла: secret.keys и open.keys.

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

Далее:

cat secret.keys |uuencode secret.keys

(результат распечатать)

Или
hexdump -C secret.keys (размер больше, но, если что, набивать будет проще).

По моим рассчётам 77 строк, 80 символов в строке - отлично влезет на лист A4. Если не влазит - hexdump secret.keys (без -C).


Первая часть готова.

Вторая часть: шифрование бэкапа:

#!/bin/sh
gpg --batch --throw-keyids --no-default-keyring --keyring "`pwd`/open.keys" --encrypt -r backup data

(вместо data подставить ваш файл для паковки).

Получившийся файл data.gpg - зашифрованные данные, которые относительно безопасно можно хранить в не очень защищённых местах. Обратите внимание на имена файлов - если у вас файл будет называться ooo_pomoika_black_accounting_2006-2009--transfer_from_OOO_gasgas_20kk_to_clean.rar.gpg, то никто не будет париться с поиском закрытых ключей...


Третья часть. Расшифровка (можно не полениться и распечатать текст скрипта вместе с секретным ключом):

#!/bin/sh
gpg --yes --batch --no-default-keyring --secret-keyring "`pwd`/secret.keys" --keyring "`pwd`/open.keys" --output data --decrypt data.gpg

(N.B. Это глюк GPG, но без открытого ключа он работать отказывается, хотя технически он ему нафиг не сдался).
Tags: backup, crypto, gpg, администрирование
Subscribe

  • План действий

    AAA при логине ведёт себя по разному в зависимости от того A это или AAAA.

  • Админский гольф

    Вам выдали шелл на сервер, на котором кто-то удалил все симлинки (т.е. файлы типа "симлинк"). Ваша задача починить сервер. Починенным сервер…

  • продолжая leetcode

    Первый раз я ощутил Силу. Задача - roman numerals, с обещанием, что на входе нет мусора. pub fn roman_to_int(s: String) -> i32 { let mut acc =…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 17 comments

  • План действий

    AAA при логине ведёт себя по разному в зависимости от того A это или AAAA.

  • Админский гольф

    Вам выдали шелл на сервер, на котором кто-то удалил все симлинки (т.е. файлы типа "симлинк"). Ваша задача починить сервер. Починенным сервер…

  • продолжая leetcode

    Первый раз я ощутил Силу. Задача - roman numerals, с обещанием, что на входе нет мусора. pub fn roman_to_int(s: String) -> i32 { let mut acc =…