Шифрування диска віддаленого сервера
Відповідь
Повне шифрування диска на віддаленому сервері використовує LUKS2 з паролем, який вводиться при завантаженні через позасмугову консоль або dropbear SSH-оболонку в initramfs. Воно захищає від вилучення диска та відновлення даних зі списаних дисків. Воно не захищає запущений сервер, ключі якого знаходяться в RAM.
Чітко визначте загрозу, яку воно усуває
Повне шифрування диска захищає дані у стані спокою. Як тільки машина завантажена й том розблоковано, ключ знаходиться в пам'яті ядра, і файлова система доступна для будь-чого з достатніми привілеями — включно, на віртуалізованій платформі, з оператором гіпервізора, який може скинути RAM гостьової системи.
Отже, FDE перемагає: вилучення апаратного забезпечення у вимкненому стані, диски, що покидають датацентр наприкінці життя, і холодну копію вашого віртуального образу диска. Воно не перемагає: атакувальника на запущеній системі або супротивника на рівні гіпервізора проти запущеної ВМ. Це чесні межі, і будь-який посібник, який їх пропускає, продає вам спокій.
Проблема віддаленого розблокування
На ноутбуці ви вводите пароль при завантаженні. На сервері за дві тисячі кілометрів щось має його надати, і очевидні рішення всі зводять нанівець мету — файл ключа на тому ж диску або ключ, що зберігається провайдером, означають, що шифрування декоративне.
Є дві правильні відповіді. На наших виділених і GPU-серверах використовуйте позасмугову консоль: IPMI дає екран завантаження, і ви вводите пароль так, ніби це локально. На VPS помістіть dropbear-initramfs у початковий ramdisk, щоб машина завантажилася достатньо для SSH-з'єднання, ви розблокували через це з'єднання, і завантаження тривало.
Налаштування
Чистий шлях — шифрувати при встановленні. Завантажте спеціальний ISO через віртуальний носій, розділіть диск з незашифрованим /boot і контейнером LUKS2 для всього іншого, і встановіть у нього. Виберіть Argon2id як функцію похідного ключа — це стандарт LUKS2, і вона стійка до пам'яті, що важливо проти brute force.
Замовте LUKS при наданні на будь-якому виділеному, GPU або сховищному плані, і ми зробимо розділення; ви вводите пароль через консоль при першому завантаженні, і він ніколи не потрапляє в нашу інфраструктуру. Це безкоштовно, і шляху відновлення немає — це те саме твердження, сказане двічі.
- cryptsetup luksFormat --type luks2 --pbkdf argon2id /dev/sdaX
- Незашифрований /boot, все інше всередині контейнера
- apt install dropbear-initramfs на VPS для віддаленого розблокування
- Додайте ваш SSH-ключ до /etc/dropbear/initramfs/authorized_keys
- Перевірте повне перезавантаження, перш ніж щось на нього ставити
- Залиште другий ключовий слот із паролем, збереженим у безпечному місці
Дві речі, які роблять неправильно
Перша — мати лише один ключовий слот. LUKS2 підтримує вісім; використовуйте щонайменше два, причому другий містить довгий випадковий пароль, збережений у менеджері паролів. Єдиний забутий пароль — безповоротний, а безповоротний означає безповоротний.
Друга помилка — це не тестування перезавантаження до того, як ви розмістите дані на машині. Неправильно налаштований dropbear-initramfs може перетворити перше незаплановане перезавантаження на машину, яка ніколи не повернеться. Перезавантажте її навмисно, двічі, поки вона ще порожня.
Поширені запитання
01 Чи може мій провайдер прочитати зашифрований диск?
Не у стані спокою. У працюючій віртуальній машині оператор гіпервізора в принципі може читати пам'ять гостя, в якій зберігається ключ — це справедливо для будь-якого провайдера віртуалізації. Bare metal з LUKS усуває цей інтерфейс.
02 Як розблокувати сервер, до якого я не можу доторкнутися?
Out-of-band консоль IPMI на виділених та GPU-серверах або dropbear-initramfs на VPS — машина завантажується достатньо, щоб прийняти SSH, ви розблоковуєте через нього, і завантаження продовжується.
03 Що якщо я забуду пароль?
Дані втрачено. Немає відновлення, немає бекдорів і немає ключа у провайдера. Використовуйте щонайменше два слоти ключів LUKS, причому другий повинен містити довгий випадковий пароль у менеджері паролів.
Пов'язане