Шифрование каталога с помощью eCryptfs на Debian Jessie
eCryptfs — стековая шифрующая файловая система POSIX-совместимого уровня, подходящая для шифрования отдельных каталогов независимо от базовой файловой системы. В этой статье показано, как установить ecryptfs-utils, шифровать каталог /home/falko, настроить автоматический монтирование с хранением файла-пароля на USB и практические рекомендации по безопасности и восстановлению.
Основные понятия
- eCryptfs — стековый криптографический слой, который поверх существующей файловой системы предоставляет шифрование отдельных файлов и (опционально) их имён. Простая строка: шифрование файлового уровня, не раздела.
1 Предварительное замечание
В этом руководстве я шифрую свой домашний каталог /home/falko/, который расположен на разделе / (то есть /home/falko/ — обычный каталог, а не отдельный раздел).
2 Установка eCryptfs
Установите утилиты eCryptfs:
apt-get -y install ecryptfs-utils3 Шифрование каталога
Важно: если в каталоге уже есть данные, сделайте резервную копию до монтирования с ecryptfs — после монтирования исходные (незашифрованные) файлы станут недоступны без ключа.
Сохраните текущие данные временно:
cp -pfr /home/falko/ /tmp/Смонтируйте каталог как ecryptfs (это создаст зашифрованный слой поверх /home/falko):
mount -t ecryptfs /home/falko /home/falkoПри первом монтировании вам предложат несколько вопросов и опций. Пример интерактивного диалога:
root@server1:/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
root@server1:/home/administrator#Проверьте вывод mount и убедитесь, что /home/falko/ теперь смонтирован как ecryptfs.

Восстановите резервную копию в зашифрованный каталог и удалите временную копию:
cp -pfr /tmp/falko/ /home/
rm -fr /tmp/falko/Для проверки скопируйте, например, /etc/hosts в /home/falko и проверьте содержимое пока точка монтирования активна:
cp /etc/hosts /home/falko
cat /home/falko/hosts
Теперь отмонтируйте каталог:
umount /home/falkoИ попробуйте снова прочитать файл — содержимое должно быть нечитабельным (зашифрованным):
cat /home/falko/hosts
4 Автоматическое монтирование зашифрованного каталога при загрузке
Чтобы каталог монтировался автоматически, нужен файл с паролем. Для повышения безопасности поместим его на USB-ключ.
- Подключите USB-ключ и определите устройство:
fdisk -lВ примере устройство — /dev/sdb1 и файловая система FAT32 (vfat).
- Смонтируйте USB в /mnt/usb:
mkdir /mnt/usb
mount /dev/sdb1 /mnt/usbВы увидите в выводе mount файловую систему vfat для /dev/sdb1.
- Посмотрите содержимое /root/.ecryptfs/sig-cache.txt — там должна быть сигнатура, например:
cat /root/.ecryptfs/sig-cache.txtbd28c38da9fc938b- Создайте файл /root/.ecryptfsrc и укажите sig и параметры шифрования (используйте реальную сигнатуру из sig-cache.txt):
nano /root/.ecryptfsrcСодержимое файла должно выглядеть примерно так:
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.txtpassphrase_passwd=some_passphrase- Добавьте строки в /etc/fstab. Важно: строка для USB должна идти перед строкой для зашифрованного каталога, чтобы USB был смонтирован на этапе загрузки до попытки монтирования ecryptfs:
nano /etc/fstabДобавьте:
[...]
/dev/sdb1 /mnt/usb vfat ro 0 0
/home/falko /home/falko ecryptfs defaults 0 0- Перезагрузите систему:
rebootЕсли при загрузке USB не успевает смонтироваться, можно форсировать монтирование всех файловых систем в конце загрузки, добавив в /etc/rc.local команду /bin/mount -a перед exit 0:
nano /etc/rc.localПример содержимого:
#!/bin/sh -e
/bin/mount -a
exit 0Это обеспечит повторную попытку монтирования всех записей из fstab после инициализации сервисов.
Когда это не работает
- USB не доступен на ранних этапах загрузки (BIOS/UEFI или initramfs) — добавьте задержку монтирования или используйте системный сервис, который выполняет /bin/mount -a после инициализации устройств.
- Неправильный пароль или сигнатура — проверьте /root/.ecryptfs/sig-cache.txt и содержимое passwd_file.txt.
- Файловая система USB не поддерживает POSIX-атрибуты (vfat) — это нормально для хранения файла-пароля, но учтите ограничения прав доступа — ставьте ro и физически храните USB в защищённом месте.
Альтернативные подходы
- LUKS/dm-crypt: шифрование на уровне блока, лучше для целых разделов и swap. Использовать, если нужно шифровать весь домашний раздел или системный раздел.
- EncFS: пользовательский FUSE-слой, но имеет известные проблемы с безопасностью в некоторых сценариях.
- eCryptfs (как здесь): удобен для шифрования отдельных каталогов и интеграции с существующей ФС.
Выбор: если нужен шифрованный раздел под ключ с поддержкой swap — LUKS. Если требуется зашифровать просто каталог при минимальных изменениях — eCryptfs.
Пошаговый SOP для администратора (коротко)
- Сделать резервную копию каталога.
- Установить ecryptfs-utils.
- Смонтировать каталог как ecryptfs и задать параметры шифрования.
- Восстановить файлы в зашифрованный каталог.
- Создать файл-пароль на защищённом USB и настроить /root/.ecryptfsrc.
- Добавить записи в /etc/fstab (USB выше ecryptfs).
- Перезагрузить и проверить автоматическое монтирование.
- Тестировать отмонтирование/монтирование вручную и проверять логи при ошибках.
Контрольные списки по ролям
Администратор:
- Проверить целостность резервной копии.
- Установить пакеты и настроить /etc/fstab.
- Обеспечить безопасное хранение USB-ключа.
Пользователь:
- Создать надёжный пароль для passphrase.
- Проверить доступность данных после настройки.
Офис безопасности:
- Провести оценку физической безопасности USB-ключа.
- Проверить политику ротации паролей и резервного копирования ключей.
Рекомендации по безопасности
- Используйте надёжную passphrase длиной не менее 12 символов с разными классами символов.
- Храните USB-ключ в безопасном месте и разграничьте доступ по ролям.
- Регулярно делайте резервные копии ключевого файла и зашифрованных данных — храните резервную копию ключа отдельно от устройства с данными.
- Периодически проверяйте целостность /root/.ecryptfs/sig-cache.txt и /root/.ecryptfsrc.
Краткая методология восстановления
- Если USB потерян, но у вас есть резервная копия файлов в расшифрованном виде — восстановите её и создайте новый пароль/ключ.
- Если утерян только доступ к sig-подписи, попробуйте найти sig в /root/.ecryptfs/sig-cache.txt или в логах.
- При отсутствии пароля и подписей восстановление данных невозможно — это следствие криптографической стойкости.
Критерии приёмки
- После перезагрузки каталог /home/falko автоматически смонтирован как ecryptfs.
- Файлы при активном монтировании доступны в читаемом виде, при отмонтировании — зашифрованы.
- USB-ключ монтируется до попытки монтирования ecryptfs (строка в fstab расположена выше).
Полезные советы и подводные камни
- Не используйте USB-ключ с общедоступным доступом; при утечке ключа и пароля злоумышленник сможет монтировать каталог.
- Файловые имена: если включить шифрование имён файлов, это может затруднить некоторые инструменты резервного копирования; учитывайте совместимость.
- Проверяйте логи (dmesg, /var/log/syslog) при проблемах с монтированием.
Пример блок-схемы принятия решения
flowchart TD
A[Есть требование зашифровать каталог?] -->|Да| B{Нужно шифрование раздела или каталога?}
B -->|Раздел| C[LUKS/dm-crypt]
B -->|Каталог| D[eCryptfs]
C --> E[Реализовать LUKS]
D --> F[Реализовать eCryptfs по инструкции]
A -->|Нет| G[Оставить без изменений]5 Ссылки
- eCryptfs: https://launchpad.net/ecryptfs
- Debian: http://www.debian.org/
Важное: eCryptfs полезен для гибкого шифрования каталогов, но требует надёжного управления ключами и процедур восстановления. Перед применением в производственной среде протестируйте процедуру восстановления и доступность ключей.
Краткое резюме
- eCryptfs позволяет шифровать каталоги на уровне файлов независимо от базовой ФС.
- Для автоматического монтирования рекомендуется хранить файл-пароль на защищённом USB и правильно настроить /etc/fstab.
- Обязательно делайте резервные копии и продумайте политику хранения ключей и их ротации.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента