Как настроить LVM & LUKS для автоматического дешифрования раздела?
Я недавно установил Ubuntu Server 11.04 с полным шифрованием lvm (устанавливается из программы установки) . Теперь я хочу использовать ключевой файл для автоматической разблокировки. Я пытался следовать этому руководству http://ubuntuforums.org/showthread.php?t=837416
Я сгенерировал ключ с помощью этой команды: sudo dd if=/dev/urandom of=/boot/grub/keyfile bs=1024 count=4
я положил это в /boot/grub
потому что я думаю, что это не зашифровано. Когда я пытаюсь добавить ключ с этой запятой sudo cryptsetup luksAddKey /dev/sdX /boot/grub/keyfile
он запрашивает у меня парольную фразу, и когда я ее ставлю, ничего не происходит, ничего не выводится на экран! Я игнорирую это и продолжаю другие шаги и перезагружаюсь, но ничего не случилось, и это просит пароль.
Спасибо за помощь.
4 ответа
Я только что прошел через это на моем новом домашнем сервере, это заняло много поисков и поисков, но у меня все получилось. Я попытаюсь воспроизвести шаги здесь. Я использую Ubuntu Server 11.10 и начал с довольно стандартной установки с использованием зашифрованного LVM, поэтому я просто расскажу об изменениях, которые я сделал оттуда.
Настроить:
- / dev / sda1 - мой незашифрованный / загрузочный раздел
- / dev / sda5 - мой раздел lvm, который содержит все остальное - root, swap и home
- / dev / sdc1 - это раздел на моей флешке, где я буду хранить ключевой файл
Сначала я создал ключевой файл, просто в моем домашнем каталоге:
dd if=/dev/urandom of=keyfile bs=512 count=4
(Вы можете использовать больший размер блока или считать для большего ключа)
Сообщите cryptsetup новый ключ (важно содержимое, а не имя файла):
sudo cryptsetup luksAddKey /dev/sda5 keyfile
Затем я отформатировал USB-накопитель с ext2 и дал ему метку. Я использовал метку, чтобы потом можно было смонтировать ее по метке и заменить флешку на случай, если что-то пойдет не так.
sudo mkfs -t ext2 /dev/sdc1
sudo e2label /dev/sdc1 KEYS
(конечно, ваше устройство будет отличаться)
Теперь скопируйте ключевой файл на USB-накопитель, принадлежащий корневому режиму 400:
mkdir KEYS
sudo mount /dev/sdc1 KEYS
sudo cp keyfile KEYS
sudo chown root KEYS/keyfile
sudo chmod 400 KEYS/keyfile
Измените /etc/crypttab. Шахта изначально содержалась
sd5_crypt UUID=(...) none luks
который я изменил на
sd5_crypt UUID=(...) /dev/disk/by-label/KEYS:/keyfile luks,keyscript=/lib/cryptsetup/scripts/passdev
Наконец, обновите initramfs:
sudo update-initramfs -uv
Теперь он загружается с помощью ключевого файла на USB-накопителе. Если я извлекаю флешку (скажем, когда ухожу в отпуск), она не загружается, и мои данные в безопасности.
Если кто-нибудь знает, как заставить его запросить фразу-пароль, если USB-накопитель отсутствует, это было бы удобно в качестве запасного варианта. Надеюсь, это поможет, любые дополнения или исправления будут более чем приветствоваться!
Чтобы улучшить ответ Рэнди Оррисона, вот небольшой сценарий, который я создал, который позволит системе отменить запрос у пользователя пароля, если ему не удается найти ключевой файл.
#!/bin/sh
ask_for_password () {
cryptkey="Unlocking the disk $cryptsource ($crypttarget)\nEnter passphrase: "
if [ -x /bin/plymouth ] && plymouth --ping; then
cryptkeyscript="plymouth ask-for-password --prompt"
cryptkey=$(printf "$cryptkey")
else
cryptkeyscript="/lib/cryptsetup/askpass"
fi
$cryptkeyscript "$cryptkey"
}
device=$(echo $1 | cut -d: -f1)
filepath=$(echo $1 | cut -d: -f2)
# Ask for password if device doesn't exist
if [ ! -b $device ]; then
ask_for_password
exit
fi
mkdir /tmp/auto_unlocker
mount $device /tmp/auto_unlocker
# Again ask for password if device exist but file doesn't exist
if [ ! -e /tmp/auto_unlocker$filepath ]; then
ask_for_password
else
cat /tmp/auto_unlocker$filepath
fi
umount /tmp/auto_unlocker
Сохраните и замените keyscript=/lib/cryptsetup/scripts/passdev
в /etc/crypttab
с путем к этому файлу и запустить sudo update-initramfs -uv
и вы сделали.
Эти инструкции от howtoforge.com заставили меня начать работу с автоматически расшифровываемым томом.
Как автоматически разблокировать зашифрованные диски LUKS с помощью ключевого файла
Шаг 1: Создать случайный ключевой файл
sudo dd if=/dev/urandom of=/root/keyfile bs=1024 count=4
Шаг 2: Сделать ключевой файл доступным только для чтения для root
sudo chmod 0400 /root/keyfile
Это сделает ключевой файл доступным для чтения только пользователю root. Если кто-то получит доступ к этому ключевому файлу, у вас все равно будет большая проблема на вашем компьютере.
Вы также можете выбрать нужный ключевой файл для root:root и переместить его в папку /root.
Шаг 3: Добавьте ключевой файл в LUKS
Устройства с поддержкой LUKS/dm_crypt могут хранить до 10 различных ключевых файлов / паролей. Итак, рядом с уже установленным паролем мы собираемся добавить этот ключевой файл в качестве дополнительного метода авторизации.
sudo cryptsetup luksAddKey /dev/sdX /root/keyfile
SDX, конечно, ваше устройство LUKS.
Сначала вам будет предложено ввести (существующий) пароль для разблокировки диска. Если все работает хорошо, вы должны получить такой вывод:
Enter any LUKS passphrase:
key slot 0 unlocked.
Command successful.
Шаг 4: Создайте маппер
Устройства LUKS должны создать преобразователь, на который затем можно ссылаться в fstab. Откройте /etc/crypttab
sudo nano /etc/crypttab
и добавьте затем строку вроде этого:
sdX_crypt /dev/sdX /root/keyfile luks
или вы можете использовать UUID устройства:
sdX_crypt /dev/disk/by-uuid/247ad289-dbe5-4419-9965-e3cd30f0b080 /root/keyfile luks
sdX_crypt - это имя создаваемого преобразователя. Вы можете использовать любое имя, например, "музыка", "фильмы" или "sfdsfawe" ....
Сохраните и закройте файл, нажав Ctrl-X, введите, введите. Ctrl-x закрывает nano, но сначала просит сохранить файл [yes = enter] и какое имя должно быть [same name = enter].
То, что мы сделали там, на самом деле говорит, что /root / keyfile должен использоваться вместо ввода пароля для разблокировки диска.
Шаг 5: монтируем устройство в fstab
Теперь у нас есть разблокированное устройство (ну, пока нет, но когда система загружается), и нам просто нужно смонтировать его сейчас. Откройте / etc / fstab:
sudo nano /etc/fstab
и добавьте новую запись, например:
/dev/mapper/sdX_crypt /media/sdX ext3 defaults 0 2
Убедитесь, что у вас есть правильное имя сопоставителя, которое вы добавили в шаге 4. Также убедитесь, что точка / папка монтирования существует. После добавления сохраните файл и закройте его (ctrl-x, enter, enter).
Шаг 6: перезагрузка или перемонтирование
Вот и все. Теперь вы можете перезагрузиться, и дополнительные устройства должны быть автоматически разблокированы и смонтированы. Вы также можете проверить это, перемонтировав все устройства:
sudo mount -a
@deitch У меня была такая же настройка, как у @Randy Orrison, и я столкнулся с той же проблемой, что и вы, и оказалось, что это ошибка systemd, которая пытается снова смонтировать / filesystem, когда находит соответствующую запись в /etc/crypttab.
Чтобы решить эту проблему, я просто удалил запись для sda5_crypt из / etc / crypttab после запуска команды update-initramfs -uv.
Перезагружаешься и все отлично работает как задумано.