Облачные хранилища становятся всё доступней, однако многие справедливо опасаются держать в них приватные данные. Описываемый в статье способ шифрует данные не только в облаке, но и расположенные локально. Для разблокировки шифрованных данных будет использоваться пароль пользователя операционной системы. Это нужно учитывать при смене пароля, а также для обеспечения возможной синхронизации с другими своими компьютерами. Для решения нашей задачи используем программу EncFS (Шифрованная виртуальная файловая система) и пакет libpam-encfs (модуль для автоматического монтирования файловых систем EncFS использующий механизм модуля PAM)

Всё описанное ниже тестировалось на ОБЛАКО@mail.ru

Установка

sudo apt-get install encfs libpam-encfs

Создание необходимых каталогов

Создадим в каталоге пользователя директорию ~/<cloud>/.private, в которой будут храниться данные в зашифрованном виде, и точку монтирования шифрованной файловой системы ~/private:

mkdir -p ~/<cloud>/.private ~/private

где <cloud> - ваше название каталога который настроен для синхронизации облака. Названия каталогов конечно могут быть своими, но для простоты последующей настройки советую назвать их именно так.

Создаем шифрованную файловую систему EncFS

Создаем шифрованную файловую систему EncFS для уже созданных нами каталогов:

encfs ~/<cloud>/.private ~/private

в процессе создания выбираем режим эксперта: «x» - это для того что бы иметь возможность выбрать алгоритм шифрования имен «Null» - таким образом, файлы в облаке будут иметь привычные имена и не будут пересинхронизироваться при использовании на разных компьютерах.(?) FIXME

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

Настройка автоматического монтирования EncFS при входе пользователя в систему (логине)

1. Редактируем файл «/etc/security/pam_encfs.conf»:

sudo nano /etc/security/pam_encfs.conf

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

# encfs_default --idle=1

раскомментируем строку:

* .private private -v allow_other

отредактируем её таким образом что бы указать созданные нами ранее каталоги:

* <cloud>/.private private -v allow_other

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

Если синхронизируемые папки находятся вне домашнего каталога, то придётся вместо «*» прописать имя (логин) пользователя:

example_user	/mnt/<cloud>/.private /home/example_user/private -v allow_other

2. Редактируем файл «/etc/fuse.conf»:

sudo nano /etc/fuse.conf

где раскомментируем строку позволяющую опции монтирования не-root пользователям:

user_allow_other

3. Добавляем пользователя в группу fuse:

sudo usermod -a -G fuse $USER

Использование

Теперь, всякий раз при запуске системы, данные из ~/<cloud>/.private будут монтироваться в ~/private в расшифрованном виде. Пользователь должен работать с файлами расположенными именно в каталоге ~/private. Каталог c шифрованными данными сознательно сделан скрытым (в названии впереди добавлена точка) что бы случайно не ввести туда данные.

Настройка синхронизации с другими компьютерами

При настройке синхронизации с другим компьютером сначала настраиваем синхронизацию с облаком, синхронизируем все файлы и только затем настраиваем EncFS. Поскольку, файл «.encfs6.xml» уже будет на месте, программа EncFS, при правильном указании каталогов, должна спросить у вас только пароль.

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

Замечания

  1. Если включен автологин в систему в файле «/etc/lightdm/lightdm.conf», то монтирование шифрованного каталога в «~/private» автоматически осуществляться не будет. Оно и понятно. Но не сразу ;-)
  2. В ubuntu при монтировании EncFS в файловом менеджере появляется съемное устройство «private». А, допустим в Debian 7 XFCE, смонтированная система никак себя не обнаруживает. Об успешном монтировании можно судить или по наличию файла «.encfs6.xml» в точке монтирования, или командами
    df -h | grep encfs

    или

    cat /etc/mtab | grep encfs

  3. В процессе настройки и эксплуатации может потребоваться отмонтировать шифрованную систему. Выполняется командой:

    fusermount -u ~/private

Теперь о реверсе

Хранение локальных файлов в шифрованном виде может быть нецелесообразным, например, если домашний каталог и так шифруется, или, как у меня, зашифрован весь корень, или же вы вообще не собираетесь шифровать данные локально. Для такого случая есть интересная опция –reverse. Что бы её использовать меняем местами как в настройках, так и в голове понятия SOURCE и TARGET. Теперь источником будут обычные нешифрованные данные, а в точке монтирования TARGET PATH будут шифрованные данные.

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

encfs --reverse ~/private ~/<cloud>/.private

И строка в файле «/etc/security/pam_encfs.conf» меняется соответственно:

* private <cloud>/.private -v allow_other
Для расшифровки синхронизированных данных на другом (новом) компьютере необходимо хранить файл encfs6.xml из каталога с нешифрованными данными.

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

ENCFS6_CONFIG=~/temp_dir/.encfs6.xml encfs ~/<cloud>/.private ~/temp_dir/private

Копируем расшифрованные данные из временного каталога на своё постоянное место хранения:

cp -r ~/temp_dir/private ~/private

Очищаем каталог ~/<cloud>/.private от шифрованных данных любым известным вам способом. И создаем новую шифрованную файловую систему с использованием сохраненного файла encfs6.xml:

ENCFS6_CONFIG=~/temp_dir/.encfs6.xml encfs --reverse ~/private ~/<cloud>/.private

Проверяем наличие шифрованных данных в нужном каталоге и возобновляем синхронизацию с облаком.

Сведения о безопасности encfs

Согласно аудиту безопасности, выполненному Taylor Hornby (Defuse Security), текущая реализация Encfs уязвима или потенциально уязвима нескольким типам атак. Например, атакующий с правами чтения/записи шифрованных данных может понизить стойкость шифрования последующих данных без уведомления законного пользователя, или может использовать временной анализ для получения информации.

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

Ссылки