Шифрование домашней папки на Linux с помощью fscrypt
Не так давно, по случаю, мне достался ноутбук. Скончался от болезни человек, с которым я был в хороших отношениях. Спустя какое то время родственники приятеля начали распродавать и раздавать имущество умершего. Мне отдали ноутбук. Ноут Acer, не особо новый и не дорогой, особой ценности не представляет, отдали бесплатно. Но попросили по возможности достать оттуда данные — старые фото и видео на память. На ноутбуке установлена десятка и учетка с паролем, которого никто не знал. Делаю загрузочную флешку, цепляю съемный диск. Готово. В процессе копирования посмотрел, что еще есть на диске. Текстовые файлы с паролями, профиль браузера, какая то рабочая документация, личные заметки и т.д. Ненужно и не интересно. Фото и видео отдал родственникам. Диск отформатировал. Ноут в кладовку.
Но в процессе ковыряния ноутбука, у меня появилась мысль. А хотелось бы мне, что бы в подобной ситуации кто то, так же лазил в моем ноутбуке. Нет, мне бы очень этого не хотелось. Несмотря на то, что там нет чего-то компрометирующего и критически важного для меня и моих близких. Все равно нет. Не приятно. А с учетом того, что мой ноутбук всегда и везде со мной. То я могу его где то забыть, потерять да и банальную кражу тоже никто не отменял. И если за свой телефон и планшет по этому поводу я не переживал, все таки там биометрия и шифрование, то ноутбук давал мне повод для беспокойства. Шифрования у меня там не было.
А так как последние лет десять я сидел под ubuntu то меня заинтересовало, а как там дела с шифрованием обстоят в linux.
Сразу оговорюсь. В первую очередь меня интересовала защита от случайных людей — сотрудников сервисных центров и мастерских, мамкиных хакеров и различных домашних аникейщиков. У меня нет задачи противостоять сотрудникам спецслужб, международным криминальным организациям и специалистам по криптографии. До этого, два раза, у меня был лайтовый опыт общения со следователями по уголовным делам и по этому, на свой счет, я иллюзий не испытываю.
У меня установлена ubuntu 22.04 и все манипуляции я проводил на ней. Но я думаю, что эта инструкция подойдет и к любым другим дистрибутивам. Каких то специфических, дистрибутив зависимых вещей там нет.
Итак, начал разбираться. Основной способ шифрования который сейчас предлагает при установке ubuntu и другие, это шифрование всего диска с помощью LUKS + LVM. Мне он не подошел. Во первых я не хотел переустанавливать ОС и во вторых я не хотел целиком шифровать весь диск. Для меня это слишком избыточный метод, я хотел шифровать только свою домашнюю папку. Хотя я знаю, что сейчас это наиболее правильный метод для защиты данных.
Далее по популярности шло использование eCryptFS. Этот способ до 2018 года тоже предлагался в ubuntu при установке. Затем Canonical по различным причинам отказался от него. На данный момент проект то ли поддерживается, то ли не поддерживается. До конца я так и не понял.
Поэтому я решил использовать fscrypt. Нативный метод шифрования для ext4. Разрабатывается и поддерживается google, используется в chromeOS и Android для шифрования. Ну, что еще надо.
Поверхностное гугление выдало пару инструкций. Но судя по комментариям после одной из них компьютер уходил в цикличную перезагрузку, ну а вторая просто не работала. Пришлось идти на гитхаб проекта и читать документацию.
Итак, если вы хотите зашифровать свою домашнюю папку с помощью fscrypt на уже установленной операционке с файловой системой ext4:
tune2fs -O encrypt /dev/ваш диск
apt install fscrypt libpam-fscrypt
- Создаем нового пользователя (например user1) и включаем его в группу sudo. Так как мы далее будем проводить манипуляции с нашей домашней папкой, то делать это лучше всего из под другого пользователя. Завершаем сеанс нашего основного пользователя (например user0) и заходим нашим новым пользователем (user1). Дальше все действия выполняем под ним.
- Настраиваем fscrypt
user1@laptop:# sudo fscrypt setup
будет создан конфигурационный файл
Created global config file at "/etc/fscrypt.conf".
Metadata directories created at "/.fscrypt"
на запрос создания файла метаданных в корне ./ нажимаем Y
5. Создаем новую домашнюю папку user0-new
user1@laptop:# sudo mkdir /home/user0-new
user1@laptop:# sudo fscrypt encrypt /home/user0-new --user=user0(ваш основной пользователь)
- В появившемся диалоге выбираем 1. Т.е для дешифровки папки будет использоваться ваш пароль для логина в системе. И вводим пароль вашего основного пользователя(user0)
The following protector sources are available: 1 - Your login passphrase (pam_passphrase) 2 - A custom passphrase (custom_passphrase) 3 - A raw 256-bit key (raw_key) Enter the source number for the new protector [2 - custom_passphrase]: 1 IMPORTANT: Before continuing, ensure you have properly set up your system for login protectors. See https://github.com/google/fscrypt#setting-up-for-login-protectors Enter login passphrase for user0: "user0-new" is now encrypted, unlocked, and ready for use.
user1@laptop:#sudo cp -a -T /home/user0 /home/user0-new
user1@laptop:# sudo mv user0 user0.backup
user1@laptop:# sudo mv user0-new user0
Все готово. Перезагружаемся и заходим вашим основным пользователем (user0). Если все нормально, то удаляем нового пользователя и папку с бекапом (user0.backup).
Шифрование домашней папки в Ubuntu
Ubuntu предлагает зашифровать домашнюю папку во время установки. Но если вы решили сделать это позже, вам не нужно полностью переустанавливать Ubuntu. Настроить шифрование очень просто, понадобится всего лишь выполнить несколько консольных команд.
Ubuntu использует для шифрования eCryptfs. Когда вы входите в систему, ваша домашняя директория автоматически расшифровывается с помощью пароля пользователя. Хотя и шифрование занимает некоторые вычислительные ресурсы, зато это сохранит ваши данные конфиденциальными. Особенно это актуально для ноутбуков, которые могут быть украдены. Как вы уже поняли в этой инструкции мы рассмотрим как настроить шифрование домашней папки в Ubuntu после установки системы.
Подготовка
Перед тем как начать шифровать домашнюю папку Ubuntu, сделайте резервную копию домашней папки и важных файлов. При шифровании резервная копия будет создан автоматически, но лучше иметь дополнительную копию на всякий случай. Сначала установите утилиты для шифрования:
sudo apt install ecryptfs-utils cryptsetup
Вы не сможете зашифровать домашний каталог пока вы в системе. А поэтому нужно будет создать еще одного пользователя с полномочиями администратора в утилите Параметры. Чтобы ее открыть кликните на своем имени в правом углу панели и выберите пункт Настройки затем Пользователи:
Создайте нового пользователя и сделайте его администратором и установите пароль для пользователя. Аккаунт будет отключен пока вы не укажите пароль:
После создания пользователя выйдите из системы. Надо выбрать именно Завершить сеанс, смена пользователя не подойдёт:
Шифрование домашней папки
Теперь вы готовы зашифровать домашний каталог Ubuntu. Выберите только что созданного пользователя и войдите в систему:
Выполните следующую команду для шифрования своей домашней папки, заменив sergiy на имя своего основного пользователя:
sudo ecryptfs-migrate-home -u sergiy
Вам нужно будет ввести пароль пользователя, а затем домашний каталог будет зашифрован. Но есть несколько важных замечаний:
- Вы должны войти под основной учетной записью сейчас, не перезагружаясь;
- Перед шифрованием была создана резервная копия домашнего каталога, вы можете восстановить все данные если понадобится;
- Нужно создать и записать ключ восстановления;
- Лучше также зашифровать swap раздел.
Выйдите и войдите в систему под основной учетной записью, только не перезагружайтесь:
После входа, нажмите кнопку Выполнить это действие сейчас для создания ключа восстановления данных. Перед вами откроется окно с ключом. Например:
Сохраните этот ключ в безопасном месте, это нужно для того, чтобы вы смогли вручную восстановить ваши файлы в будущем. Посмотреть этот же ключ можно командой:
Шифрование swap раздела в Ubuntu
Если вы шифровали домашнюю папку во время установки Ubuntu, swap раздел будет зашифрован автоматически. Но в нашем случае если вы хотите зашифровать swap нужно выполнить команду:
Обратите внимание, что с зашифрованным swap разделом не будет нормально работать гибернация, но эта функция все равно по умолчанию отключена.
Очистка временных файлов
Если после нескольких перезагрузок все работает правильно, значит шифрование домашней папки в ubuntu и можно удалить резервные копии и учетную запись временного пользователя. Резервная копия находится в директории /home.
Для удаления выполните в терминале подобную команду:
sudo rm -rf /home/sergiy.random
Будьте осторожны, так как случайно можно удалить и основной домашний каталог, если имя будет введено неверно.
Выводы
Вот и все, теперь вы знаете как зашифровать домашнюю папку ubuntu. Это совсем несложно. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.