Используем EncFS для "прозрачного" шифрования данных в облаках Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:encfs_cloud [2013/12/01 20:41]
[Использование]
wiki:encfs_cloud [2017/11/09 17:03] (текущий)
[Теперь о реверсе]
Строка 1: Строка 1:
 ====== Используем EncFS для "​прозрачного"​ шифрования данных в облаках ====== ====== Используем EncFS для "​прозрачного"​ шифрования данных в облаках ======
 {{:​wiki:​angel_penguin.png?​200 |}}Облачные хранилища становятся всё доступней,​ однако многие справедливо опасаются держать в них приватные данные. Описываемый в статье способ шифрует данные не только в облаке,​ но и расположенные локально. Для разблокировки шифрованных данных будет использоваться пароль пользователя операционной системы. Это нужно учитывать при смене пароля,​ а также для обеспечения возможной синхронизации с другими своими компьютерами. {{:​wiki:​angel_penguin.png?​200 |}}Облачные хранилища становятся всё доступней,​ однако многие справедливо опасаются держать в них приватные данные. Описываемый в статье способ шифрует данные не только в облаке,​ но и расположенные локально. Для разблокировки шифрованных данных будет использоваться пароль пользователя операционной системы. Это нужно учитывать при смене пароля,​ а также для обеспечения возможной синхронизации с другими своими компьютерами.
-Для решения нашей задачи используем программу EncFS (Шифрованная виртуальная файловая система) и пакет libpam-encfs (модуль для автоматического монтирования файловых систем EncFS использущий механизм модуля PAM)+Для решения нашей задачи используем программу EncFS (Шифрованная виртуальная файловая система) и пакет libpam-encfs (модуль для автоматического монтирования файловых систем EncFS использующий механизм модуля PAM) 
 + 
 +Всё описанное ниже тестировалось на ОБЛАКО@mail.ru
 ======Установка ====== ======Установка ======
 <code bash>​sudo apt-get install encfs libpam-encfs</​code>​ <code bash>​sudo apt-get install encfs libpam-encfs</​code>​
 ======Создание необходимых каталогов===== ======Создание необходимых каталогов=====
 Создадим в каталоге пользователя директорию ~/<​cloud>/​.private,​ в которой будут храниться данные в зашифрованном виде, и точку монтирования шифрованной файловой системы ~/private: Создадим в каталоге пользователя директорию ~/<​cloud>/​.private,​ в которой будут храниться данные в зашифрованном виде, и точку монтирования шифрованной файловой системы ~/private:
-<code bash>​mkdir ~/<​cloud>/​.private ~/​private</​code>​+<code bash>​mkdir ​-p ~/<​cloud>/​.private ~/​private</​code>​
 где <​cloud>​ - ваше название каталога который настроен для синхронизации облака. где <​cloud>​ - ваше название каталога который настроен для синхронизации облака.
 Названия каталогов конечно могут быть своими,​ но для простоты последующей настройки советую назвать их именно так. Названия каталогов конечно могут быть своими,​ но для простоты последующей настройки советую назвать их именно так.
 ======Создаем шифрованную файловую систему EncFS===== ======Создаем шифрованную файловую систему EncFS=====
 Создаем шифрованную файловую систему EncFS для уже созданных нами каталогов:​ Создаем шифрованную файловую систему EncFS для уже созданных нами каталогов:​
-<code bash>​encfs ~/<code>/​.private ~/​private</​code>​+<code bash>​encfs ~/<cloud>/​.private ~/​private</​code>​
 в процессе создания выбираем режим эксперта:​ "​x"​ - это для того что бы иметь возможность выбрать алгоритм шифрования имен "​Null"​ - таким образом,​ файлы в облаке будут иметь привычные имена и не будут пересинхронизироваться при использовании на разных компьютерах.(?​) FIXME в процессе создания выбираем режим эксперта:​ "​x"​ - это для того что бы иметь возможность выбрать алгоритм шифрования имен "​Null"​ - таким образом,​ файлы в облаке будут иметь привычные имена и не будут пересинхронизироваться при использовании на разных компьютерах.(?​) FIXME
  
Строка 27: Строка 29:
 Пути могут быть как относительно домашнего каталога,​ так и полные. Пути могут быть как относительно домашнего каталога,​ так и полные.
  
 +Если синхронизируемые папки находятся вне домашнего каталога,​ то придётся вместо <<​*>>​ прописать имя (логин) пользователя:​
 +<code bash>​example_user /​mnt/<​cloud>/​.private /​home/​example_user/​private -v allow_other</​code>​
 2. Редактируем файл <</​etc/​fuse.conf>>:​ 2. Редактируем файл <</​etc/​fuse.conf>>:​
 <code bash>​sudo nano /​etc/​fuse.conf</​code>​ <code bash>​sudo nano /​etc/​fuse.conf</​code>​
Строка 34: Строка 38:
 <code bash>​sudo usermod -a -G fuse $USER</​code>​ <code bash>​sudo usermod -a -G fuse $USER</​code>​
 ======Использование===== ======Использование=====
-Теперь,​ всякий раз при запуске системы,​ данные из ~/<​cloud>/​.private должны ​монтироваться в ~/private в расшифрованном виде.+Теперь,​ всякий раз при запуске системы,​ данные из ~/<​cloud>/​.private ​будут монтироваться в ~/private в расшифрованном виде. ​Пользователь должен работать с файлами расположенными именно в каталоге ~/private. Каталог c шифрованными данными сознательно сделан скрытым (в названии впереди добавлена точка) что бы случайно не ввести туда данные.  
 +======Настройка синхронизации с другими компьютерами===== 
 +При настройке синхронизации с другим компьютером сначала настраиваем синхронизацию с облаком,​ синхронизируем все файлы и только затем настраиваем EncFS. Поскольку,​ файл <<​.encfs6.xml>>​ уже будет на месте, программа EncFS, при правильном указании каталогов,​ должна спросить у вас только пароль. 
 +<note warning>​Будьте готовы к тому, что при неправильных действиях вновь созданный пустой каталог может привести к опустошению содержимого соответствующего каталога в облаке и на всех связанных с ним компьютерах.</​note>​
 ======Замечания===== ======Замечания=====
-1. Если включен автологин в систему в файле <</​etc/​lightdm/​lightdm.conf>>,​ то монтирование шифрованного каталога в <<​~/​private>>​ автоматически осуществляться не будет. Оно и понятно. Но не сразу ;-)+  - Если включен автологин в систему в файле <</​etc/​lightdm/​lightdm.conf>>,​ то монтирование шифрованного каталога в <<​~/​private>>​ автоматически осуществляться не будет. Оно и понятно. Но не сразу ;-) 
 +  - В ubuntu при монтировании EncFS в файловом менеджере появляется съемное устройство <<​private>>​. А, допустим в Debian 7 XFCE, смонтированная система никак себя не обнаруживает. Об успешном монтировании можно судить или по наличию файла <<​.encfs6.xml>>​ в точке монтирования,​ или командами <code bash>df -h | grep encfs</​code>​ или <code bash>cat /etc/mtab | grep encfs</​code>​ 
 +  - В процессе настройки и эксплуатации может потребоваться отмонтировать шифрованную систему. Выполняется командой:​ <code bash>​fusermount -u ~/​private</​code>​ 
 + 
 +======Теперь о реверсе===== 
 +Хранение локальных файлов в шифрованном виде может быть нецелесообразным,​ например,​ если домашний каталог и так шифруется,​ или, как у меня, зашифрован весь корень,​ или же вы вообще не собираетесь шифровать данные локально. Для такого случая есть интересная опция --reverse. Что бы её использовать меняем местами как в настройках,​ так и в голове понятия ​ SOURCE и  TARGET. Теперь источником будут обычные нешифрованные данные,​ а в точке монтирования ​ TARGET PATH будут шифрованные данные. 
 + 
 +Таким образом меняется команда создания шифрованной файловой системы:​ 
 + 
 +<code bash>​encfs --reverse ~/private ~/<​cloud>/​.private</​code>​ 
 + 
 +И строка в файле «/​etc/​security/​pam_encfs.conf» меняется соответственно:​ 
 + 
 +<code bash>* private <​cloud>/​.private -v allow_other</​code>​ 
 +<note important>​Для расшифровки синхронизированных данных на другом (новом) компьютере необходимо хранить файл encfs6.xml из каталога с нешифрованными данными.</​note>​ После окончания синхронизации - загрузки всех шифрованных данных на новый компьютер,​ приостанавливаем синхронизацию. Расшифровываем данные с помощью файла encfs6.xml и пароля во временный каталог:​ 
 +<code bash>​ENCFS6_CONFIG=~/​temp_dir/​.encfs6.xml encfs ~/<​cloud>/​.private ~/​temp_dir/​private</​code>​ 
 +Копируем расшифрованные данные из временного каталога на своё постоянное место хранения:​ 
 +<code bash>cp -r ~/​temp_dir/​private ~/​private</​code>​ 
 +Очищаем каталог ~/<​cloud>/​.private от шифрованных данных любым известным вам способом. И создаем новую шифрованную файловую систему с использованием сохраненного файла encfs6.xml:​ 
 +<code bash>​ENCFS6_CONFIG=~/​temp_dir/​.encfs6.xml encfs --reverse ~/private ~/<​cloud>/​.private</​code>​ 
 +Проверяем наличие шифрованных данных в нужном каталоге и возобновляем синхронизацию с облаком.  
 +======Сведения о безопасности encfs===== 
 +<note warning>​Согласно аудиту безопасности,​ выполненному Taylor Hornby (Defuse Security), текущая реализация Encfs уязвима или потенциально уязвима нескольким типам атак. Например,​ атакующий с правами чтения/​записи шифрованных данных может понизить стойкость шифрования последующих данных без уведомления законного пользователя,​ или может использовать временной анализ для получения информации. 
 + 
 +Пока эти проблемы не будут устранены,​ encfs не должна рассматриваться безопасной для важных данных в случаях,​ где эти атаки возможны.</​note>​
  
-2. В ОС Xubuntu 13.04 при монтировании EncFS в файловом менеджере Thunar появляется съемное устройство <<​private>>​. А, допустим в Debian 7 XFCE, смонтированная система никак себя не обнаруживает. Об успешном монтировании можно судить или по наличию файла <<​.encfs6.xml>>​ в точке монтирования,​ или командами 
-<code bash>df -h | grep encfs</​code> ​ 
-или 
-<code bash>cat /etc/mtab | grep encfs</​code> ​ 
-3. В процессе настройки и эксплуатации может потребоваться отмонтировать шифрованную систему. Выполняется командой:​ 
-<code bash>​fusermount -u ~/​private</​code> ​ 
-4. При настройке синхронизации с другим компьютером скачиваем с облака файл <<​encfs6.xml>>,​ добавляем к названию файла точку: <<​.encfs6.xml>>​ и заменяем им аналогичный файл в каталоге <<​~/​.private>>,​ предварительно отмонтировав шифрованную файловую систему. Или же, если облако уже синхронизировано с локальным компьютером,​ останавливаем синхронизацию,​ отмонтируем EncFS, каталог <<​~/<​cloud>/​.private>>​ переносим в <<​~/>>​ и делаем символьную ссылку ​ 
-<code bash>ln -s ~/.private ~/<​cloud>/​.private</​code>​ 
-В случае с mail.ru придётся ещё удалить служебные файлы <<​.Mail.Ru_Cloud>>​ и <<​Mail.Ru_Cloud_$USER>>​ и перенастроить синхронизацию с облаком. Поэтому при настройке нового компьютера саму синхронизацию файлов следует запускать в последнюю очередь. 
 ===== Ссылки ===== ===== Ссылки =====