15 февр. 2013 г.

Шифрование каталогов с помощью Ecryptfs

На днях понадобилось зашифровать каталог пользователя. Да так чтобы он сам мог подключать и отключать его. Вот решил написать заметку на память. 
Практически все программы которые шифруют каталоги, используют файловую систему Fuse. Можно воспользоваться на выбор Encfs, Ecryptfs и даже банальным TrueCrypt. Мне понравилась Ecryptfs.


Установим необходимые пакеты:
[root@test]# yum install fuse ecryptfs-utils

Все дополнительные пакеты подтянутся сами. Дальше надо загрузить модули в ядро.
[root@test]# modprobe fuse
[root@test]# modprobe ecryptfs

Проверим:
[root@test]# lsmod | grep fuse
fuse                   73115  0
[root@test]# lsmod | grep ecryptfs
ecryptfs               99791  2

Все, теперь можно приступать к шифрованию. Для начала определитесь, какой каталог вы хотите шифровать. Можно зашифровать один и монтировать его в другой.
Я предпочитаю не плодить каталоги. Шифруется так:
[root@test]# mount -t ecryptfs /home/user/input /home/user/input

То есть я монтирую каталог в себя и шифрую. Будет задано несколько простых вопросов, включая парольную фразу. В результате в домашнем каталоге пользователя root создастся скрытый каталог .ecryptfs, и в нем текстовой файл sig-cache.txt в котором содержится кэшик зашифрованного каталога. Проверить можно командой mount
[root@test]# mount
/home/user/input on /home/user/input type ecryptfs (rw,noexec,nosuid,nodev,ecryptfs_sig=6e05b8b70f96a443,ecryptfs_ cipher=aes,ecryptfs_key_bytes=32,ecryptfs_unlink_sigs,user=root)

Повторить проделанное просто так, обычный пользователь не сможет, так как не будет прав на утилиту mount. Можно обойти права и дать возможность монтировать пользователю. Для начала надо выдрать информацию о смонтированном каталоге из mtab.
grep '/home/user/input' /etc/mtab
/home/user/input /home/user/input ecryptfs rw,noexec,nosuid,nodev,ecryptfs_sig=6e05b8b70f96a443,ecryptfs_cipher=aes, ecryptfs_key_bytes=32,ecryptfs_unlink_sigs,user=root 0 0

Скопировать это в /etc/fstab но при этом добавить два параметра - user и noautoВ итоге получим запись:
/home/user/input /home/user/input ecryptfs rw,user,noauto,ecryptfs_sig=6e05b8b70f96a443,ecryptfs_cipher=aes, ecryptfs_key_bytes=32,ecryptfs_unlink_sigs 0 0

Теперь подробнее:
/home/user/input /home/user/input - что и куда
ecryptfs - тип файловой системы
rw - разрешаем чтение/запись
user - разрешаем обычным пользователям использовать это правило
noauto - эта файловая система может быть смонтирована только вручную
ecryptfs_sig - кэшик нашего шифрования
ecryptfs_cipher - тип шифрования который выбирали
ecryptfs_key_bytes - размер ключа
ecryptfs_unlink_sigs - заставляет удалять ключ из кольца после размонтирования

Все ключи хранятся в keyring - кольце. Перед использованием зашифрованного каталога, необходимо сначала добавить ключ в кольцо. Делается это с помощью ecryptfs-manager. Пробуем:
[root@test]# su - user
[user@test]# ecryptfs-manager


eCryptfs key management menu
-------------------------------
        1. Add passphrase key to keyring
        2. Add public key to keyring
        3. Generate new public/private keypair
        4. Exit

Make selection:

Выбираем первый пункт, вводим ключ. Менеджер сообщает нам что все прошло успешно. Дальше user может попробовать смонтировать каталог:
mount -l /home/user/input /home/user/input

Комментариев нет:

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