Как шифровать каталоги/разделы с помощью eCryptfs в Debian 8 (Джесси)
Это руководство существует для этих версий ОС
- Debian 8 (Джесси)
- Debian 6 (Squeeze)
На этой странице
- 1 Предварительное примечание
- 2 Установка eCryptfs
- 3 Шифрование каталога
- 4 Как автоматически монтировать зашифрованный раздел во время загрузки
- 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/