LUKS Автоматическая разблокировка с помощью ключевого файла на удаленном сервере ubuntu

Есть ли способ автоматически разблокировать диск LUKS во время загрузки, когда ключевой файл хранится на удаленной машине. Идея состоит в том, чтобы серверы могли перезапускаться без какого-либо вмешательства пользователя. Серверы находятся в общедоступном облаке, и я не могу зашифровать корневой раздел. Если оставить ключевой файл на машине, шифрование будет просто невозможно.

Отсюда идея иметь файл ключа на удаленной машине, подключающейся через защищенный канал, такой как ssh.

Мандос , кажется, делает то, что мне нужно, но у меня есть два вопроса.
- Вся документация относится к корневым файловым системам. Может ли он работать с любым диском?
- В документации указано, что это работает только в интрасети, будет ли это работать, если локальный и удаленный серверы соединяются через VPN?

Это лучшее решение? единственное решение?

2
задан 22 November 2017 в 18:18
4 ответа

У вас есть различные решения в Интернете (например, здесь ), где в initrd включен небольшой ssh-сервер (busybox + dropbear), который запускает его во время загрузки перед монтированием файловой системы и позволяет связаться с ним для предоставления пароля в качестве входных данных.

Вы можете иметь возможность что-то сделать вокруг этого: в initrd, внутри запуска сервера sshd для ожидания удаленного подключения, запустите ssh соединение с вашим удаленным хостом, хранящим ключи, с определенными ключами ssh , чтобы получить файл ключа (выполняя команду scp), а затем разблокировать локальную файловую систему с помощью ключа LUKS.

Однако это не лишено недостатков: вам, конечно же, необходимо удалить загруженный ключ LUKS, как только разблокировка выполняется, иначе вы ничего не получили. Еще лучше, если вы найдете способ хранить его в ОЗУ только на необходимое время и нигде не хранить. Кроме того, «любой» злоумышленник, имеющий возможность прочитать содержимое вашего initrd, может найти соединение ssh и его ключ ssh, связаться с вашим удаленным хостом с ними и загрузить ключ LUKS. Однако если это происходит, это означает, что ваш злоумышленник явно нацелен на вас и не торопится, чтобы изучить вашу конкретную настройку, это явно выходит за рамки сценариев. Вы должны, по крайней мере, внимательно просмотреть все соединения, которые загрузили ключ, события должны быть связаны с другими вашими предупреждениями мониторинга, показывающими, что данный сервер действительно перезагружается (что опять же не защитит вас от злоумышленника, который смог изменить ваш initrd).

Вы также должны принять во внимание случаи, когда сеть в этот момент выходит из строя, scp не может подключиться и т. Д. Таким образом, имея в то же время возможность небольшого sshd ] сервер, чтобы иметь возможность подключаться к нему и отлаживать вещи - неплохая идея. Или посмотрите, какие внеполосные решения может предложить ваш облачный провайдер.

2
ответ дан 3 December 2019 в 09:32

Я использовал Mandos для хранения и извлечения кодовой фразы для разблокировки корневой файловой системы, чтобы разрешить автоматическое перезагружается и просто сохраняет ключи для всех других томов, используемых этой системой, в файле на этом зашифрованном корневом томе.

Я использовал mandos через WAN-соединение (настроив DHCP и IP-адрес сервера mandos в клиентской системе, а не полагаясь на Zeroconf, который работает только в локальной LAN), не беспокоясь о VPN-соединении.

1
ответ дан 3 December 2019 в 09:32

tang и clevis могут добиться этого даже с зашифрованным корневым разделом в CentOS 7 (и я лично использую его для автоматизации загрузки в моей домашней сети и на работе) . Взгляните и проверьте, подключается ли он к вашей виртуальной машине.

2
ответ дан 3 December 2019 в 09:32

Кажется, Мандос делает то, что я хочу, но у меня есть два вопроса. - Вся документация относится к корневым файловым системам. Может ли он работать с любым диском?

Что ж, пакет mandos-client предполагает, что вы хотите использовать его для дешифрования корневой файловой системы, и все его двоичные файлы имеют значения по умолчанию, которые упрощают их использование в среде initramfs. Но, безусловно, возможно запустить его в другом месте. Чтобы запустить двоичный файл "mandos-client" из обычной системной среды, ему потребуются следующие параметры: - seckey = / etc / keys / mandos / seckey.txt --pubkey = / etc / keys / mandos / pubkey .txt --network-hook-dir = / etc / mandos / network-hooks.d

  • В документации указано, что он работает только в интрасети. Будет ли это работать, если локальный и удаленный серверы соединяются через VPN?

Да, используя опцию - connect к mandos-client и настраивая сервер Mandos на использование статического номера порта (используя параметр port в mandos.conf файл). Обычно, когда вы хотите использовать сервер вне интрасети, настройка IP-адреса и маршрута на стороне клиента также является проблемой, но поскольку вы не шифруете корневой раздел, у вас этого нет проблема.

0
ответ дан 3 December 2019 в 09:32

Теги

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