DirectAdmin - шифрование backup-файла

Хранение резервной копии пользователя DirectAdmin в открытом виде ограничивает места, куда её можно отправить, если нет желания поделится конфиденциальными данными с другими. Да и передача не зашифрованных файлов по открытому протоколу FTP также чревато последствиями. Надежно зашифрованный backup с пользовательскими данными можно разместить хоть на шаред-хостинге или публичном облаке, так как для тех, у кого нет пароля доступа, этот файл будет представлять собой бессвязный набор символов.

Для шифрования backup-файла воспользуемся самописным (custom) скриптом user_backup_post.sh и средствами утилиты GPG, которая доступна как на Linux, так и на Windows платформах. Для шифрования с помощью GPG будет использоваться пароль, а не ключи, так как это заметно упростит работу, но на качестве шифрования не скажется. Поскольку на сервере с DirectAdmin все пользовательсякие данные (например файлы сайтов, БД) и так хранятся в открытом виде, то наличие пароля к зашифрованной резервной копии в виде простого текста не будет критично - те кто смогут получить доступ к файлу с паролем к backup, будут обладать доступом и ко всем остальным файлам на сервере. После освоения этого материала, можно будет самостоятельно перейти на шифрование с использованием открытых/закрытых ключей в GPG.

Создание backup из командной строки в DirectAdmin

Чтобы было удобно тестировать скрипт создания backup, для начала стоит разобраться, как проходит процес создания резервной копии в DirectAdmin. В панели управления в административном разделе нужно создать новый backup (Admin Level -> Admin Backup/Transfer) для пользователя, с малым объемом данных и выбрать "Step 2: When" -> Now; "Step 3: Where" -> путь для файла резервной копии. После нажатия кнопки Submit будет создан (если существует - добавлена строка) файл /usr/local/directadmin/data/task.queue, в которой будет записана одна строка с приблизительно таким содержанием:

action=backup&append%5Fto%5Fpath=nothing&database%5Fdata%5
Faware=yes&email%5Fdata%5Faware=yes&local%5Fpath=%2Fhome%2
Fadmin%2Fadmin%5Fbackups&owner=admin&type=admin&value=multiple
&when=now&where=local&who=all

Этот файл обрабатывается cron каждую минуту и сразу после обработки удаляется. Нужно успеть сохранить строку или весь файл, пока он не будет автоматически удален.

Для запуска скрипта по созданию резервной копии из командной строки, понадобится строка из файла task.queue и дополнительный самописный скрипт, с названием, например, backup_run.sh, который можно разместить в домашней директории:

#!/bin/bash

# Задание на создание резервной копии данных пользователя
echo "ЗАМЕНИТЬ_СОДЕРЖИМОЕ_НА_СТРОКУ_ИЗ_task.queue" >> /usr/local/directadmin/data/task.queue

# Запуск всех заданий из файла task.queue немедленно, чтобы не ждать, пока запустится задание из cron
/usr/local/directadmin/dataskq d200
 

После этого нужно сделать файл backup_run.sh "запускаемым" - указать атрибут x в правах доступа файла:

# chmod +x backup_run.sh

Теперь каждый раз после запуска backup_run.sh будет создаваться резервная копия с необходимыми параметрами.

# ./backup_run.sh

Подробнее про создание резервных копий из командной строки тут: How to create a full backup of all accounts via the command line.

Шифрование файла backup

Шифрование файла backup резервной копии осуществляется после создания архива user.RESELLER.USERNAME.tar.gz. Для этого используется самописный (custom) скрипт user_backup_post.sh, который создается в директории: /usr/local/directadmin/scripts/custom/. Содержимое файла: /usr/local/directadmin/scripts/custom/user_backup_post.sh

#!/bin/bash

# Backup file encrypt
# @author http://www.petrenco.com

# Password to encrypted file
PASSPHRASE_GPG="STRONGPASS"

FILE_SOURCE=$file
FILE_GPG=$FILE_SOURCE".gpg"

# GPG Encrypt
echo $PASSPHRASE_GPG | gpg -c --passphrase-fd 0 --batch -o $FILE_GPG $FILE_SOURCE

# Move to original filename
mv $FILE_GPG $FILE_SOURCE

Переменная $file передается в скрипт user_backup_post.sh из основного скрипта по созданию резервной копии DirectAdmin.

После записи файла user_backup_post.sh и запуска создания резервной копии, все данные backup-файла будут зашифрованы, в не зависимости от того, локальный ли это backup с сохранением файлов на сервере с DirectAdmin или удаленный, например по FTP.

Файлу скрипта user_backup_post.sh нужно выставить ограниченные права доступа, чтобы никто, кроме root не имел к нему доступ и не смог прочитать хранящийся в нем пароль:

# chown root:root user_backup_post.sh
# chmod 710 user_backup_post.sh

Расшифровка файлов backup

В Linux и FreeBSD все просто, файл расшифровывается так:

# gpg filename.tar.gz

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

В Windows немного сложнее, так как пакет утилит GPG4Win не может расшифровать файл с расширением, отличным от gpg. Чтобы расшифровать файл, например в той же Kleopatra, нужно сперва изменить расшерение файла, добавив к нему .gpg: filename.tar.gz.gpg.

Опубликовано: 2017/03/10
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/raznoe.php?txt=707" target="_blank">DirectAdmin - шифрование backup</a>
48
Добавить комментарий
Ваш e-mail: (не виден посетителям сайта)
Ваше имя:
Комментарий:
Символы с картинки:
Только выделенные поля формы добавления комментариев обязательны к заполнению.