В этом руководстве объясняется, что такое eCryptfs и как шифровать каталоги с помощью eCryptfs на Linux.
eCryptfs – это POSIX-совместимая криптографическая «стековая» файловая система для Linux.
Обратите внимание, что eCryptfs не является подсистемой полного шифрования диска на уровне ядра, такой как «dm-crypt».
В механизме полного дискового шифрования весь раздел или диск, на котором находится файловая система, шифруется.
Но eCryptfs – это сложенная файловая система, которая может быть смонтирована в любом каталоге и поверх основной файловой системы.
Используя eCryptfs, мы можем легко создать зашифрованный каталог для хранения конфиденциальных данных и смонтировать его в любом каталоге.
Никакого отдельного раздела или предварительно выделенного пространства на самом деле не потребуется!
eCryptfs должен хорошо работать на локальных файловых системах, таких как EXT3, EXT4, XFS, JFS, ReiserFS и т. д.
Инструмент также поддерживает сетевые файловые системы, такие как NFS, CIFS, Samba и WebDAV, но не с полным функционалом, поскольку работает на локальных файловых системах.
eCryptfs хранит криптографические метаданные в заголовках файлов, поэтому зашифрованные данные могут быть легко перемещены между различными пользователями и даже системами.
eCryptfs был включен в ядро Linux с версии 2.6.19.
eCryptfs является производной от Cryptfs Эреза Задока и инфраструктуры FiST для стековых файловых систем.
Первоначально его автором был Майкл Хэлкроу и IBM Linux Technology Center.
Теперь его активно поддерживают Дастин Киркланд и Тайлер Хикс из Canonical, дочерней компании Ubuntu.
Установка eCryptfs на Linux
eCryptfs был упакован для многих операционных систем Linux и доступен в репозиториях по умолчанию.
Чтобы установить eCryptfs в Arch Linux и его вариантах, таких как Manjaro Linux, выполните:
$ sudo pacman -S ecryptfs-utils
На Debian, Ubuntu, Linux Mint:
$ sudo apt-get install ecryptfs-utils
На Fedora:
$ sudo dnf install ecryptfs-utils
На openSUSE:
$ sudo zypper --install ecryptfs-utils
Шифрование каталогов с помощью eCryptfs на Linux
В целях данного руководства я собираюсь зашифровать каталог с именем «itsecforu»
Обратите внимание, что вы не должны шифровать непустую директорию.
Если вы это сделаете, существующие данные по-прежнему останутся незашифрованными, или данные не будут доступны.
Поэтому, если каталог содержит какие-либо данные, переместите их в другое место, а затем зашифруйте их.
Как только каталог зашифрован, переместите резервную копию в зашифрованный каталог.
Чтобы зашифровать каталог itsecforu с файловой системой ecryptfs, выполните следующую команду от имени пользователя sudo или root:
$ sudo mount -t ecryptfs ~/itsecforu/ ~/itsecforu/
При первом шифровании каталога вам будет предложено ответить на несколько вопросов, таких как выбор шифра, ключа, включить / отключить передачу открытого текста, включить / отключить шифрование имени файла и т. д.
Внимательно прочитайте и ответьте на них соответствующим образом.
Я выполню со значениями по умолчанию.
[sudo] password for itsecforu: Passphrase: <----- Enter your passphrase 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]: <----- Press ENTER Select key bytes: 1) 16 2) 32 3) 24 Selection [16]: <----- Press ENTER Enable plaintext passthrough (y/n) [n]: <----- Press ENTER Enable filename encryption (y/n) [n]: <----- Press ENTER Attempting to mount with the following options: ecryptfs_unlink_sigs ecryptfs_key_bytes=16 ecryptfs_cipher=aes ecryptfs_sig=8567ee2ae5880f2d WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt], it looks like you have never mounted with this key before. This could mean that you have typed your passphrase wrong. Would you like to proceed with the mount (yes/no)? : yes <----- Type "yes" and press ENTER Would you like to append sig [8567ee2ae5880f2d] to [/root/.ecryptfs/sig-cache.txt] in order to avoid this warning in the future (yes/no)? : yes <----- Type "yes" and press ENTER Successfully appended new sig to user sig cache file Mounted eCryptfs
Теперь каталог «itsecforu» был зашифрован с помощью eCryptfs и автоматически смонтирован.
Пожалуйста, обратите внимание на парольную фразу, которую вы ввели на первом шаге.
Файл подписи с именем «sig-cache.txt» будет создан в каталоге «/root/.ecryptfs/».
Этот файл используется для идентификации парольной фразы в связке ключей ядра.
$ mount
В конце вы увидите вывод, как показано ниже:
/home/itsecforu/itsecforu on /home/itsecforu/itsecforu type ecryptfs (rw,relatime,ecryptfs_sig=8567ee2ae5880f2d,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs)
Мы успешно зашифровали каталог с помощью eCryptfs.
Теперь переместите все ваши важные файлы и папки в зашифрованный каталог.
Вы можете читать и записывать данные, сохраненные в этом каталоге, если каталог монтируется с помощью eCryptfs.
После размонтирования каталога вы можете просматривать то, что сохранено в каталоге, но не можете читать эти файлы.
Как смонтировать / размонтировать зашифрованные каталоги
Чтобы размонтировать каталог eCryptfs, просто запустите:
$ sudo umount ~/itsecforu
Чтобы смонтировать его снова, запустите:
$ sudo mount -t ecryptfs ~/itsecforu/ ~/itsecforu/
Passphrase: 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]: Select key bytes: 1) 16 2) 32 3) 24 Selection [16]: Enable plaintext passthrough (y/n) [n]: Enable filename encryption (y/n) [n]: Attempting to mount with the following options: ecryptfs_unlink_sigs ecryptfs_key_bytes=16 ecryptfs_cipher=aes ecryptfs_sig=8567ee2ae5880f2d Mounted eCryptfs
Тестируем зашифрованный каталог
Создайте новый текстовый файл с именем «encrypt.txt» в зашифрованном каталоге:
$ nano ~/itsecforu/encrypt.txt
This is an encrypted file saved in itsecforu.ru
Сохраните и закройте файл.
А затем размонтируйте зашифрованный каталог:
$ sudo umount ~/itsecforu
Теперь попробуйте просмотреть файл, используя любой текстовый редактор или команду «cat»:
$ cat ~/itsecforu/encrypt.txt
$ sudo mount -t ecryptfs ~/itsecforu/ ~/itsecforu/
Как изменить парольную фразу
Если вы хотите изменить пароль для монтирования, просто удалите файл «/root/.ecryptfs/sig-cache.txt».
Он создается при первом шифровании каталога.
Этот файл используется для идентификации парольной фразы монтирования в связке ключей ядра.
$ sudo rm /root/.ecryptfs/sig-cache.txt
$ sudo mount -t ecryptfs ~/itsecforu/ ~/itsecforu/
Как смонтировать зашифрованный каталог автоматически при перезагрузке
Возможно, вам не понравится монтировать зашифрованный каталог вручную при каждой перезагрузке.
Если это так, есть простой способ автоматически смонтировать зашифрованный каталог.
Нам нужен USB-накопитель для хранения подписи и пути файла пароля.
Подключите USB-накопитель.
Создайте точку монтирования и подключите USB-накопитель в точке монтирования, как показано ниже:
$ sudo mkdir /mnt/usb
$ sudo mount /dev/sdb1 /mnt/usb/
Откройте его и запишите подпись:
$ sudo cat /root/.ecryptfs/sig-cache.txt
8567ee2ae5880f2d
Создайте новый текстовый файл с именем «password.txt» в каталоге точек монтирования USB для хранения парольной фразы монтирования.
$ sudo nano /mnt/usb/password.txt
P@ssw0rd123#@!
Сохраните и закройте файл.
Создайте файл с именем «/root/.ecryptfsrc» для хранения всех необходимых параметров для монтирования зашифрованного каталога:
$ sudo nano /root/.ecryptfsrc
key=passphrase:passphrase_passwd_file=/mnt/usb/password.txt ecryptfs_sig=8567ee2ae5880f2d ecryptfs_cipher=aes ecryptfs_key_bytes=16 ecryptfs_passthrough=n ecryptfs_enable_filename_crypto=n
Обратите внимание, что вы должны использовать те же значения, которые вы указали при создании зашифрованного каталога.
Сохраните и закройте файл.
Затем откройте /etc/fstab и добавьте следующие строки:
/dev/sdb1 /mnt/usb ext3 ro 0 0 /home/itsecforu/itsecforu /home/itsecforu/itsecforu ecryptfs defaults 0 0
При смене парольной фразы зашифрованный каталог должен быть пустой? Как тогда сменить пароль шифрованного каталога заполненного файлами?