Организация защищенного хранения данных в облачных файловых хранилищах

Введение

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

Существует множество порталов для хранения пользовательских данных в сети Интернет: DropBox, Ubuntu One, Wuala, Windows Live, при этом перед установкой и использованием сервиса пользователю предлагается ознакомиться с лицензионным соглашением и принять его. Но иногда сервисы меняют отдельные пункты лицензионного соглашения, оповещая об этом пользователей по email или публикуя информацию на своем Web-сайте. Большинство пользователей не читает лицензионные соглашения и не задумывается о том, какие личные данные будут доступны для данных сервисов и что они будут с ними делать. Поэтому более безопасной является загрузка личных данных уже в зашифрованном виде, чтобы использовать указанные облачные сервисы как хранилище зашифрованных файлов, а в идеале – зашифрованных фрагментов файла с личными данными, как показано на рисунке 1.

Рисунок 1. Разделение информации на блоки и размещение их в облачных хранилищах
clip_image001

Выбор платформы для хранения данных в зашифрованном виде

Предварительно потребуется выбрать файловую систему, которая будет сохранять персональные данные в зашифрованном виде, обеспечивать избыточность, а также доступность при разрушении или недоступности облака (аналогично технологии RAID для жестких дисков). Кроме того, эта файловая система должна относиться к свободному ПО, т.е. распространяться под лицензией GPL. Данным критериям наилучшим образом соответствует – файловая система Tahoe-Lafs (The Least Authority File System).

Основными преимуществами Tahoe-Lafs являются:

  • размещение зашифрованных фрагментов файлов на различных узлах в сети, при этом минимальное количество узлов для чтения и записи — три, а максимальное и оптимальное значения можно сконфигурировать в файле настроек;
  • реализация на языке Python, что позволяет использовать ее в различных ОС;
  • лицензия GPL v2;
  • возможность установки срока хранения файлов (постоянных и изменяемых);
  • Web-интерфейс и средства для контроля и восстановления данных;
  • встроенные SFTP и FTP-серверы.

Хотя готовой сборки Tahoe-Lafs для Windows пока не представлено, но на её Web-сайте есть инструкция по компиляции файловой системы из исходного кода. Также в Интернет имеется готовый дистрибутив с собранной и предустановленной операционной системой Linux, доступный по данному адресу.

Современные процессоры позволяют задействовать аппаратную виртуализацию и обеспечить требуемую производительность виртуальной среды, поэтому установка и настройка данного дистрибутива будет выполняться в виртуальной среде. Данные для размещения в облаке будут получаться/передаваться через SFTP, а дистрибутив с установленной Tahoe-Lafs будет зашифровывать, разбивать на блоки и передавать данные в облачные сервисы.

На Web-сайте проекта Tahoe-Lafs уже имеются готовые сборки OpenSuse 11.4 и последней версии Tahoe-Lafs 1.8.2, а развертывание будет выполняться в среде VirtualBox. Для этого необходимо загрузить архив Virtual Machine Image OVF и распаковать его. После этого в виртуальной машине останется импортировать требуемую конфигурацию через меню Файл –> Импорт конфигурации.

Для самостоятельного выполнения примеров, описанных в данной статье, потребуется следующее ПО:

  • Linux OpenSuse 11.4 (сборка с предустановленной Tahoe-Lafs);
  • виртуальная машина VirtualBox;
  • Filezilla;
  • облачный сервис и программы для доступа к ним: Wuala, DropBox;
  • доступ в Интернет.

Настройка графической оболочки x11

Установка графической оболочки x11 и компонентов будущих облачных сервисов, включая интеграцию с локальной файловой системой (fuse), выполняется следующей командой:

#zypper install xorg-x11-driver-input xorg-x11-driver-video

xterm icewm-default telnet xterm java-1_6_0-sun libfuse2 fuse firefox

Листинг 1. Запуск оболочки x11 из под пользователя tahoe

#su tahoe

tahoe@linux-jgct:/root> startx

hostname: Name or service not known

xauth: file /home/tahoe/.serverauth.7271 does not exist

xauth: file /home/tahoe/.Xauthority does not exist

xauth: file /home/tahoe/.Xauthority does not exist

Fatal server error:

Cannot open log file «/var/log/Xorg.0.log»

Please consult the The X.Org Foundation support

at http://wiki.x.org

for help.

xinit: giving up

xinit: unable to connect to X server: Connection refused

xinit: server error

—————————————————————————————-

xinit failed. /usr/bin/Xorg is not setuid, maybe that’s the reason?

If so either use a display manager (strongly recommended) or adjust /etc/permissions.local

Ошибка при запуске графической оболочки x11 связана с setuid битом, который был отключен в целях безопасности в новых дистрибутивах Linux. Этот бит необходимо включить в файле конфигурации, как показано в листинге 2:

Листинг 2. Включение setuid

su

root

#mcedit /etc/permissions.local

удалить комментарий #/usr/bin/Xorg root:root 4711 и сохранить файл

# is used. Beware of CVE-2010-2240.

#

/usr/bin/Xorg root:root 4711

Также потребуется обновить политики и перезагрузить компьютер:

#SuSEconfig —module permissions

После этого можно зайти в систему пользователем tahoe и запустить команду startx.

Для подключения к облачному файловому хранилищу Wuala потребуется зайти на Web-сайт проекта http://www.wuala.com/ и загрузить версию клиента для OpenSuse 11.2 32 bit. Полученный пакет необходимо установить через консоль, используя полномочия пользователя root:

#rpm -ihv wuala-current.i386.rpm.

Настройка и конфигурация файловой системы Tahoe-Lafs

Сначала потребуется создать каталоги, которые будут использоваться Tahoe-Lafs для хранения файлов.

Листинг 3. Подготовка файлового хранилища Tahoe-Lafs

su

root

#mkdir /tahoe

#chmod 777 -R /tahoe

#exit

mkdir /tahoe/1

mkdir /tahoe/2

mkdir /tahoe/3

mkdir /tahoe/intro

mc

Затем в каталоге allmydata-tahoe-1.8.2/bin необходимо создать новый сценарий createall.sh (комбинация Shift-F4 в редакторе mc) со следующим содержимым и сохранить его (F2 в редакторе mc).

Листинг 4. Содержимое файла createall.sh

#!/bin/sh

./tahoe create-introducer /tahoe/intro

./tahoe create-node /tahoe/1

./tahoe create-node /tahoe/2

./tahoe create-node /tahoe/3

После запуска данного сценария будет создан объект introducer (аналог трекера, где анонсируются torrent-клиенты) и 3 ноды для хранения данных.

Также потребуется еще один сценарий startall.sh, который будет осуществлять запуск/перезапуск сервисов Tahoe.

Листинг 5. Содержимое файла createall.sh

#!/bin/sh

./tahoe restart /tahoe/intro

./tahoe restart /tahoe/1

./tahoe restart /tahoe/2

./tahoe restart /tahoe/3

Оба эти сценария необходимо сделать исполняемыми, как показано ниже, и запустить: сначала createall.sh, а затем startall.sh.

chmod +x *.sh

Tahoe-Lafs работает следующим образом: каждый узел после запуска пытается соединиться с introducer. Получив от него список узлов и их адреса, узел пытается соединиться с другими узлами. Когда произойдет соединение всех узлов между собой, сеть будет готова принимать данные, разбивать их на фрагменты и распределять по различным узлам в сети.

После запуска introducer в каталоге /tahoe/introducer появится файл introducer.furl, в котором указан адрес виртуальной машины и порт, куда будут подключаться узлы для подтверждения готовности к приему/передаче данных. Этот файл необходимо скопировать в каталоги всех узлов: /tahoe/1/, /tahoe/2/ и /tahoe/3/.

Также в каталоге каждого из трех узлов необходимо отредактировать конфигурационные файлы tahoe.cfg. В этих файлах будет установлено название текущего узла и порт его Web-интерфейса.

Листинг 6. Конфигурация узлов сети Tahoe-Lafs

файл /tahoe/1/tahoe.cfg:

nickname = Node1

web.port = tcp:3456:interface=127.0.0.1

файл /tahoe/2/tahoe.cfg:

nickname = Node2

web.port = tcp:3457:interface=127.0.0.1

файл /tahoe/3/tahoe.cfg:

nickname = Node3

web.port = tcp:3458:interface=127.0.0.1

Во всех трех файлах tahoe.cfg потребуется указать общую конфигурацию узлов для хранения данных, внеся изменения в секцию [client], как показано в листинге 7:

Листинг 7. Секция [client]

shares.needed = 3

shares.happy = 3

shares.total = 3

Параметр shares.need — это минимальное количество нод, необходимое для работы системы. Параметр shares.happy — оптимальное значение, которое находится между минимальным и максимальным, с помощью данного параметра можно найти оптимальное соотношение между возможностью потери данных, быстродействием и стабильностью. Параметр shares.total — максимальное количество узлов, на которое будет происходить копирование данных. Далее в статье будет показано, как настроить избыточность при записи данных, чтобы обеспечить отказоустойчивость системы Tahoe. После завершения редактирования файлов tahoe.cfg потребуется стереть каталоги storage в каталоге каждого узла. Каталоги storage будут символьными ссылками на облачные хранилища, и именно там будет происходить хранение информации, разбитой на зашифрованные блоки.

Подключение к облачному файловому хранилищу

После запуска Wuala из консоли, программа предложит зарегистрироваться или использовать существующее имя. После регистрации пользователь получает по умолчанию 1 ГБ файлового пространства. Язык интерфейса Wuala можно переключить на русский с помощью меню Edit–>Language->Русский.

После перезапуска программы потребуется создать каталог tahoe, а в нем создать вложенные каталоги 1/storage, 2/storage, 3/storage.

Рисунок 2. Создание папок storage в облаке для хранения данных

clip_image002

Необходимо на время свернуть Wuala и cоздать в каталогах Tahoe-Lafs символические ссылки на каталоги в Wuala (Меню File->Symlink в редакторе mc).

Листинг 8. Символические ссылки в облачное хранилище

/home/tahoe/WualaDrive/имя_пользователя_wuala/tahoe/1/storage в /tahoe/1/storage

/home/tahoe/WualaDrive/имя_пользователя_wuala/tahoe/2/storage в /tahoe/2/storage

/home/tahoe/WualaDrive/имя_пользователя_wuala/tahoe/3/storage в /tahoe/3/storage

После создания символьных ссылок сохранение зашифрованных файлов будет выполняться в облачное хранилище. Остается перезапустить Tahoe-Lafs с помощью сценария startall.sh, чтобы хранилище подключилось к только что настроенному пространству в облаке Wuala.

Для проверки работоспособности Tahoe-Lafs можно использовать URL Web-интерфейса: http://localhost:3456.

Рисунок 3. Web-интерфейс доступа к Tahoe-Lafs

clip_image003

Как видно из рисунка, для сохранения доступны три узла: Node1, Node2 и Node3, которые успешно запустились и подключились к introducer. Если introducer не был бы запущен или была бы допущена ошибка в конфигурации, то в строке Node Connected было бы написано No, и она была бы выделена красным цветом. Каждый узел также подключен к другому узлу.

Для создания нового каталога в хранилище необходимо нажать ссылку Create-Folder (создать каталог) и посмотреть информацию о нем, щелкнув ссылку More info on this directory (дополнительная информация о каталоге). Текст в поле Directory writecap необходимо выделить и скопировать в буфер обмена.

Рисунок 4. Информация о каталоге

clip_image004

Настройка SFTP-сервера для доступа к Tahoe-Lafs

В каталоге /tahoe/1/private необходимо создать файл ftp.accounts со строкой, содержащей текст, скопированный в буфер обмена, как показано ниже:

renat renat

URI:DIR2:cfu2uqspe46p2e4jtxpj3agqte:ltguj64mcscftnr6bzbsnvch4gov3ksp4x33rxhxyasxjosknhfq

Данная запись означает, что для доступа к SFTP-серверу Tahoe-Lafs будет использоваться имя пользователя renat и пароль renat. В конфигурационный файл tahoe.cfg в папке /tahoe/1/ необходимо добавить секцию sftpd, как показано в листинге 9.

Листинг 9. Добавление SFTP для первого узла: /tahoe/1/tahoe.cfg.

[sftpd]

enabled = true

port = tcp:8022:interface=IP-адрес.виртуальной.машины

host_pubkey_file = private/ssh_host_rsa_key.pub

host_privkey_file = private/ssh_host_rsa_key

accounts.file = private/ftp.accounts

Осталось создать публичные и приватные ключи для RSA-шифрования. В каталоге /tahoe/1 в консоли необходимо ввести команду:

ssh-keygen -f private/ssh_host_rsa_key

Необходимо перезапустить Tahoe-Lafs сценарием startall.sh и попробовать подключиться с другого компьютера к виртуальной машине с сконфигурированным SFTP-сервером. Для подключения к SFTP можно использовать программу FileZilla. В меню Файл->Менеджер сайтов->Новый сайт необходимо указать настройки, приведенные на рисунке 5.

Рисунок 5. Настройка подключения к SFTP серверу Tahoe-Lafs

clip_image005

Теперь можно протестировать подключение к SFTP-серверу, развернутому на виртуальной системе, и в свою очередь связанному с хранилищем, развернутом на облачной платформе.

Как выглядит окончательное решение:

  • был создан SFTP-сервер для доступа к Tahoe-Lafs;
  • был выбран каталог, который будет открываться после подключения к SFTP-серверу;
  • каталоги Tahoe-Lafs ссылаются символическими ссылками в облако (каталог, который подключается после запуска Wuala).

Таким образом, все данные хранятся в Wuala (каталог storage), а настройки, ключи, узлы и introducer физически находятся на виртуальной машине OpenSuse.

Активное использование Tahoe-Lafs с хранилищем Wuala выявило большие проблемы со стабильностью, так как в программе Wuala часто возникают различные ошибки, и работа с файлами приостанавливается. Возможно, это связано с тем, что сервис Wuala находится в стадии beta тестирования и еще не готов к активной работе с большим числом файлов. К тому же все файлы, которые были записаны и потом удалены, попадают в корзину и увеличивают пространство, используемое для хранения файлов (загрузка 10 МБ полезной информации привела к выделению 100 МБ для удаленных файлов, находящихся в корзине).

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

Поэтому стоит попробовать другое облачное файловое хранилище – DropBox. Пакет DropBox доступен в репозитарии openSUSE:Factory:Contrib/openSUSE_11.4, поэтому его можно загрузить и установить через консоль, обладая полномочиями пользователя root, как показано в листинге 10.

Листинг 10. Загрузка и установка DropBox

подключение репозитария

#zypper ar http://download.opensuse.org/repositories/openSUSE:

/Factory:/Contrib/openSUSE_11.4/openSUSE:Factory:Contrib.repo

поиск пакета dropbox:

#zypper search dropbox

необходимо дать согласие на импорт сертификата ключа от репозитария Contrib.

установка dropbox

#zypper install dropbox

Установка DropBox завершается через меню ICEWM->SUSE->Internet->Data Exchange->DropBox. После запуска необходимо будет зарегистрироваться или использовать существующую учетную запись.

В каталоге /home/tahoe/Dropbox необходимо создать каталог для хранения данных: storage, а затем настроить символические ссылки, находящиеся в каталогах Tahoe-Lafs (удалив предыдущие ссылки на каталог Wuala). При этом хранимые данные необходимо заранее извлечь из Tahoe-Lafs, иначе они будут утеряны при отключении хранилища Wuala.

Тестирование Tahoe-Lafs с 3-мя узлами в связке с DropBox продемонстировало высокую надежность решения, так как ни разу не было зафиксировано ошибок или сбоев программы. Данный облачный сервис корректно обрабатывает большое количество файлов и освобождает память при удалении файлов.

Увеличение надежности файлового хранилища

Ранее было создано хранилище, состоящее из трех узлов. Но что произойдет при отсутствии подключения к сети или сбое в облачной среде? Будут ли доступны данные? При использовании Wuala данные окажутся недоступны. При использовании DropBox данные будут доступны на момент последней синхронизации данных. Однако данные окажутся недоступными для чтения/записи также и при отключении хотя бы одного из трёх узлов.

Для увеличения надежности можно увеличить избыточность сохраняемых данных, например, производить сохранение не в 3 узла, а в 5: 2 узла привязаны к каждой облачной платформе (Wuala и DropBox), и один узел сохраняет данные локально. Для этого потребуется установить в конфигурационном файле tahoe.cfg минимальное и оптимальное количество узлов для сохранения равным 3, а максимальное количество – равным 5 узлам. Измененное содержимое секции [storage] приведено в листинге 11.

Листинг 11. Изменение конфигурационных файлов всех 5 узлов

shares.needed = 3

shares.happy = 3

shares.total = 5

Потребуется внести изменения в существующие узлы через файлы /tahoe/1/tahoe.cfg, /tahoe/2/tahoe.cfg и /tahoe/3/tahoe.cfg. А также создать новые каталоги /tahoe/4 и /tahoe/5 для двух дополнительных узлов. Сами узлы можно создать с помощью команды create-node, которую можно запустить из каталога /home/tahoe/allmydata-tahoe-1.8.2/bin/:

./tahoe create-node /tahoe/4

./tahoe create-node /tahoe/5

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

В результате будет получена система, работоспособная даже при наличии только трех минимально необходимых узлов (один облачный сервис и локальный каталог). При доступности обоих облачных сервисов данные будут записываться в 5 узлов. Математический расчет показывает, что в каждом облаке будет храниться по 2/3 объема загруженной информации, а в локальном хранилище, непосредственно в виртуальной машине, будет сохраняться чуть больше 1/3 объема загруженной информации (при сохранении малая часть объема тратится на хэши и контрольную информацию).

Также возможен вариант, когда все данные сохраняются в DropBox, а в Wuala настраивается синхронизация каталогов с DropBox. При этом Wuala сама будет следить за данными, загруженными в облако (DropBox) и делать резервное копирование в свой каталог. При отключении DropBox достаточно будет сменить символические ссылки с Dropbox — storage на Wuala — storage и перезапустить Tahoe-Lafs.

Заключение

В рамках данной статьи была рассмотрена организация безопасного хранения персональных данных в различных облачных сервисах на примере использования файловой системы Tahoe-Lafs.

Использование SFTP-сервера для приема-передачи данных защищает их при передаче по локальной сети до момента попадания в облако. Использование избыточности позволяет осуществлять сохранение данных в облачной среде, даже если один из облачных сервисов будет недоступен. Получить дополнительную информацию по данной теме можно на Web-странице проекта SSNAS (Super Secury NAS), который также разрабатывается автором этой статьи.

Источник статьи

 

PS: Хочется заработать на сайте или блоге узнай как от практика

Материалы по теме