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

Я написал этот скрипт, но он не работает, так как ba.tar еще не создан.

#! /bin/bash
crontab -l|sed "\$a00 23 * * 5 tar cvf /var/backups/ba.tar /home/$USER"|crontab -
openssl aes-128-cbc -salt -in /var/backups/ba.tar -out /var/backups/ba.tar.aes -k 1416
rm /var/backups/ba.tar

Как я могу зашифровать ba.tar?

2
задан 6 December 2017 в 13:09

1 ответ

OpenSSL несколько плох для этой цели, и прежде всего вам нужно дать команде фразу-пароль, чтобы потом можно было расшифровывать ваши резервные копии. Этот пароль мог быть прочитан в лог-файлах и рекомендуется только в тех случаях, когда безопасность не имеет значения, и я полагаю, что вы заинтересованы в том, чтобы архивы были надежно упакованы. Поэтому я советую использовать GPG для шифрования. Вы можете использовать как сделано в командах ниже gpg (который на самом деле является GPG2 в более новых установках Ubuntu) или gpg2 (который необходимо сначала установить в более старых установках Ubuntu; просто измените команду ниже на gpg2). См. Также Генерация ключей: различия между GnuPG classic, stable, modern? .

Для этого вам нужно сначала создать ключ gpg с помощью следующей команды:

gpg --gen-key

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

$ gpg --gen-key
gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Note: Use "gpg --full-gen-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: Videonauth
Email address: videonauth@example.com
You selected this USER-ID:
    "Videonauth <videonauth@example.com>"

Change (N)ame, (E)mail, or (O)kay/(Q)uit? o

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

Вывод продолжается следующим образом:

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key 338E09237C58EFA0 marked as ultimately trusted
gpg: revocation certificate stored as '/home/videonauth/.gnupg/openpgp-revocs.d/891E441008DE443C53B44AB2338E09237C58EFA0.rev'
public and secret key created and signed.

pub   rsa2048 2017-12-06 [SC]
      891E441008DE443C53B44AB2338E09237C58EFA0
uid                      Videonauth <videonauth@example.com>
sub   rsa2048 2017-12-06 [E]

Теперь неплохо сделать резервную копию вновь созданного ключа в файл, который следует сохранить на USB-карте, которую можно хранить в ящике. и т.д., поэтому у вас есть доступ к этому ключу на тот случай, если вам нужно настроить новую систему и захотеть импортировать ваш ключ. Следующие команды создадут резервную копию ваших ключей и важных битов, которые затем можно найти в ~/Download.

  1. Создайте общий сертификат отзыва:

    # generate a copy of the revoke certificate
    # you need the key ID for this which you can find in
    # the before output. In this example this would be
    # 891E441008DE443C53B44AB2338E09237C58EFA0
    gpg -o ~/Download/key-revocation-cert.asc --gen-revoke 891E441008DE443C53B44AB2338E09237C58EFA0
    

    Это даст вам следующий диалог, который я заполнил, чтобы привести пример:

    $ gpg -o ~/Download/key-revocation-cert.asc --gen-revoke 891E441008DE443C53B44AB2338E09237C58EFA0 
    sec  rsa2048/338E09237C58EFA0 2017-12-06 Videonauth <videonauth@example.com>
    
    Create a revocation certificate for this key? (y/N) y
    Please select the reason for the revocation:
      0 = No reason specified
      1 = Key has been compromised
      2 = Key is superseded
      3 = Key is no longer used
      Q = Cancel
    (Probably you want to select 1 here)
    Your decision? 0
    Enter an optional description; end it with an empty line:
    > Example Reason
    > 
    Reason for revocation: No reason specified
    Example Reason
    Is this okay? (y/N) y
    ASCII armored output forced.
    Revocation certificate created.
    
    Please move it to a medium which you can hide away; if Mallory gets
    access to this certificate he can use it to make your key unusable.
    It is smart to print this certificate and store it away, just in case
    your media become unreadable.  But have some caution:  The print system of
    your machine might store the data and make it available to others!
    
  2. Создайте копию вашего открытого ключа:

    # This will create a copy of your public key
    gpg -o ~/Download/key-public.gpg --export 891E441008DE443C53B44AB2338E09237C58EFA0
    
  3. Создайте копию вашего открытого ключа:

    # This will create a copy of your private key
    gpg -o ~/Download/key-private.gpg --export-secret-keys 891E441008DE443C53B44AB2338E09237C58EFA0
    

Чтобы использовать gpg с вашим открытым ключом, вам нужно импортировать файл открытого ключа на ваш сервер:

gpg --import key-public.gpg

Давайте сначала начнем с создания правильной строки и тестирования шифрования и дешифрования, чтобы убедиться, что дешифрование будет работать до того, как Вы помещаете это в crontab или скрипты. С учетом всего вышесказанного вы можете теперь создавать напрямую зашифрованные архивы с помощью следующей команды (вам необходимо изменить имя пользователя в соответствии с «реальным именем», с которым вы создали свой ключ).

tar -cv <directory-to-archive> | gpg -e -r Videonauth -o backup.tar.gpg

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

gpg -d backup.tar.gpg | tar -xv

Вам будет предложено ввести пароль ключа, который вы должны указать, и он распакует файл backup.tar.gpg на жесткий диск.

Конечно, это также можно использовать для создания сжатых архивов tar, если вы хотите это сделать, просто измените команды tar в приведенных выше строках соответственно. Для дальнейшего чтения см. man gpg и man tar .

Вы можете поместить эти команды непосредственно в ваш crontab или создать сценарии для них.

3
ответ дан 6 December 2017 в 13:09

Другие вопросы по тегам:

Похожие вопросы: