Полное системное шифрование с помощью LUKS на автономном сервере - разблокировка с помощью dropbear и busybox. Как?

Я зашифровал безголовый сервер с помощью cryptsetup / LUKS.
2 жестких диска с 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

Я не показал никаких ошибок, но моя система не продолжила загрузку.

Любые идеи, что я мог бы сделать, или что-то не так с моим подходом справиться с этим?

Фрэнк

1 ответ

Решение

Это больше комментарий, чем ответ, извините. Но так как вы еще не получили никаких ответов, я все равно хотел написать что-нибудь.

Что касается того, как это вообще работает:

В 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?

Проблема с этим, конечно, в том, что он не является стандартным, поэтому, хотя теоретически это может быть проще, его на самом деле сложнее настроить.

Другие вопросы по тегам