Содержание
Облачные хранилища становятся всё доступней, однако многие справедливо опасаются держать в них приватные данные. Описываемый в статье способ шифрует данные не только в облаке, но и расположенные локально. Для разблокировки шифрованных данных будет использоваться пароль пользователя операционной системы. Это нужно учитывать при смене пароля, а также для обеспечения возможной синхронизации с другими своими компьютерами. Для решения нашей задачи используем программу 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» - таким образом, файлы в облаке будут иметь привычные имена и не будут пересинхронизироваться при использовании на разных компьютерах.(?)
Остальные параметры по умолчанию. При вводе пароля не забудьте выбрать его равным паролю логина юзера в системе.
Настройка автоматического монтирования 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, при правильном указании каталогов, должна спросить у вас только пароль.
Замечания
- Если включен автологин в систему в файле «/etc/lightdm/lightdm.conf», то монтирование шифрованного каталога в «~/private» автоматически осуществляться не будет. Оно и понятно. Но не сразу
- В ubuntu при монтировании EncFS в файловом менеджере появляется съемное устройство «private». А, допустим в Debian 7 XFCE, смонтированная система никак себя не обнаруживает. Об успешном монтировании можно судить или по наличию файла «.encfs6.xml» в точке монтирования, или командами
df -h | grep encfs
или
cat /etc/mtab | grep encfs
- В процессе настройки и эксплуатации может потребоваться отмонтировать шифрованную систему. Выполняется командой:
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_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
Пока эти проблемы не будут устранены, encfs не должна рассматриваться безопасной для важных данных в случаях, где эти атаки возможны.