eCryptfs — Шифрование каталога в Linux

03. 06. 2015

eCryptfs - файловая система для многоуровневого шифрования папки в Linux которая не нуждается в резервировании места.  eCryptfs монтируется в любую директорию и шифрует ее содержимое, но не может зашифровать раздел или весь жесткий диск.

eCryptfs

eCryptfs:

Входит в ядро Linux начиная с версии 2.6.19, для ее использования необходимо установить два пакета keyutils и ecryptfs-utils. Загрузим модуль ядра ecryptfs.

# modprobe ecryptfs

В качестве примера создадим и зашифруем папку pass.

# mkdir -m 700 /home/user/.pass
# mkdir -m 500 /home/user/pass
# chown user:user /home/user/{.pass,pass}

Зашифрованные файлы будут находится в папке ~/.pass, после того как директория будет смонтирована файлы будут доступны в папке ~/pass с такими-же правами как и у ~/.pass.

Теперь смонтируем:

# mount -t ecryptfs /home/user/.pass /home/username/pass

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

Select key type to use for newly created files:
1) passphrase
2) openssl
Selection: 1

Просит ввести пароль (при вводе пароль не отображается на экране):

Passphrase: password

Предлагает выбрать метод шифрования, выбираем aes:

Select cipher:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32
2) blowfish: blocksize = 8; min keysize = 16; max keysize = 56
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24
4) twofish: blocksize = 16; min keysize = 16; max keysize = 32
5) cast6: blocksize = 16; min keysize = 16; max keysize = 32
6) cast5: blocksize = 8; min keysize = 5; max keysize = 16
Selection [aes]: 1

Выбор количеств байт в ключе:

Select key bytes:
1) 16
2) 32
3) 24
Selection [16]: 1

Разрешить работать и сохранять с не зашифрованными данными внутри папки ~/.pass:

Enable plaintext passthrough (y/n) [n]: n

Шифровать имена файлов:

Enable filename encryption (y/n) [n]: y

Просит ввести пароль для шифрования имен файлов:

Filename Encryption Key (FNEK) Signature [630037dbcf3fef09]:

После чего выведет на экран все то, что мы вводили ранее и попросит подтвердить, вводим yes нажимаем Enter:

Would you like to proceed with the mount (yes/no)? : yes

Хотим ли мы добавить сигнатуры в файл sig-cache.txt, чтобы избежать этого сообщения в будущем?

Would you like to append sig [630037dbcf3fef09] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)? : yes

Вот и все, зашифрованная папка создана и смонтирована:

Successfully appended new sig to user sig cache file
Mounted eCryptfs

Далее можно разместить в папке ~/pass нужные файлы и после того, как вы размонтируете директорию, увидите, что содержимое данной папки недоступно.

Монтирование:

Для получения доступа к зашифрованным файлам необходимо добавить строку в /etc/fstab:

/home/user/.pass /home/user/pass ecryptfs rw,user,noauto,ecryptfs_sig=630037dbcf3fef09,cryptfs_fnek_sig=630037dbcf3fef09,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecrypfs_unlink_sigs 0 0

user — монтировать с ограниченными правами.

ecryptfs_sig=630037dbcf3fef09 — значение сигнатур (лежит в файле /root/.ecryptfs/sig-cache.txt).

ecryptfs_fnek_sig=630037dbcf3fef09 — если было включено шифрование имен файлов.

Далее вводим следующею команду и пароль:

$ ecryptfs-add-passphrase
Passphrase: password

Монтируем папку:

$ mount -i /home/username/pass

Для удаления папки нужно ее размонтировать и после чего удалить.