Гид по технологиям

Шифрование каталога с помощью eCryptfs на Debian Jessie

• 5 min read • Linux • Обновлено 25 Nov 2025
Шифрование каталога eCryptfs на Debian Jessie
Шифрование каталога eCryptfs на Debian Jessie

eCryptfs — стековая шифрующая файловая система POSIX-совместимого уровня, подходящая для шифрования отдельных каталогов независимо от базовой файловой системы. В этой статье показано, как установить ecryptfs-utils, шифровать каталог /home/falko, настроить автоматический монтирование с хранением файла-пароля на USB и практические рекомендации по безопасности и восстановлению.

Основные понятия

  • eCryptfs — стековый криптографический слой, который поверх существующей файловой системы предоставляет шифрование отдельных файлов и (опционально) их имён. Простая строка: шифрование файлового уровня, не раздела.

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

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

2 Установка eCryptfs

Установите утилиты eCryptfs:

apt-get -y install ecryptfs-utils

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

Важно: если в каталоге уже есть данные, сделайте резервную копию до монтирования с 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.

Вывод 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

Содержимое файла hosts в расшифрованном виде

Теперь отмонтируйте каталог:

umount /home/falko

И попробуйте снова прочитать файл — содержимое должно быть нечитабельным (зашифрованным):

cat /home/falko/hosts

Содержимое файла hosts в зашифрованном виде (нечитаемо)

4 Автоматическое монтирование зашифрованного каталога при загрузке

Чтобы каталог монтировался автоматически, нужен файл с паролем. Для повышения безопасности поместим его на USB-ключ.

  1. Подключите USB-ключ и определите устройство:
fdisk -l

В примере устройство — /dev/sdb1 и файловая система FAT32 (vfat).

  1. Смонтируйте USB в /mnt/usb:
mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb

Вы увидите в выводе mount файловую систему vfat для /dev/sdb1.

  1. Посмотрите содержимое /root/.ecryptfs/sig-cache.txt — там должна быть сигнатура, например:
cat /root/.ecryptfs/sig-cache.txt
bd28c38da9fc938b
  1. Создайте файл /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
  1. На USB создайте файл с паролем (используйте тот же пароль, что вводили при монтировании вручную):
nano /mnt/usb/passwd_file.txt
passphrase_passwd=some_passphrase
  1. Добавьте строки в /etc/fstab. Важно: строка для USB должна идти перед строкой для зашифрованного каталога, чтобы USB был смонтирован на этапе загрузки до попытки монтирования ecryptfs:
nano /etc/fstab

Добавьте:

[...]
/dev/sdb1       /mnt/usb        vfat    ro      0 0
/home/falko /home/falko ecryptfs defaults 0 0
  1. Перезагрузите систему:
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 для администратора (коротко)

  1. Сделать резервную копию каталога.
  2. Установить ecryptfs-utils.
  3. Смонтировать каталог как ecryptfs и задать параметры шифрования.
  4. Восстановить файлы в зашифрованный каталог.
  5. Создать файл-пароль на защищённом USB и настроить /root/.ecryptfsrc.
  6. Добавить записи в /etc/fstab (USB выше ecryptfs).
  7. Перезагрузить и проверить автоматическое монтирование.
  8. Тестировать отмонтирование/монтирование вручную и проверять логи при ошибках.

Контрольные списки по ролям

Администратор:

  • Проверить целостность резервной копии.
  • Установить пакеты и настроить /etc/fstab.
  • Обеспечить безопасное хранение USB-ключа.

Пользователь:

  • Создать надёжный пароль для passphrase.
  • Проверить доступность данных после настройки.

Офис безопасности:

  • Провести оценку физической безопасности USB-ключа.
  • Проверить политику ротации паролей и резервного копирования ключей.

Рекомендации по безопасности

  • Используйте надёжную passphrase длиной не менее 12 символов с разными классами символов.
  • Храните USB-ключ в безопасном месте и разграничьте доступ по ролям.
  • Регулярно делайте резервные копии ключевого файла и зашифрованных данных — храните резервную копию ключа отдельно от устройства с данными.
  • Периодически проверяйте целостность /root/.ecryptfs/sig-cache.txt и /root/.ecryptfsrc.

Краткая методология восстановления

  1. Если USB потерян, но у вас есть резервная копия файлов в расшифрованном виде — восстановите её и создайте новый пароль/ключ.
  2. Если утерян только доступ к sig-подписи, попробуйте найти sig в /root/.ecryptfs/sig-cache.txt или в логах.
  3. При отсутствии пароля и подписей восстановление данных невозможно — это следствие криптографической стойкости.

Критерии приёмки

  • После перезагрузки каталог /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 полезен для гибкого шифрования каталогов, но требует надёжного управления ключами и процедур восстановления. Перед применением в производственной среде протестируйте процедуру восстановления и доступность ключей.

Краткое резюме

  • eCryptfs позволяет шифровать каталоги на уровне файлов независимо от базовой ФС.
  • Для автоматического монтирования рекомендуется хранить файл-пароль на защищённом USB и правильно настроить /etc/fstab.
  • Обязательно делайте резервные копии и продумайте политику хранения ключей и их ротации.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро