Безопасность при использовании сервиса Dropbox в Ubuntu Linux

Есть на свете замечательный интернет-сервис под названием DropBox, представляющий собой облачное файловое хранилище, то есть предназначенный для хранения файлов в интернете и синхронизации их между различными устройствами. А вот как обстоит дело с безопасностью такого хранения данных? О том, как обезопасить себя при работе с DropBox-ом, я и хочу рассказать в этой статье.

Безопасность при использовании сервиса Dropbox в Ubuntu Linux
Update (август 2019)

С момента написания этой статьи прошло почти 10 лет, и с тех пор многое изменилось. Поэтому я написал обновленный вариант этой статьи, с учетом сегодняшних реалий. Основное изменение в новой статье — это использование криптографической файловой системы gocryptfs вместо EncFS, в остальном схема работы осталась практически той же.

Что собой представляет Dropbox?

После установки специальной программы (доступной для всех популярных операционных систем) у вас на жестком диске появляется папочка под названием «Dropbox» (название и расположение можно поменять). При копировании в эту папочку файлов они одновременно передаются через интернет на специальный сервер. Впоследствии вы можете получить доступ к этой папочке и с других компьютеров. Мало того, между всеми подключенными устройствами (настольный компьютер, ноутбук, мобильный телефон и т.д.) происходит автоматическая синхронизация данных.

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

Преимущества такого подхода хранения данных понятны.
Теперь пара слов по поводу преимуществ сервиса DropBox, если вдруг кто-то с ними еще не знаком:

  • Есть возможность доступа к файлам как через специализированный кроссплатформенный софт, так и через веб-интерфейс.
  • В истории изменения записывается только отличие одной версии файла от другой, как следствие — экономия трафика, поскольку закачивается не весь файл, а только измененная часть.
  • Есть возможность различных манипуляций над файлами, в том числе и откат до более ранних версий (сохраняются изменения за последние 30 дней).
  • Есть возможность расшаривания файлов для указанных пользователей (папка «Public»).
  • Можно получать обычные http-ссылки на файлы, хранящиеся в папке «Public», то есть использовать сервис в качестве классического файлообменника.
  • Бесплатное использование сервиса при хранении данных объемом до 2 Гб (возможно бесплатное увеличение до 8 Гб или платное до 50-100 Гб).
  • И это еще не все. Присоединяйтесь, и вы наверняка оцените все преимущества сервиса.

Шифрование данных в Dropbox

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

Решение есть — шифровать данные самостоятельно, отправлять их на сервер в уже зашифрованном виде. Только вот как этот процесс полностью автоматизировать? Легко!

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

Как я уже сказал, все манипуляции в примере ниже я буду производить на Ubuntu Linux, но подобные же действия можно произвести и на Mac OS и на Windows. Правда, версия EncFS для Windows пока сыровата, поэтому возможно придется использовать другую криптографическую систему. На Mac OS же EncFS работает не хуже чем на Linux.

Поскольку вы наверняка не хотите шифровать абсолютно все данные (как минимум стоит оставить незашифрованной папочку «Public»), то шифровать мы будем не всю папку «Dropbox» целиком, а только одну папку внутри нее. Итак, приступаем…

Шаг 1

Первым делом установите DropBox, если вы этого еще не сделали.

Шаг 2

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

sudo apt-get install encfs libpam-mount

Добавьте своего пользователя в группу «fuse» (в команде ниже замените «username» на имя своего пользователя):

sudo adduser urusername fuse

Перелогиньтесь в систему заново, чтобы вышеописанные изменения вступили в силу.

Шаг 3

Теперь создайте две папки:

mkdir ~/Unencrypted
mkdir ~/Dropbox/Encrypted

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

Шаг 4

Выполните в консоли следующую команду (замените «username» на имя своего пользователя):

encfs /home/username/Dropbox/Encrypted /home/username/Unencrypted

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

  • Введите «x» для выбора режима эксперта.
  • Введите «1» для выбора алгоритма шифрования «AES»
  • Введите «256» для задания размера ключа в битах.
  • Введите «1024» для задания размера блока файловой системы.
  • Введите «1» для выбора алгоритма зашифровки «Block».
  • Введите «y» для опции «Enable filename initialization vector chaining?»
  • Введите «n» для опции «Enable per-file initialization vectors?»
  • Введите «n» для опции «Enable block authentication code headers on every block in a file?»
  • Введите «y» для опции «Enable file-hole pass-through?»
  • Введите пароль, и повторите его еще раз. Для того, чтобы следующий шаг этого руководства заработал как нужно, желательно ввести здесь тот же пароль, который вы используете для входа в систему.

Теперь при копировании файлов в папку «/home/username/Unencrypted» те же файлы будут появляться в папке «/home/username/Dropbox/Encrypted» в зашифрованном виде. Мы почти закончили, остался последний штрих.

Шаг 5

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

sudo gedit /etc/security/pam_mount.conf.xml

Найдите в этом файле следующую строку:

<!-- Volume definitions -->

Прямо под ней вставьте еще одну строку (замените «username» на имя своего пользователя):

<volume  user="username" fstype="fuse" path="encfs#/home/username/Dropbox/Encrypted" mountpoint="/home/username/Unencrypted" />

Все, теперь ни о чем не задумываясь можно работать с файлами в папке «/home/username/Unencrypted» — они будут автоматически шифроваться и помещаться в папку «/home/username/Dropbox/Encrypted», после чего в зашифрованном виде отправляться на сервер DropBox. После перезагрузки наша зашифрованная файловая система будет монтироваться автоматически. Результат достигнут!

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

Update

Обнаруженные подводные камни

  • Один из компьютеров у меня вообще отказался грузиться после вышеописанных изменений в файле «pam_mount.conf.xml». Поскольку именно на этом компьютере меня вполне устраивает ручное монтирование, то в логах не копался, причины не искал.
  • При изменении незашифрованных файлов Dropbox заливает на сервер только измененную часть файла. А вот в случае шифрования (если я правильно понимаю) меняется весь файл целиком, поэтому трафик вероятно будет больше.
  • При выключении компьютера какие-то файлы могут остаться в примонтированной папке (если они изменялись прямо в момент выключения, уже после отмонтирования расшифрованной папки). Как следствие — после загрузки компьютера файловая система не монтируется, получаем ошибку: fuse: mountpoint is not empty. Лечится опустошением папки.
  • В папке с зашифрованными файлами лежит файл «.encfs6.xml», который содержит в себе метаданные о зашифрованной файловой системе (кстати говоря, не вздумайте удалять этот файл). Так вот, при синхронизации нескольких компьютеров этот файл нужно копировать на все машины с самого первого компьютера, на котором производилось шифрование. Этот файл может быть помечен как конфликтный и замениться другим, с которым система потом отказывается работать. Лечится обратным переименованием старого (самого первого) файла.
  • Использовать синхронизацию через Dropbox (как в зашифрованном виде, так и нет) для часто изменяемых файлов не стоит, особенно если этих файлов очень много, иначе Dropbox будет постоянно занят бесполезной работой.
  • Иногда папки из расшифрованной директории не удаляются (лочатся). Удалить их получается только после выявления и удаления соответствующих им зашифрованных каталогов.

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


Оставить комментарий

19 комментариев на «“Безопасность при использовании сервиса Dropbox в Ubuntu Linux”»

  1. А не проще ли использовать truecrypt для шифрования файлов? Создаем файл-контейнер, в него записываем все то, что необходимо и все собственно.
    Клиенты truecrypt есть под различные операционные системы, сложности в использовании не возникнет.
    Единственно, не понимаю, зачем нужно хранить столь ценную информацию (что ее нужно шифровать) в облаке?

    • А в чем преимущества у Truecrypt перед EncFS в данном случае, вы можете сказать?

      Про Truecrypt я знаю прекрасно, и использую его давным-давно, только использую его немного для других целей, например, для шифрования раздела на флешке.

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

      Не забывайте, что в случае с Truecrypt этот самый один-единственный файл (который вероятно получится немаленького размера) при малейшем изменении будет синхронизироваться с сервером. Постоянно сливать на сервер огромный файл — неужели это удобно и практично? Правда, умный Dropbox вроде как заливает только изменившуюся часть файла, но, насколько я знаю, в случае с шифрованным контейнером Truecrypt меняется весь файл, так что этот аргумент не работает.

      А вот EncFS для этих целей подходит идеально — как в теории, так и на практике.

      • Есть такой момент, при использовании truecrypt + dropbox на сервер заливается только изменившийся diff файла. В папке с Dropbox лежит 1.5G файлик-контейнер, примонтирован к документам. Все происходит прозрачно — ложу в документы любой файл, изменятеся контейнер, дропбокс синхронизирует эти жалкие килобайты, никаких танцев с бубном. Уже давно так пользуюсь — весьма доволен 🙂

        • Спасибо за информацию, будем знать.
          Тем лучше для обладателей OS Windows — Truecrypt отлично работает и под их системой (в отличие от EncFS).

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

  2. Все получилось, только не понял как руками монтировать файловую систему

    • Смотрите команду в 4-м пункте, именно с ее помощью выполняется ручное монтирование. Вопросы по поводу параметров шифрования программа задает только первый раз, во второй и все последующие программа только спросит пароль, после чего примонтирует папку с расшифрованными файлами в указанное место.

  3. Ну вот, оказывается, шифрование данных в папке Dropbox — это вовсе не паранойя, а оправданная мера безопасности.

    Новости с сайта xakep.ru:

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

    Обнаруженная ошибка, к сожалению, влияет на весь механизм работы Dropbox. Утилита использует простой конфигурационный файл для объединения различных устройств в единую синхронизированную среду. Этот файл называется config.db и представляет собой таблицу базы данных, которая содержит всего три поля: email, dropbox_path и host_id. Последнее поле не относится к определенному хосту и не меняется со временем. Злоумышленники, используя вредоносные программы, могут получить файл config.db и без особых проблем подключиться ко всем папкам пользователя. Dropbox не проверяет количество подключенных компьютеров, поэтому жертва может даже не заметить, что ее файлы украдены.

    К сожалению, пока нет никаких средств защиты.

  4. Спасибо за развитие темы о безопасности пользования Dropbox. Как раз искал ответы на этот вопрос…

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

  5. Ну вот, очередное подтверждение необходимости дополнительного шифрования конфиденциальны х данных в папке Dropbox (цитата с Хабра):

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

  6. Попробовал настроить данную схему в дебиан стабильный.

    После этого:

    encfs /home/username/Dropbox/Encrypted /home/username/Unencrypted

    ругается так:
    fuse failed. Common problems:
    — fuse kernel module not installed (modprobe fuse)
    — invalid options — see usage message

    lsmod модуль fuse видит

      • Вы писали, что ругается на модуль, но если все же ругается на непустую папку, то можно использовать опцию:

        encfs -o nonempty /path /path
  7. Если кому интересно, при помощи EncFS подобное можно организовать и в Windows, требуется поставить программу BoxCryptor. Использую уже больше месяца, все устраивает. Храню на дропбоксе миранду, а профиль перенаправляю в шифрованную папку.

  8. Для того, чтобы следующий шаг этого руководства заработал как нужно, ЖЕЛАТЕЛЬНО ввести здесь тот же пароль, который вы используете для входа в систему.

    Желательно или обязательно?

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *