Шифрование домашних директорий

Обновлено 12 марта 2019

Для организации защиты персональных данных вы можете зашифровать директории пользвоателя при помощи eCryptfs. eCryptfs - это файловая система, работающая "поверх" любой другой обычной ФС и прозрачно шифрующая/дешифрующая содержимое файлов. Криптографические метаданные eCryptfs хранит в заголовках каждого файла. Таким образом, можно без проблем переносить любой файл между различными системами. Всё это реализовано на уровне ядра Linux, обеспечивая хороший уровень производительности по сравнению с FUSE-шифрованием.

Принцип работы

Домашняя папка пользователя с профилем, настроенным на шифрование, содержит только символические ссылки на директории с шифрованными данными. Шифрованные данные пользователей хранятся в каталоге /home/.ecryptfs и разделены по пользователям, при этом в папке .Private хранятся данные, в .ecryptfs - информация по подключению шифрования.

При входе в сеанс /home/.ecryptfs/<логин>/.Private монтируется в домашнюю директорию. Для этого используется зашифрованный пользовательским паролем ключ /home/.ecryptfs/<логин>/.ecryptfs/wrapped-passphrase. Дальше происходят синхронизация профиля пользователя и настройка его при необходимости. При выходе из сеанса домашняя директория отключается от .Private.

Данные доменных пользователей также могут быть настроены на шифрование, при этом нужно отметить, что в шифрованном виде эти данные будут находиться на локальной машине, на сервере они находятся в незашифрованном виде. Благодаря этому обеспечивается безопасность данных в пользовательском профиле после выхода из сеанса.

Настройка профиля на шифрование

Для того, чтобы активировать данную функцию, систему нужно установить с включенным параметром "Шифровать пользовательские профили" (Crypt user profiles), либо включить переменную cl_home_crypt_set в уже установленной системе:

cl-core-variables --set main.cl_home_crypt_set=on

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

ecryptfs-migrate-home -u <логин>

Для доменных пользователей будет достаточно удалить локальный профиль, когда он не в сеансе, и после этого войти в сеанс.

Стоит отметить, что на настроенный пользовательский профиль значение переменной cl_home_crypt_set не влияет, то есть если профиль был настроен на шифрование, а система была установлена без шифрования, профиль будет продолжать работать с шифрованием, и наоборот.

Как восстановить данные

Если в /home остался только каталог .ecryptfs, содержащий шифрованные профили, то достаточно создать таких же пользователей с теми же паролями, и при входе в сеанс домашний каталог пользователя будет использоваться существующий шифрованный профиль.