Pull to refresh

Сохраняем безопасно свои данные: p2p файловая система с шифрованием в облаке

Reading time 5 min
Views 5.5K
Сегодня идея облачного хранения файлов популярна у всех. О данной технологии пишут в интернете, говорят по телевидению. Однако не все готовы доверять свои личные данные чужим серверам и чужим администраторам сервера, ведь как бы не шифровали (проприентарные) программы, все равно возможно существует возможность прочесть ваши данные. Поэтому для безопасного хранения личных данных стоит задуматься об использования открытых технологий с шифрованием.

Для шифрования была выбрана распределенная файловая система Tahoe-Lafs, построенная на технологии p2p. Достоинство данной технологии, что файлы шифруются и записываются на ноды в виде кусочков (подобно bittorrent). А сохранять данные будем в программу wuala (облачную проприентарную файловую систему, аналог dropbox).

С помощью SuseStudio был склонирована моя собственная разработка (Tahoe-Lafs live disk на базе OpenSuse 11.4) и была произведена доработка: установлены x11, icewm, java, не достающие компоненты и таким образом сборка стала выглядеть так:

image

Еще пришлось доработать файлы: permissions.local, windowmanager, без которых не запускались x11 из под обычного пользователя (не root), т. к. suid программы практически полностью уже исключены в новых сборка linux.

Собираем образ в веб студии в формате OFV image, скачиваем его и импортируем в VirtualBox и запускаем нашу виртуальную машину.

image

В консоли под пользователем root создаем папку /tahoe в не папки /tahoe/1, /tahoe/2, /tahoe/3, т. к. минимальное количество nod для работы 3 шт и папку для introducer (tracker на языке bittorrent): /tahoe/intro. Изменяем права для данной папки для всех: chmod +x -R 777 /tahoe/*
Супер пользовательскую консоль закрываем и создаем файл в домашнем каталоге и в папке /home/tahoe/allmydata-tahoe-1.8.2/bin с содержанием:

createall.sh
#/bin/sh

./tahoe create-introducer /tahoe/intro &
./tahoe create-node /tahoe/1 &
./tahoe create-node /tahoe/2 &
./tahoe create-node /tahoe/3 &

startall.sh
#/bin/sh

./tahoe restart /tahoe/intro &
./tahoe restart /tahoe/1 &
./tahoe restart /tahoe/2 &
./tahoe restart /tahoe/3 &

Делаем их запускными: chmod +x *.sh

Осталось сконфигурировать Tahoe. В каждой папке редактируем /tahoe/номер/tahoe.cfg
В нем даем название ноды и изменяем номер порта веб интерфейса, т. к. иначе будет конфликт:
т. е. Первый файл выглядит так: /tahoe/1/tahoe.cfg

[node]
nickname = Tahoe-Wuala1
web.port = tcp:3456:interface=127.0.0.1
web.static = public_html
#tub.port =
#tub.location =
#log_gatherer.furl =
#timeout.keepalive =
#timeout.disconnect =
#ssh.port = 8022
#ssh.authorized_keys_file = ~/.ssh/authorized_keys

В секции где количество нод для сохранения изменяем на 3:

[client]
# Which services should this client connect to?
introducer.furl = None
helper.furl =
#key_generator.furl =
#stats_gatherer.furl =

# What encoding parameters should this client use for uploads?
shares.needed = 3
shares.happy = 3
shares.total = 3

Теперь данный файл tahoe.cfg можно скопировать во вторую папку с заменой файла, и во второй папке изменить только порт и имя ноды: nickname = Tahoe-Wuala2
web.port = tcp:3457:interface=127.0.0.1 и в третьей: nickname = Tahoe-Wuala3
web.port = tcp:3458:interface=127.0.0.1

Пора запускать наш веб сервис. Запускаем созданный нами файл в /home/tahoe/allmydata-tahoe-1.8.2/bin/startall.sh

После запуска в папке /tahoe/intro появится адрес для introducer нашего хоста. Файл cat introducer.furl копируем в каждую папку /tahoe/1, /tahoe/2, и /tahoe/3.

Устанавливаем клиент, загружая его с сайта wuala.com, в консоли из под пользователем root:
rpm -ihv cdn.wuala.com/repo/suse/wuala-current.i386.rpm

Запускаем его уже под обычным пользователям и регистрируемся. Можно использовать мой промо код NNJFMJAK3HGH7P4J7GAC, т. к. по умолчанию дается всего 1 гб, а с помощью приглашений можно получить больше свободного места для хранения. Создаем папки для хранения в wuala:

www.wuala.com/referral/NNJFMJAK3HGH7P4J7GAC

В программе создаем папку tahoe и в ней подпапки 1,2,3 и в каждой из них storage — туда будут закачиваться зашированные файлы от tahoe

image

Теперь нужно поставить сим линки (ссылки) на реальную файловую систему opensuse. С помощью mc и меню File-Symlink:

image

Т. е. Папка /tahoe/1/storage ссылкается в папку в интернете в wuala: /home/tahoe/WualaDrive/ВашлогинWuala/tahoe/1/storage; /tahoe/2/storage ссылкается в wuala: /home/tahoe/WualaDrive/ВашлогинWuala/tahoe/2/storage и третья папка соответственно в /tahoe/3/storage ссылкается в папку в интернете в wuala: /home/tahoe/WualaDrive/ВашлогинWuala/tahoe/3/storage

Перезапускаем нашу tahoe скриптом startall.sh. Запускаем в консоли из под root сервис ssh: service sshd start и подключаемся в другой машины к tahoe через перенаправление портов:

ssh -C tahoe@айпивиртуальной_машины -L localhost:3456:localhost:3456

Открываем наш браузер и смотрим что у нас получилось:

image
image

Все нормально, ноды подключились. Пробуем создать папку, нажимаем Create a directory.
Смотрим информацию о ней: More info on this directory и видим адрес: Directory writecap URI:DIR2:7awqdjdkkkwookbhc4eigffgu4:vbnajdeshk4hgb6eatamfycdfolydafy42hm6uv7d7xmajhu4mpa. Остается добавить фронтэнд (sftp). Для этого в папке /tahoe/1/private создаем файл ftp.accounts с содержимым:
renat renat URI:DIR2:7awqdjdkkkwookbhc4eigffgu4:vbnajdeshk4hgb6eatamfycdfolydafy42hm6uv7d7xmajhu4mpa

В файле /tahoe/1/tahoe.cfg добавляем о секцию о том, что у нас есть sftp:

[sftpd]
enabled = true
port = tcp:8022:interface=айпивиртуальноймашины
host_pubkey_file = private/ssh_host_rsa_key.pub
host_privkey_file = private/ssh_host_rsa_key
accounts.file = private/ftp.accounts

В папке /tahoe/1 запускаем генерацию ключей шифрования для sftp
ssh-keygen -f private/ssh_host_rsa_key

Снова перезапускаем tahoe с помощью скрипта startall.sh. И на любом комьютере в любой системе (и в windows в том числе) теперь можно настраивать FileZilla используя имя и пароль:renat (мы его задали ранее в файле ftp.accounts):

image

В меню FileZilla Передачи ставим Сохранять Временные метки файлов, чтобы при закачки файлов в tahoe у нас сохранялась дата.

Подключаемся и можем закачивать файлы. Вот как выглядит результат закачки файла FTP-and-SFTP.rst из папки /home/allmydata-tahoe-1.8.2/docs/frontends/. Как видим файл 10,8 кб разбился на кусочки по 4,9 кб и был закачан в зашифрованном виде:

image

Таким образом мы храним в Wuala куски шифрованных файлов в непонятными названиями. Доступ к ссылки доступен только для нас, т. к. ключи шифрования нод хранятся в локальной системе (OpenSuse). Для тех, кто особенно страдает параноей можно рекомендовать следующее: Первую ноду использовать в wuala, вторую ноду использовать в DropBox, а третью хранить вообще локально в виртуальной машине. Таким образом, если администраторы даже получат доступ к вашей информации, им будет доступен кусок файла 1/3 содержания, а остальные куски лежат в других местах и в других сервисах. Так же возможен интересный вариант, когда вы храните 2 ноды в wuala, 2 ноды в dropbox и 1 ноду в локальной папке. Таким образом даже если у вас ломается жестких диск, то при настройке как в данной статье получим что доступны 4 ноды (при минимуме в 3) для восстановления информации, так же как и если будет не доступен один из сервисов, например wuala, с помощью 2х нод dropbox и локальной ноды вы сможете считывать и записывать свою информацию.

Если будет интересно пользователям или возникнут вопросы, постараюсь на них ответить.
Tags:
Hubs:
+18
Comments 22
Comments Comments 22

Articles