При установке Ubuntu на новый ноутбук я был удивлен, что мне больше не предложили возможность шифровать домашний каталог.
Я нашел некоторую расплывчатую информацию о том, что Ubuntu недавно отказался от поддержки ecryptfs в пользу полного шифрования диска с помощью LUKS. Для моего случая использования нежелательно шифровать все устройство, поскольку я стремлюсь только защитить данные от несанкционированного доступа в случае потери или кражи машины. Никаких сверхсекретных данных и враждебных правительственных агентств (насколько мне известно) не задействовано, и я не могу позволить себе дополнительный диалог пароля.
Итак, мой вопрос прост: каков рекомендуемый метод шифрования домашнего каталога в Ubuntu 21.04?
Неужели мне почему-то не рекомендуется использовать ecryptfs?
Могу ли я безопасно использовать старый метод, описанный ниже?
] Сначала установите пакеты ecryptfs-utils и rsync:
sudo apt install ecryptfs-utils rsync lsof
Затем загрузите модуль ядра ecryptfs:
sudo modprobe ecryptfs
Пользователь, чей домашний каталог вы хотите зашифровать, НЕ ДОЛЖЕН входить в систему. Например, вы можете войти в систему как root в tty.
Затем запустите как root:
ecryptfs-migrate-home -u <username>
Рекомендуемый способ шифрования на Ubuntu/Linux в наши дни - действительно LUKS, будь то для отдельных контейнеров или целых разделов.
Я делаю именно то, что вы хотите сделать, шифрую и монтирую отдельный раздел как диск /home/$USERNAME%. Ниже приведены соответствующие шаги.
ВНИМАНИЕ: Выполнение этого действия уничтожит все данные на используемом разделе!
1. Создайте зашифрованный раздел:
sudo cryptsetup luksFormat /dev/sdXX
где вместо sdXX указан номер устройства раздела, который вы хотите зашифровать. Выберите пароль, когда появится запрос. Это создаст заголовок LUKS в начале раздела, и ничего больше. Вы можете проверить, что заголовок был правильно отформатирован LUKS, выполнив
sudo cryptsetup luksDump /dev/sdXX
2. Составьте карту зашифрованного контейнера:
Вы можете заменить c1
на любое имя по своему усмотрению:
sudo cryptsetup luksOpen /dev/sdXX c1
2a. Сотрите раздел (необязательно):
sudo cat /dev/zero > /dev/mapper/c1
сотрите раздел случайными данными, убедившись, что ничего из того, что могло быть на нем раньше, не может быть восстановлено. Это может занять некоторое время.
3. Создайте файловую систему в сопоставленном контейнере:
Здесь я использую ext4:
sudo mkfs.ext4 /dev/mapper/c1
4. Обновите файл /etc/crypttab:
Ваш crypttab должен содержать строку типа
cryptHome UUID=12345678-abcd-1234-5678-1234567890ab none luks,timeout=30
с UUID устройства, которое вы только что зашифровали выше (то есть устройство /dev/sdXX
). Вы можете узнать его, например, с помощью lsblk -f
(в выводе под FSTYPE должно быть написано "crypto_LUKS").
5. Обновите файл /etc/fstab:
Наконец, ваш fstab должен содержать строку типа
/dev/mapper/cryptHome /home/username ext4 defaults 0 2
для монтирования расшифрованного раздела в вашей файловой системе. Смонтированное имя (cryptHome) должно совпадать с тем, которое вы определили в crypttab. Замените имя пользователя
на имя реального пользователя.
Вы также можете смонтировать его под /home, но тогда у вас будут домашние каталоги всех пользователей на одном зашифрованном диске - это означает, что все они должны знать пароль раздела, чтобы открыть его при загрузке.
Заключительные замечания
С помощью этих шагов Ubuntu будет просить вас разблокировать раздел при каждой загрузке, перед экраном входа пользователя.
Нет проблем с установкой системы с каталогом /home/username по умолчанию, а затем смонтировать поверх него зашифрованный раздел. Чтобы перенести существующий домашний каталог, смонтируйте подключенный диск (/dev/mapper/c1 в этом примере) куда-нибудь на время после Шага 3 и скопируйте данные перед перезагрузкой.
Это - отличный ресурс, если вы хотите узнать больше о том, как работает LUKS.