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

Я зашифровал безголовый сервер с помощью 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

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

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

Фрэнк

2
задан 27 August 2013 в 06:33

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 и продолжать процесс загрузки.

1118 И это в основном общее представление о том, как это работает. Если для этого нет документации, вам придется прочитать скрипт оболочки.

Что касается зашифрованного ключа GPG в Initramfs, я уверен, что это как-то стандартный метод в Ubuntu, вероятно, для настройки через /etc/crypttab. Вы проверили вики на предмет как?

Это, конечно, потребует включения GPG в Initramfs. но я обрисовал здесь альтернативный подход, который можно было бы заставить работать без дополнительных зависимостей:

Как использовать dm-crypt (LUKS) с GnuPG для использования двухфакторного для FDE? [ 1121]

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

0
ответ дан 27 August 2013 в 06:33

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

Похожие вопросы: