OffshoreVps
Безопасность19 окт. 20269 мин чтенияАвтор: команда OffshoreVps

Шифрование VPS с LUKS: настройка и ограничения

Настройте шифрование диска LUKS на арендованном сервере: зашифрованный том данных, как работает удалённая разблокировка корневого диска и честная модель угроз.

Шифрование диска защищает данные в состоянии покоя. На VPS гипервизор контролирует хостер, поэтому шифрование не помешает целеустремлённому провайдеру читать память. Зато оно хорошо защищает от потерянных резервных копий, повторно используемых дисков и украденных или изъятых носителей. Прежде чем тратить время, определите, от чего из этого вы защищаетесь.

Окно терминала на VPS с командами для шифрования VPS с помощью LUKS, начиная с «sudo apt install -y cryptsetup»
Примерно такие команды вы будете выполнять на своём сервере в этом руководстве.

Решите, от чего вы защищаетесь

  • Выведенные из эксплуатации или скопированные диски: шифрование очень помогает.
  • Утёкшие снимки: шифрование помогает, если ключ не хранится вместе со снимком.
  • Атакующий в работающей системе: шифрование не помогает, потому что том разблокирован.
  • Вредоносный гипервизор: на VPS шифрование не помогает. Более надёжный вариант — выделенный сервер с полным контролем над оборудованием.

Вариант 1: зашифрованный том данных

С этого безопаснее всего начать. Подключите второй диск или создайте loop-файл и храните там конфиденциальные данные. В примере используется пустое устройство /dev/vdb. Дважды проверьте имя устройства, потому что форматирование уничтожает его содержимое.

sudo apt install -y cryptsetup
sudo cryptsetup luksFormat /dev/vdb
sudo cryptsetup open /dev/vdb secure
sudo mkfs.ext4 /dev/mapper/secure
sudo mkdir -p /srv/secure
sudo mount /dev/mapper/secure /srv/secure

Чтобы закрыть его снова: sudo umount /srv/secure && sudo cryptsetup close secure.

Шаги этого руководства по порядку: 1. Решите, от чего вы защищаетесь; 2. Вариант 1: зашифрованный том данных; 3. Вариант 2: контейнер в виде файла; 4. Вариант 3: корневой диск с удалённой разблокировкой; 5. Правильно обращайтесь с ключом
Шаги этого руководства по порядку.

Вариант 2: контейнер в виде файла

Если запасного диска нет, используйте файл в качестве контейнера.

sudo fallocate -l 20G /root/vault.img
sudo cryptsetup luksFormat /root/vault.img
sudo cryptsetup open /root/vault.img vault
sudo mkfs.ext4 /dev/mapper/vault
sudo mount /dev/mapper/vault /srv/vault

Вариант 3: корневой диск с удалённой разблокировкой

Для шифрования корневого диска нужен способ ввести парольную фразу при загрузке, до того как поднимется сеть. Обычное решение — небольшой SSH-сервер (dropbear) внутри initramfs. Это зависит от того, позволяет ли провайдер установить собственный образ или переустановить систему со своей разметкой, поэтому сначала проверьте это. Во многих панелях VPS это не разрешено, а ошибка может сделать сервер незагружаемым, так что держите наготове средство восстановления.

В общих чертах: установите систему с зашифрованным корнем, добавьте dropbear-initramfs, поместите ваш открытый SSH-ключ в /etc/dropbear/initramfs/authorized_keys, пересоберите initramfs, затем перезагрузитесь и разблокируйте по SSH с помощью cryptroot-unlock.

Правильно обращайтесь с ключом

  • Используйте длинную парольную фразу и храните её в менеджере паролей, а не на сервере.
  • Сделайте резервную копию заголовка LUKS: sudo cryptsetup luksHeaderBackup /dev/vdb --header-backup-file header.img. Храните её офлайн.
  • Не используйте автоматическую разблокировку ключевым файлом, хранящимся на том же диске. Это лишает шифрование смысла.
  • Помните, что разблокировка при загрузке означает, что для перезагрузки нужно ваше присутствие.

Сочетайте шифрование с надёжными зашифрованными резервными копиями и основами из защиты за 15 минут.