Duplicity — резервное копирование с шифрованием - Академия Selectel

Duplicity — резервное копирование с шифрованием

Тирекс Тирекс Самый зубастый автор 31 января 2014

О возможностях использования нашего облачного хранилища для резервного копирования мы уже писали. Архивирование и резервное копирование в хранилище осуществляется при помощи широкого спектра программного обеспечения; на нашем сайте опубликован список таких программ, который регулярно пополняется. Недавно мы узнали еще об одном интересном инструменте - Duplicity. Duplicity не только архивирует данные и загружает их на локальный или удаленный файловый сервер, но еще и шифрует их при помощи утилиты GnuPG, обеспечивая тем самым дополнительную защиту.

Изображение записи

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

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

Зачем нужно шифрование?

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

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

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

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

Duplicity поддерживает различные протоколы для соединения с файловым сервером: SSH/SCP, FTP, HSI, WebDAV, Tahoe-LAFS и Amazon S3. С поддержкой OpenStack Swift дело обстоит несколько сложнее.

На официальной man-странице указано, что для этого нужны дополнительные модули и плагины, но не дано подробных рекомендацией по их установке и настройке. Ниже мы расскажем о том, как «подружить» Duplicity с нашим хранилищем.

Установка и настройка

Программа Duplicity включена в репозитории большинства современных Linux-систем и устанавливается при помощи стандартного менеджера пакетов:

sudo apt-get install duplicity

Для работы с облачным хранилищем на клиентской машине должны быть обязательно установлены пакеты python-swiftclient и librsync:

sudo apt-get install python-swiftclient
sudo apt-get install librsync-dev

Теперь нужно установить плагин swiftbackend. Сначала клонируем с launchpad соответствующий репозиторий (для этого на клиентскую машину потребуется также установить систему контроля версий Bazaar — Launchpad использует именно ее):

sudo apt-get install bzr
bzr branch lp:~mhu-s/duplicity/swiftbackend

Затем выполним следующую команду:

cd swiftbackend && sudo python dist/setup.py install

По завершении установки Duplicity будет готова к работе с облачным хранилищем.

Настройка резервного копирования

Теперь откроем любой текстовый редактор и напишем небольшой скрипт для резервного копирования:

# Авторизационые данные для подключения к хранилищу
export SWIFT_USERNAME="имя пользователя"
export SWIFT_PASSWORD="пароль для входа в хранилище"
export SWIFT_AUTHURL="https://auth.selcdn.ru"

# Выполнение архивирования 
duplicity /путь к папке/на клиентской машине swift://имя контейнера в хранилище

# Очистка авторизационных данных для безопасности
unset SWIFT_USERNAME
unset SWIFT_USERNAME
unset SWIFT_AUTHURL

Сохраним этот файл под именем, например, backup.sh и сделаем его исполняемым (chmod +x backup.sh). После этого выполним следующую команду:

$ ./backup.sh

Далее GnuPG попросит кодовое слово для доступа к файлам.
После этого начнется резервное копирование. Статистка будет отображена в консоли:

--------------[ Статистика резервного копирования ]--------------
StartTime 1391068911.00 (Thu Jan 30 12:01:51 2014)
EndTime 1391068911.02 (Thu Jan 30 12:01:51 2014)
ElapsedTime 0.02 (0.02 seconds)
SourceFiles 5
SourceFileSize 190210 (186 KB)
NewFiles 5
NewFileSize 190210 (186 KB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 5
RawDeltaSize 186114 (182 KB)
TotalDestinationSizeChange 185217 (181 KB)
Errors 0
-----------------------------------------------------------------

В указанный контейнер облачного хранилища будут добавлены новые файлы:

duplicity-full-signatures.20140130T073550Z.sigtar.gpg
duplicity-full.20140130T073550Z.manifest.gpg
duplicity-full.20140130T073550Z.vol1.difftar.gpg

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

duplicity swift://имя контейнера /путь/к папке/на локальной/машине

Сохраним этот скрипт под именем restore.sh и сделаем соответствующий файл исполняемым.

При выполнении команды ./restore.sh GnuPG запросит кодовое слово. После ввода кодового слова все файлы из резервной копии будут загружены в указанную директорию на локальной машине.