Стоит ли шифровать домашний каталог?
Шифрование домашнего каталога обеспечивает надежную защиту данных, хранящихся на жёстком диске или ином носителе. Если вы просто установите сложный пароль на вход в систему, потенциальные злоумышленники всегда смогут загрузиться с внешнего LiveCD/LiveUSB и получить доступ к вашей информации. Даже пароль на BIOS не обеспечивает защиты информации при получении физического доступа к носителю. Шифрование особенно актуально на переносных ПК, на компьютерах со множественным доступом, а также в любых других условиях, в которых вы беспокоитесь за конфиденциальность своих файлов. Шифрование домашнего каталога будет вам предложено при установке.
Производительность снижается незначительно 1) , по крайней мере пока не пользуется SWAP 2) .
SWAP тоже шифруется, если в инсталляторе выбрать шифрование домашнего каталога, и при этом перестает работать спящий режим. Как его починить — описано, например, здесь
Не шифровать SWAP при шифрованном домашнем каталоге — потенциально опасно, так как там могут оказаться данные из шифрованных файлов в открытом виде — весь смысл шифрования теряется.
Если вы решили зашифровать свой домашний каталог во время установки, то обязательно выполните инструкции, которые система выдаст при первой загрузке — получите и сохраните passphrase в безопасном месте (вне шифрованного домашнего каталога и лучше вне самой машины). В последствии вы всегда можете узнать его командой ecryptfs-unwrap-passphrase, но только из своей системы. Чтобы восстановить passphrase с LiveCD/LiveUSB, введите encryptfs-unwrap-passphrase /media/usbdisk/home/.ecryptfs/your_username/.ecryptfs/wrapped-passphrase
Passphrase потребуется вам для доступа к данным в случае краха системы или при перестановке системы (хотя в последнем случае можно предварительно перенести данные с шифрованного раздела на резервное устройство, а после установки — вернуть их в зашифрованный домашний каталог.
Альтернативы
Альтернатива всегда есть, и в данном случае можно воспользоваться способом, изложенном в этой статье. Сохранится спящий режим, хотя вопросы производительности останутся (но, как уже было сказано, это актуально преимущественно для слабых машин).
В версии *ubuntu 12.10, при установке есть возможность выбрать вариант шифрования всего диска. Этот вариант наиболее подходит для сохранения персональных данных на переносных устройствах (у которых, как правило, только один пользователь).
OpenSource в заметках
Многие обращали внимание на предложение Ubuntu во время установки зашифровать домашний каталог пользователя. Я до недавних пор всегда его игнорировал из соображений «хрен знает, что они там выдумали, разбираться неохота», но однажды любопытство пересилило и нашлось свободное для познания сей тайны время. Всех, кому интересно, приглашаю под кат.
Лучший способ научиться чему-то — это сделать самостоятельно. В качестве подопытного кролика было решено взять Debian 6.0.3, оказавшуюся под рукой и не шифровавшей домашние каталоги пользователей. На ней весь процесс и производился. Если у вас в качестве ОС используется нечто совсем далёкое, гарантий, что процесс настройки будет таким же — никаких.
Как это работает
Для организации защиты ваших персональных данных в Ubuntu разработчики предпочли eCryptfs — файловую систему, работающую «поверх» любой другой обычной ФС и прозрачно шифрующую/дешифрующую содержимое файлов. Криптографические метаданные eCryptfs хранит в заголовках каждого файла, таким образом вы можете без проблем переносить любой файл между различными системами. Всё это счастье реализовано на уровне ядра Linux, обеспечивая хороший уровень производительности по сравнению с FUSE-шифрованием (например, EncFS).
Установка
Всё, что нужно для работы eCryptfs, во всех современных Linux-дистрибутивах имеются по умолчанию «из коробки». Если же ядро Linux вы собирали самостоятельно, то удостоверьтесь, что в вашей сборке присутствует необходимый модуль:
Далее, для работы с eCryptfs нам понадобятся userspace-инструменты, которые в Debain/Ubuntu легко устанавливаются из пакета:
Монтирование eCryptfs
Чтобы лучше понять и увидеть на практике, как работает eCryptfs, смонтируем какой-нибудь каталог и посмотрим, что происходит в реальности. Для начала создадим пустой каталог, который будем шифровать:
Теперь смонтируем созданный каталог используя eCryptfs:
Обратите внимание, что исходным и целевым каталогом команде mount указан один и тот же каталог. Это несколько «нетрадиционно» для операции монтирования, однако вполне допустимо и удобно. Если вас это запутывает, вы можете использовать разные точки с более осмысленными именами, вроде:
После ввода команды вам необходимо ввести пароль для ключа шифрования:
Введите пароль, не забывая о том, что его утеря будет означать невозможность получения данных! После ввода пароля вам будет предложено выбрать алгоритм шифрования, с по-умолчанию выбранным AES:
Далее вам необходимо выбрать размер ключа:
Значением следующей опции вы разрешаете или запрещаете доступ к файлам, которые не были зашифрованы при помощи eCrypfs:
Шифровать или нет имена файлов:
Далее вы увидите сводку выбранных опций (их можно использовать в опциях монтирования в будущем):
Если вы впервые монтируете и/или сигнатура этого монтирования не сохранена в кэше, то вас вежливо предупредят о том, что вы могли ввести пароль неверно:
Если всё ок, можно подтверждать монтирование:
Чтобы избежать в будущем появления вышеуказанного предупреждения, вы можете добавить сигнатуру монтирования eCryptfs в файл:
Если всё прошло успешно, вы получите соответствующее сообщение:
Теперь скопируем что-нибудь в смонтированный каталог:
Посмотрим его содержимое и размер:
Теперь отмонтируем eCryptfs и посмотри, как изменился наш файл:
Заглянув же вовнутрь файла, вы увидите там лишь двоичные данные.
pam_ecryptfs
Ещё одной довольно интересной и полезной штукой, идущей в поставке eCryptfs, является PAM-модуль pam_ecryptfs. Вызывается этот модуль во время логина пользователя и работает следующим образом. Если в домашнем каталоге обнаруживается файл
/.ecryptfs/wrapped-passphrase, а также файл
/.ecryptfs/auto-mount то модуль pam_ecryptfs расшифровывает содержимое файла
/.ecryptfs/wrapped-passphrase, используя пароль пользователя. Далее расшифрованное содержимое используется в качестве пароля при монтировании каталога
/Private. Таким образом, пользователю не нужно дополнительно монтировать каталог с личными зашифрованными данными, всё происходит автоматически. Для того, чтобы модуль работал, он должен быть соответствующим образом объявлен в /etc/pam.d/common-auth:
и в /etc/pam.d/common-session:
Зашифрованный персональный каталог Private
Чтобы пользователям было сухо и комфортно при самостоятельном создании Private-каталогов, разработчики включили в поставку eCryptfs специальный shell-скрипт ecryptfs-setup-private, который делает всю работу по подготовке персонального шифрованного хранилища:
/Private;
шифрует пароль монтирования и сохраняет его в
/.ecryptfs/wrapped-passphrase;
Работает сценарий очень просто и при запуске в режиме «по умолчанию» не требует никаких дополнительных параметров:
На следующий запрос введите ваш пароль, который используете при аутентификации в системе:
После вам будет предложено ввести пароль, который будет использоваться при монтировании. Если не заполнять это поле, то пароль будет сгенерирован автоматически:
Очередное напоминание для забывчивых:
создание файлов, каталогов и тестирование:
И, наконец, сообщение о том, что теперь достаточно перевойти в систему, чтобы начать пользоваться благами цивилизации:
Заново авторизуйтесь с системе и посмотрите, смонтировался ли каталог
Всё отлично, самое время проверить работоспособность нашего нового хранилища:
Теперь, когда вы выйдите из системы, модуль pam_ecryptfs автоматически размонтирует точку
/Private, таким образом оставив ваши данные в зашифрованном каталоге
/.Private. Если вы не хотите, чтобы каталог
/Private монтировался и/или размонтировался автоматически, удалите соответственно файл
Также имейте ввиду, что сценарий ecryptfs-setup-private принимает ряд опций, при помощи которых вы можете управляет его поведением:
Полное шифрование домашнего каталога
Идея хранения критически-важных данных в отдельном каталоге очень даже недурна собой, но не лишена очевидного недостатка. А именно: вы обязаны постоянно выбирать, что нужно шифровать, а что не нужно. Ну, или хранить вообще всё в Private-каталоге, что, мягко-говоря, не очень удобно. Вместо того, чтобы выделять отдельный каталог, не лучше ли зашифровать вообще весь домашний каталог? Именно это и предлагает вам Ubuntu при установке, и именно eCryptfs она для этого использует!
Если вы при установке выбрали опцию, показанную на скриншоте в начале статьи, то вы уже являетесь счастливым защищённым от врага пользователем. Если же это не так, но вам очень хочется спрятать от чужих глаз свои данные в случае чего и вы уже поняли, что eCryptfs — это именно то, что вам нужно для этого, то нет проблем!
Основная загвоздка при полном шифровании домашнего каталога состоит в том, что необходимо «вынести» каталог с зашифрованными данными за пределы точки монтирования. Разработчики Ubuntu решили проблему очень просто:
То есть, в домашнем каталоге находится лишь символическая ссылка, следуя которой, eCryptfs монтирует нужный каталог. При этом, точка монтирования переопределена в файле
/.ecryptfs/Private.mnt и указывает на домашний каталог пользователя, т. е., в данном случае, на /home/ashep. Гениально и просто!
Чтобы избавить вас от необходимости перемещать файлы и настраивать вручную все пути и символические ссылки, разработчики предлагают shell-сценарий ecryptfs-migrate-home, который проделает всю «грязную» работу за вас. Также разработчики предупреждают о том, что этот сценарий может сделать ваши данные недоступными, если вдруг что-то пойдёт не так, поэтому обязательно сделайте резервную копию перед тем, как будете запускать скрипт! Также перед запуском убедитесь, что в системе установлены утилиты rsync и lsof, а также в том, что на разделе, где находится /home, имеется достаточно свободного места.
Сценарий необходимо запускать от root, передав в качестве параметра логин пользователя, который «мигрирует». Пользователь не должен находится в системе, а также от его имени не должно быть запущено ни одного процесса.
Если всё пройдёт успешно, то, как требует сценарий, мигрировавший пользователь должен войти в систему до перезагрузки. Также обратите внимание, что скрипт оставляет копию незашифрованных данных в отдельном каталоге (в приведённом примере это /home/ashep.81yFQbNJ), который необходимо удалить после того, как пользователь определит, что всё прошло успешно.
Теперь, когда мигрировавший пользователь войдёт в систему, его домашний каталог будет смонтирован следующим образом:
/.Private является символической ссылкой на каталог за пределами домашней папки:
eCryptfs и шифрование домашнего каталога в Linux : 4 комментария
Признаться, классная, объёмная и полезная статья. Я обычно использую truecrypt или же шифрую нужные данные с помощью gpg, но это все вручную. Любой, кто поменяет пароль от рута на моей учётке, без проблем откроет и браузер, где сохранены пароли на некоторые форумы, к примеру. Тут, как я понимаю, будет сложнее добыть информацию.
Aleksdem, если вы с TrueCrypt будете использовать пароли вместо ключей или же хранить ключи так, чтобы до них нельзя было добраться, получив доступ к машине, то и получить доступ к данным будет практически нереально.
А eCryptfs понравилась мне лично из-за того, что умеет делать модуль pam_ecryptfs. В остальном — всё те же алгоритмы и уровень защиты.
Привет всем, при установке ubuntu server также надо шывровать домашний каталог?
p.s. Наперед спасибо за ответ
проверил на debian 6
зашифровал дом. каталог пользователя test
и вуаля — все файлы доступны
подозреваю, что это так же будет работать под любым судоером, следовательно имеет смысл только в системе с одним судоером и то надо тестить, не знаю как сбрасывается пароль в системе без рута