Поиск по сайту:

Как шифровать каталоги/разделы с помощью eCryptfs в Debian 8 (Джесси)


Это руководство существует для этих версий ОС

  • Debian 8 (Джесси)
  • Debian 6 (Squeeze)

На этой странице

  1. 1 Предварительное примечание
  2. 2 Установка eCryptfs
  3. 3 Шифрование каталога
  4. 4 Как автоматически монтировать зашифрованный раздел во время загрузки
  5. 5 ссылок

eCryptfs — это POSIX-совместимая криптографическая файловая система корпоративного класса для Linux. Вы можете использовать его для шифрования разделов, а также каталогов, которые не используют собственный раздел, независимо от базовой файловой системы, типа раздела и т. д. В этом руководстве показано, как использовать eCryptfs для шифрования каталога в Debian Jessie.

1 Предварительное примечание

В этом руководстве я зашифрую свой домашний каталог /home/falko/, который находится в разделе/(т. е. /home/falko/ — это обычный каталог, который не использует собственный раздел).

2 Установка eCryptfs

eCryptfs можно легко установить следующим образом:

apt-get -y install ecryptfs-utils

3 Шифрование каталога

Теперь я зашифрую свой домашний каталог /home/falko/. Поскольку в этом каталоге уже есть (незашифрованные) файлы, я должен сделать их резервную копию, чтобы позже восстановить их в тогда зашифрованном каталоге /home/falko/ (в противном случае эти файлы не могут быть доступны/прочитаны, пока каталог открыт). зашифровано):

cp -pfr /home/falko/ /tmp/

Теперь я могу зашифровать каталог /home/falko/, смонтировав его с файловой системой типа ecryptfs:

mount -t ecryptfs /home/falko /home/falko

Когда вы делаете это в первый раз, вам придется ответить на несколько вопросов:

:/tmp# mount -t ecryptfs /home/falko /home/falko
Select key type to use for newly created files:
1) tspi
2) passphrase
Selection: <-- 2
Passphrase: <-- Enter a secure password
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=bd28c38da9fc938b
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
Would you like to append sig [bd28c38da9fc938b] 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
:/home/administrator#

Взгляните на вывод

mount

и вы должны увидеть, что /home/falko/ теперь зашифрован:

Давайте восстановим нашу резервную копию в теперь зашифрованный каталог /home/falko/ и впоследствии удалим резервную копию:

cp -pfr /tmp/falko/ /home/
rm -fr /tmp/falko/

В целях тестирования давайте скопируем другой файл, например. /etc/hosts, в /home/falko/, чтобы проверить, действительно ли он зашифрован:

cp /etc/hosts /home/falko

Пока /home/falko/ смонтирован с файловой системой типа ecryptfs, должна быть возможность прочитать содержимое /home/falko/hosts:

cat /home/falko/hosts

Теперь размонтируйте /home/falko/...

umount /home/falko

... и попробуйте снова прочитать /home/falko/hosts, и вы должны получить некоторые загадочные вещи:

cat /home/falko/hosts

4 Как автоматически монтировать зашифрованный раздел во время загрузки

Конечно, мы не хотим каждый раз монтировать /home/falko/ вручную — было бы лучше, если бы его можно было монтировать автоматически во время загрузки. Для этого нам нужен файл фразы-пароля, и из соображений безопасности я хочу, чтобы этот файл фразы-пароля находился на USB-накопителе.

Вставьте USB-ключ и запустите

fdisk -l

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

:~#

В моем случае имя устройства — /dev/sdb1, и оно использует файловую систему FAT32.

Смонтируем USB-ключ в /mnt/usb:

mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb

Взгляните на вывод

mount

... и вы должны увидеть, что он был смонтирован с файловой системой типа vfat (FAT32) - эта информация понадобится нам позже для нашего файла /etc/fstab:

:~#

Теперь взглянем на содержимое /root/.ecryptfs/sig-cache.txt:

cat /root/.ecryptfs/sig-cache.txt
bd28c38da9fc938b

Нам нужна эта подпись для файла /root/.ecryptfsrc, который мы создаем следующим образом:

nano /root/.ecryptfsrc

Убедитесь, что вы используете подпись из файла /root/.ecryptfs/sig-cache.txt в строке ecryptfs_sig:

key=passphrase:passphrase_passwd_file=/mnt/usb/passwd_file.txt
ecryptfs_sig=bd28c38da9fc938b
ecryptfs_cipher=aes
ecryptfs_key_bytes=16
ecryptfs_passthrough=n
ecryptfs_enable_filename_crypto=n

Теперь мы создаем файл с парольной фразой на нашем USB-ключе:

nano /mnt/usb/passwd_file.txt
passphrase_passwd=some_passphrase

Убедитесь, что вы используете правильную фразу-пароль, то есть фразу-пароль, которую вы использовали бы, если бы монтировали каталог вручную.

Затем откройте /etc/fstab...

nano /etc/fstab

... и добавьте следующие две строки (убедитесь, что вы используете правильный тип файловой системы для вашего USB-ключа - vfat в моем случае):

[...]
/dev/sdb1       /mnt/usb        vfat    ro      0 0
/home/falko /home/falko ecryptfs defaults 0 0

(Важно, чтобы строка для USB-ключа стояла перед строкой для зашифрованного раздела, потому что USB-ключ необходимо смонтировать до того, как можно будет смонтировать зашифрованный раздел!)

Затем перезагрузите систему:

reboot

Если все пойдет хорошо, ваш зашифрованный раздел должен быть автоматически смонтирован после перезагрузки. Однако возможно, что ваша система не может смонтировать ваш USB-ключ во время загрузки, что означает, что ваш зашифрованный раздел также не может быть смонтирован. Если это произойдет, отредактируйте /etc/rc.local (этот скрипт выполняется в конце процесса загрузки)...

nano /etc/rc.local

... и добавьте строку /bin/mount -a перед строкой выхода 0:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/bin/mount -a
exit 0

Это (повторно) смонтирует все разделы (включая ваш USB-ключ и зашифрованный раздел) в конце процесса загрузки.

5 ссылок

  • eCryptfs: https://launchpad.net/ecryptfs.
  • Debian: http://www.debian.org/