Доклады, выступления, видео и электронные публикации

Контроль целостности kvm-based виртуальной машины на различных этапах её жизненного цикла

Ключевыми понятиями в контексте виртуализации серверов (виртуализации вычислительных систем) – технологии, позволяющей представить ресурсы ЭВМ в некотором универсальном виде и запустить на одной физической машине одновременно несколько экземпляров операционных систем (ОС), называемых гостевыми [1-4], – являются «гипервизор» и «виртуальная машина» (ВМ).

Гипервизор – специальная программа, реализующая запуск виртуальных машин, а также осуществляющая управление ими [4-6]. Виртуальной машиной называют  вычислительный ресурс (систему), который использует программное обеспечение вместо физического компьютера для запуска программ и развертывания приложений, причём каждая виртуальная машина запускает свою собственную операционную систему и функционирует отдельно от других виртуальных машин, даже если все они работают на одном хосте (физическом компьютере с запущенным гипервизором) [4, 7].

Являясь основой виртуальных инфраструктур, гипервизор и виртуальная машина являются и основными объектами защиты при построении подсистемы защиты.

В зависимости от гипервизора (ESXi [8], Hyper-V [9], KVM [10] и др.), создавшего и запустившего виртуальную машину, она будет иметь различную конструкцию и обладать различными возможностями. Принципы же построения системы защиты виртуальной инфраструктуры едины, вне зависимости от работающего на хосте гипервизора. Различны будут лишь конкретные средства защиты информации, реализующие эти принципы.

В данной статье рассмотрим вопросы контроля целостности KVM-based виртуальной машины, машины, созданной при помощи гипервизора KVM и среды управления libvirt.

Контроль целостности виртуальных машин является одной из необходимых мер для обеспечения безопасности информации, обрабатываемой в виртуальной инфраструктуре [4, 11-13].

Различные средства защиты информации (СЗИ) для контроля целостности некоторого объекта должны выполнять сравнение его текущего состояния с эталонным. СЗИ, осуществляющие контроль целостности виртуальных машин, не являются исключением. Эти программные или программно-аппаратные средства также должны выполнять получение информации о состоянии объекта (виртуальной машины), представление этой информации в формате, предназначенном для сравнения или сохранения в качестве эталона, а также выполнять непосредственно сравнение состояний.

В [14] показано, что каждая KVM-based виртуальная машина характеризуется своим виртуальным аппаратным обеспечением и работающей на нём гостевой операционной системой, а значит и контроль целостности виртуальной машины должен включать в себя контроль 2 компонентов: конфигурации, оборудования и его настроек, и файлов внутри виртуальной машины, как системных, так и пользовательских. То есть информацией о виртуальной машине для контроля её целостности должны быть данные о виртуальном оборудовании и о файлах.

Представление информации о файле для выполнения контроля целостности хорошо изучено и повсеместно применяется на практике: состояние выражается в виде хэш-суммы, вычисленной от файла. Расположение файлов на диске виртуальной машины не привносит никаких особенностей, и целесообразным форматом данных о файлах виртуальной машины видится список, содержащий пути к этим файлам на диске ВМ и их хэш-суммы.

В то же время вычисление хэш-сумм для представления информации об оборудовании является излишней мерой: объем данных, содержащих полные сведения о конфигурации KVM-based ВМ, исчисляется всего лишь десятками байт, а потому хранение и сравнение данных такого размера является простой задачей. Выбрав форматом данных об оборудовании ВМ список, содержащий полный перечень компонентов (дисков, сетевых карт, CPU и т.д.) с их параметрами, мы получаем возможность не только обнаружить нарушение целостности, но и определить его причину.

Таким образом, целесообразным форматом данных о состоянии виртуальной машины видится совокупность  списка, содержащего пути к контролируемым файлам на диске ВМ с их хэш-суммами, и полного перечня виртуального оборудования.

Виртуальные машины, созданные при помощи гипервизора KVM и среды управления libvirt, могут находиться в одном из следующих состояний [11]:

  1. Не определена – базовое состояние. Libvirt ничего не знает о ВМ в этом состоянии, так как она еще не определена и не создана;
  2. Определена или остановлена – виртуальная машина был определена, но не работает.
  3. Выполняется – виртуальная машина была создана и запущена. Любая ВМ в этом состоянии активно выполняется на гипервизоре узла.
  4. Приостановлена – выполнение ВМ на гипервизоре приостановлено. Его состояние было временно сохранено до возобновления.
  5. Сохранена - аналогично состоянию «Приостановлено», но состояние ВМ сохраняется в постоянном хранилище, также виртуальную машину из этом состоянии можно восстановить.

Граф перехода между состояниями изображён на рисунке 1.

1.jpg 

Граф перехода показывает, что состояние «выполняется» является центральным для ВМ: переход в него возможен из любого состояния, в том числе возможен переход «выполняется»-«выполняется» в результате миграции. В то же время указанное состояние является ключевым с точки зрения безопасности: обработка информации (её чтение, модификация, запись и т.д.) происходит только на виртуальных машинах в состоянии «выполняется».

Анализируя граф состояний ВМ, мы можем увидеть, что загрузка ОС происходит при переходе ВМ из «не определена» в «выполняется» и из «определена\остановлена» в «выполняется». Для физических ЭВМ постулат о необходимости контроля целостности на этапе доверенной загрузки операционной системы является на сегодняшний день  общепризнанным. Аналогично и для ВМ контрольные процедуры необходимы на данном этапе.

Вместе с тем проверок только при загрузке ОС для ВМ недостаточно. Находясь в состоянии «приостановлена», ВМ как бы поставлена на «паузу» и при выполнении «resume», то есть при переходе в состояние «выполняется» должна восстановиться в той же конфигурации, в которой была ранее. Но без дополнительных проверок быть полностью уверенным в том, что изменения состояния не происходило, невозможно. Аналогично и для состояния «сохранена». ВМ при этом существует в виде файла на диске и существует угроза модификации этого файла, а значит и изменения конфигурации ВМ в этом состоянии.

В процессе миграции ВМ перемещается с одного хоста (гипервизора) на другой, в процессе такого перемещения по сети передаются пакеты, содержащие данные о конфигурации ВМ. Т.к. существует угроза модификации этих данных при передаче, то целесообразно проводить контроль целостности и при выполнении «migrate».

Итак, сформулированы следующие тезисы:

  • Необходим контроль целостности ВМ
  • В рамках него необходимо контролировать целостность оборудования и файлов ВМ
  • Для контроля файлов ВМ должны рассчитываться хэш суммы и сравниваться с эталонными
  • Для контроля оборудования ВМ настоящие значения параметров оборудования должны сравниваться с эталонными значениями (хэширование не используется)
  • Контроль целостности должен выполняться при каждом переходе ВМ в состояние «выполняется»

Названные идеи уже реализованы в специальном программном обеспечением «Аккорд-KVM». Помимо контроля целостности оно выполняет контроль за размещением ВМ (также при каждом переходе в состояние «выполняется»), а также регистрацию событий в виртуальной инфраструктуре.

Перехват перехода в состояние «выполняется» осуществляется за счёт hook-скрипта, сходящего в состав СПО, а контрольные процедуры реализованы в исполняемом модуле accordkvm. Эталонные значения для контроля целостности хранятся в собственной БД СПО.

Стоит отметить, что хотя контроль целостности ВМ и не является достаточным условием для построения надёжной системы защиты виртуальной инфраструктуры, но является условием необходимым, без которого построение системы защиты невозможно.

Список литературы

  1. Что такое виртуализация серверов? [Электронный ресурс]. URL: https://www.hpe.com/ru/ru/what-is/server-virtualization.html (дата обращения: 10.09.2020).
  2. Как работает виртуализация серверов? [Электронный ресурс]. URL: https://computer.howstuffworks.com/server-virtualization.htm (дата обращения: 10.09.2020).
  3. Виртуализация серверов [Электронный ресурс]. URL: https://www.vmware.com/topics/glossary/content/server-virtualization (дата обращения: 10.09.2020).
  4. ГОСТ Р 56938-2016 Защита информации. Защита информации при использовании технологий виртуализации. Общие положения
  5. Что такое гипервизор? [Электронный ресурс]. URL: https://www.networkworld.com/article/3243262/what-is-a-hypervisor.html (дата обращения: 10.09.2020).
  6. Что такое гипервизор? [Электронный ресурс]. URL: https://www.vmware.com/topics/glossary/content/hypervisor (дата обращения: 10.09.2020).
  7. Что такое виртуальная машина? [Электронный ресурс]. URL: https://www.vmware.com/topics/glossary/content/virtual-machine (дата обращения: 10.09.2020).
  8. ESXi [Электронный ресурс]. URL: https://www.vmware.com/ru/products/esxi-and-esx.html (дата обращения: 10.09.2020).
  9. Архитектура Hyper-V [Электронный ресурс]. URL: https://docs.microsoft.com/ru-ru/virtualization/hyper-v-on-windows/reference/hyper-v-architecture (дата обращения: 10.09.2020).
  10. Сайт проекта KVM [Электронный ресурс]. URL: https://www.linux-kvm.org/page/Main_Page (дата обращения: 10.09.2020).
  11. Приказ № 17 ФСТЭК России от 11 февраля 2013 г. «Об утверждении требований о защите информации, не составляющей государственную тайну, содержащейся в государственных информационных системах».
  12. Приказ № 21 ФСТЭК России от 18 февраля 2013 г. «Об утверждении состава и содержания организационных и технических мер по обеспечению безопасности персональных данных при их обработке в информационных системах персональных данных»
  13. Приказ № 31 ФСТЭК России от 14 марта 2014 г. «Об утверждении Требований к обеспечению защиты информации в автоматизированных системах управления производственными и технологическими процессами на критически важных объектах, потенциально опасных объектах, а также объектах, представляющих повышенную опасность для жизни и здоровья людей и для окружающей природной среды».
  14. Ваганов Т. Е., Мозолина Н. В., Чадов А. Ю. Контроль целостности виртуальных машин в среде виртуализации KVM // Комплексная защита информации: материалы ХХIV научно-практической конференции. Витебск. 21–23 мая 2019 г.: УО ВГТУ. Витебск, 2019. С. 242–248.
  15. VM lifecycle [Электронный ресурс]. URL: https://wiki.libvirt.org/page/VM_lifecycle#States_that_a_guest_domain_can_be_in

Автор: Мозолина Н. В.

Дата публикации: 13.11.2020

Библиографическая ссылка: Мозолина Н. В. Контроль целостности kvm-based виртуальной машины на различных этапах её жизненного цикла // Комплексная защита информации: материалы XXV научно-практической конференции, 15–17 сентября 2020 г., М.: Медиа Группа «Авангард», 2020. С. 29-33.


Scientia potestas est
Кнопка связи