Шифрование диска удалённого сервера
Ответ
Полное шифрование диска на удалённом сервере использует LUKS2 с паролем, вводимым при загрузке через консоль вне полосы или dropbear SSH в initramfs. Это защищает от изъятия диска и восстановления данных со списанных накопителей. Это не защищает работающий сервер, чьи ключи в оперативной памяти.
Точно определите угрозу, которую оно закрывает
Полное шифрование диска защищает данные в состоянии покоя. Когда машина загружена и том разблокирован, ключ находится в памяти ядра, и файловая система доступна любому процессу с достаточными привилегиями — включая, на виртуализированной платформе, оператора гипервизора, способного снять дамп памяти гостевой ОС.
FDE позволяет предотвратить: изъятие оборудования в выключенном состоянии, уход дисков из дата-центра в конце срока службы и холодную копию вашего виртуального диска. Он не защищает от: атакующего на работающей системе или противника на уровне гипервизора против работающей ВМ. Таковы честные границы; любой гид, который их пропускает, продаёт вам спокойствие.
Проблема удалённой разблокировки
На ноутбуке вы вводите пароль при загрузке. На сервере за две тысячи километров кто-то должен его передать, и все очевидные решения сводят цель на нет: файл ключа на том же диске или ключ у провайдера означают, что шифрование декоративно.
Есть два правильных ответа. На наших выделенных и GPU-серверах используйте консоль вне полосы: IPMI показывает экран загрузки, и вы вводите пароль, как если бы были рядом. На VPS поместите dropbear-initramfs в начальный ramdisk, чтобы машина загрузилась настолько, чтобы принять SSH-соединение; вы разблокируете через него, и загрузка продолжится.
Настройка
Правильный путь — шифрование при установке. Загрузите собственный ISO через виртуальный носитель, разбейте диск с незашифрованным /boot и контейнером LUKS2 для всего остального, и установите в него. Выберите Argon2id в качестве функции формирования ключа — это стандарт LUKS2, она устойчива к перебору за счёт требовательности к памяти.
Закажите LUKS при заказе на любом выделенном, GPU или storage-плане — разметку выполним мы; пароль вы вводите через консоль при первой загрузке, и он никогда не касается нашей инфраструктуры. Это бесплатно и без процедуры восстановления — по сути, одно и то же.
- cryptsetup luksFormat --type luks2 --pbkdf argon2id /dev/sdaX
- Незашифрованный /boot, всё остальное внутри контейнера
- apt install dropbear-initramfs на VPS для удалённой разблокировки
- Добавьте свой SSH-ключ в /etc/dropbear/initramfs/authorized_keys
- Проверьте полную перезагрузку до того, как разместите что-либо
- Держите второй слот ключа с длинным случайным паролем, сохранённым в менеджере паролей
Две частые ошибки
Первая — только один слот ключа. LUKS2 поддерживает восемь; используйте как минимум два, во втором храните длинный случайный пароль в менеджере паролей. Забытый пароль не восстановить, а невосстановимый значит невосстановимый.
Вторая — не тестировать перезагрузку до того, как разместили данные на машине. Неправильно настроенный dropbear-initramfs превращает первую незапланированную перезагрузку в машину, которая больше не загрузится. Перезагрузите её намеренно, дважды, пока она ещё пуста.
Часто задаваемые вопросы
01 Может ли провайдер прочитать зашифрованный диск?
Не в состоянии покоя. На работающей ВМ оператор гипервизора в принципе может прочитать память гостевой системы, где хранится ключ — это верно для любого провайдера виртуализации. Безопасный сервер с LUKS устраняет этот интерфейс.
02 Как разблокировать сервер, к которому нет физического доступа?
Консоль IPMI для выделенных и GPU-серверов, или dropbear-initramfs на VPS — машина загружается до состояния, когда доступен SSH, вы разблокируете её, и загрузка продолжается.
03 Что если я забуду парольную фразу?
Данные будут потеряны. Никакого восстановления, бэкдора или ключа у провайдера нет. Используйте минимум два слота ключей LUKS, второй — с длинной случайной парольной фразой в менеджере паролей.
Похожее