Задать вопрос
@necroic
Системный администратор

Как и от каких атак защитить свой сервер, находящийся на чужом гипервизоре?

Коллеги, добрый день!
Есть виртуальный сервер на Debian, который крутит написанную мной программу.
Программа забирает к себе данные от клиента, обрабатывает их и выдаёт результат клиенту.
В силу обстоятельств, весь сервер может быть размещён на гипервизоре клиента.
Необходимо защитить его так, чтобы клиент не мог войти в него и завладеть моим ПО.

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

Верно ли я понимаю возможные варианты атаки, есть ли ещё какие-то?
Правильно ли я выбирал решение для защиты?
  • Вопрос задан
  • 1110 просмотров
Подписаться 5 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 6
CityCat4
@CityCat4 Куратор тега Информационная безопасность
//COPY01 EXEC PGM=IEBGENER
Необходимо защитить его так, чтобы клиент не мог войти в него и завладеть моим ПО.

Невозможно.

Чтобы войти, ему нужен логин/пароль, он их не знает.
Чтобы их взломать, ему нужно, как минимум, сервер перезагрузить.

Неверно. Ему не нужно их ломать. Ему достаточно поменять initramfs, добавив туда логгер - и от отправит ему введенный Вами самим ключ :)

Вот неплохая статья на эту тему. Но даже предложенные в ней методы защиты не защитят от перестановки носителей в другой комп, если владелец хоста решит что овчинка стоит выделки.
Ответ написан
@rPman
Универсально защититься нельзя. Но некоторые атаки будут стоить дорого, на столько что не будут иметь смысла.

Все же дешевле будет приобрести отдельный компьютер, разместить его в сейфе с пломбами и добавить контроль за целостностью корпуса - при вскрытии выключать компьютер... и да, оперативную памяти перед выключением нужно очищать, в linux вроде помню можно было даже при панике это сделать, а в windows хз (потому что содержимое ram можно восстановить если заморозить его и оперативно извлечь из компьютера). Кстати про оперативную память, если запустить свой гипервизор, в котором есть поддержка шифрования памяти (в современные процессоры эту фичу уже встроили AMD SME/SEV, Intel TME/MKTME) то это защитит от атаки извечения памяти.

Для включения компьютера должен приезжать доверенный, со своей флешкой загрузчиком и клавиатурой (лучше смартфон с PXE сервером и загрузкой по сети)... загрузчик подписывать своей цифровой подписью, ключи зашиваются в биос, это предотвратит запуск компьютера со своей логикой... загрузчик проверяет наличие отсутствия виртуализации (в т.ч. с помощью бенчмарков).. там есть еще свои ключи цифровой подписи в биос и подписывать свой загрузчик, т.е. чужой с логгером действий уже не запустится... в общем есть способы как вставить палки в колеса злоумышленникам и они дешевле чем способы их обхода на порядок.

upd. компьютеры с поддержкой TPM 2.0 поддерживают шифрование на уровне биос, т.е. загрузчик можно зашифровать, ключи залить в биос, и никто даже реверсить не сможет. Пример как это с дебианом сделали
Ответ написан
Комментировать
Afranius
@Afranius
Из говорящих дольше живут те, что говорят меньше.
Никак. Если есть физический доступ к серверу - на него всегда можно проникнуть.
А виртуалка на чужом гипервизоре - фактически то же самое:
и локальную консоль можно открыть, и в single mode загрузиться, и пароль рута сменить.
Более того: это не обязательно делать на оригинальной ВМ, всегда можно предварительно сделать копию, к ней доступ и получать. Некоторые гипервизоры позволяют клонировать ВМ даже без выключения. Я уже молчу о снапшотах.
Ответ написан
Комментировать
@0CYBEaR0
Полнодисковое шифрование (защита от анализа копии виртуального диска);
Доступ к гипервизору на уровне админа ВМ для контроля параметров;
Раздувание памяти для (жиденькой, но все же) защиты пула оперативной памяти от атак на смещение+средство от НСД для очистки RAM, освобождаемой процессом;
Программные модули доверенной загрузки, вшитые в BIOS ВМ или аппаратные, проброшенные средствами pci passthrough для контроля целостности загрузки ВМ;
Средство от НСД для контроля доступа к объектам ФС на уровне пользователей/процессов, управления олицетворением и т.д.;
Zabbix/SIEM для контроля за жизненным циклом ВМ (в т.ч. анализ наличия модулей доверенной загрузки, контроль целостности файлов ВМ, комплаенс-проверка запущенных СЗИ, контроль целостности BIOS).

Но что-то мне подсказывает, что лучше это все делать на уровне защиты приложения от пиратства, а не городить огороды с СЗИ
Ответ написан
Комментировать
MvcBox
@MvcBox
Software Engineer [C/C++/JS(for Node.js)/etc]
Не рассматривали вариант с добавлением системы лицензирования в софт как дополнительной меры?
Чтобы, к примеру, при запуске софт ходил на Ваш сервер лицензий.
Ответ написан
Комментировать
@AlexVWill
там уже верно выше написали, LUKS в данной + ситуации не поможет, а вот fscrypt поможет, т.к. это не дисковое а файловое шифрование, правда один минус жирный - для запуска программы нужно каждый раз входить удаленно и вводить код для подключения тома с расшифрованными данными... но зато при простом копировании зашифрованной папки или даже всего диска получаем аброкадабру
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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