Я зашифровал безголовый сервер с помощью cryptsetup / LUKS.
2 HDD с загрузкой 512 МБ / с / dev / md0 и 1,61 ТБ LUKS с шифрованием / dev / md1 с LVM, содержащим /, swap и другие.
Я установил dropbear (и busybox уже был установлен), чтобы разблокировать все во время процесса загрузки. Я использую GRUB2.
Пока все отлично работает. Я могу войти в систему с закрытым ключом на dropbear, прослушивая порт 22, и разблокировать LUKS с помощью команды
echo -n "passphrase" > /lib/cryptsetup/passfifo
, как только я это сделаю, сервер загрузится, как будто ничего не зашифровано. Что именно то, что я хочу.
Теперь, хотя это работает нормально, я не хочу, чтобы это работало.
Прежде всего, я не могу найти никакой документации по / lib / cryptsetup / passfifo. Как это вообще работает? Во-вторых, я сгенерировал ключевой файл с GPG (также с cryptsetup в качестве устройства обратной связи), который я хочу использовать вместо пароля. Но я не могу найти документальный фильм о том, как это сделать, в busybox. Кажется, GPG не установлен, поэтому я не могу использовать этот ключ (могу ли я как-нибудь сделать GPG доступным для busybox?)
Так что на данный момент, единственный способ для меня разблокировать мою систему, чтобы передать мой пароль в / lib / cryptsetup / passfifo, который я не хочу использовать. Я попытался использовать cryptsetup непосредственно в его пути busybox, как
cryptsetup luksOpen /dev/md1 cryptdisk
Я не показывал никаких ошибок, но моя система не продолжала загрузку.
Есть какие-нибудь идеи, что я мог бы сделать, или что-то не так с моим подходом к решению этой проблемы?
Фрэнк
Это больше комментарий, чем ответ, извините. Но так как вы еще не получили никаких ответов, я все равно хотел что-то написать.
Что касается того, как это вообще работает:
В Initramfs у вас обычно есть один главный процесс (обычно сценарий оболочки на основе busybox /init
), который отвечает за обеспечение доступности корневого раздела перед передачей процесс загрузки для реальной системы инициализации вашей установки Ubuntu.
В случае dropbear
в Initramfs, это отдельный процесс, начатый /init
. Заходя в dropbear, вы получаете оболочку, которая является еще одним процессом. Все время оригинал /init
должен быть запущен и чего-то ждать, в данном случае пароль LUKS.
Итак, что, скорее всего, здесь делает скрипт /init
, после запуска dropbear, создает именованный канал, или fifo, то есть /lib/cryptsetup/passfifo
. А потом он читает из этой именованной трубы. Это чтение будет блокироваться до тех пор, пока на самом деле не будет чего читать, поэтому /init
зависает и ожидает ввода.
Затем, спустя несколько лет, вы входите в dropbear
и выполняете echo passphrase > /lib/cryptsetup/passfifo
, после чего /init
просыпается от сна и возобновляет работу, чтобы разблокировать LUKS и продолжать процесс загрузки.
Что касается зашифрованного ключа GPG в Initramfs, я уверен, что это как-то стандартный метод в Ubuntu, вероятно, для настройки через /etc/crypttab
. Вы проверили вики на предмет как?
Это, конечно, потребует включения GPG в Initramfs. но я обрисовал здесь альтернативный подход, который можно было бы заставить работать без дополнительных зависимостей:
Как использовать dm-crypt (LUKS) с GnuPG для использования двухфакторного для FDE? [ 1121]
Проблема с этим, конечно, в том, что он не является стандартным, поэтому, хотя теоретически это может быть проще, его на самом деле сложнее настроить.