Шифрование диска защищает данные в состоянии покоя. На VPS гипервизор контролирует хостер, поэтому шифрование не помешает целеустремлённому провайдеру читать память. Зато оно хорошо защищает от потерянных резервных копий, повторно используемых дисков и украденных или изъятых носителей. Прежде чем тратить время, определите, от чего из этого вы защищаетесь.
Решите, от чего вы защищаетесь
- Выведенные из эксплуатации или скопированные диски: шифрование очень помогает.
- Утёкшие снимки: шифрование помогает, если ключ не хранится вместе со снимком.
- Атакующий в работающей системе: шифрование не помогает, потому что том разблокирован.
- Вредоносный гипервизор: на 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.
Вариант 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 минут.