Практически во всех центрах обработки данных теперь применяется технология виртуализации серверов. И все чаще решение Microsoft Hyper-V используется в качестве платформы для реализации нескольких разных виртуальных серверных систем на одном и том же аппаратном обеспечении. Такой подход может привести к возникновению проблем с безопасностью. Мы рассмотрим встроенные механизмы безопасности в Hyper-V и покажем, что можно предпринять для защиты виртуальных систем.
Компания Microsoft предлагает два продукта для виртуализации серверов. Более старое решение называется Virtual Server 2005 R2 и может применяться на операционных системах Windows Server 2003 (x32 и x64) и Windows XP (x32 и x64). Правда, производитель не рекомендует использовать это ПО в рабочих средах на системах XP. Его можно бесплатно загрузить с Web-страницы Microsoft [1]. Более современной платформой Microsoft является решение Hyper-V. Это программное обеспечение доступно как в составе Windows Server 2008 R2 (и Windows Server 2008), так и в отдельном варианте (который тоже доступен для бесплатного скачивания [2]). Оба решения позволяют запускать на виртуальных машинах разные операционные системы (не только Windows, но и другие) в качестве гостевых ОС.
ОСНОВНЫЕ МЕРЫ ЗАЩИТЫ
Если Hyper-V устанавливается на Windows Server 2008, то впоследствии на виртуальных машинах (ВМ) выполняются все экземпляры операционных систем — в том числе и Windows Server 2008, из которой администратор устанавливает и администрирует все остальные виртуальные машины. Решение Hyper-V использует микроядерный подход, когда создается специальный уровень абстракции размером меньше 1 Мбайт. Выполняя функции гипервизора, он выступает в качестве посредника между аппаратным обеспечением и хостовой операционной системой (Рисунок 1). Этот уровень обладает собственными аппаратными интерфейсами и всегда запускается перед стартом самой операционной системы. Уровень гипервизора реализован таким образом, что не позволяет выполнить программный код стороннего производителя.
Гипервизор напрямую выполняет задачи, имеющие критическую важность для функционирования системы (например, управление разделами оперативной памяти), что обеспечивает изоляцию хостовой ОС от виртуализированных систем. В Hyper-V область, в которой функционирует хост-система или виртуальная машина, называется разделом (Partition). Администратор может задать один из таких разделов в качестве базовой единицы для изоляции. Раздел, где выполняется хостовая операционная система, Microsoft именует «родительским» (Parent Partition), а остальные области с виртуальными машинами — «дочерними» (Child Partition, Рисунок 1). Родительский раздел обладает особыми преимуществами: только он имеет право создавать и администрировать дочерние разделы. Кроме того, эта область организует и управляет доступом ко всем ресурсам, не подчиняющимся гипервизору. К примеру, родительский раздел должен решать задачи централизованного управления питанием (Power Management) и событиями при аппаратных сбоях. Еще одна защитная мера заключается в том, что ни одному из разделов не разрешено записывать данные в область гипервизора.
Для гарантированной изоляции разделов и одновременного сокращения уязвимых мест гипервизора разработчики ввели ограничения для программного кода и служб, которые могут функционировать в пределах этого слоя. Так, данный элемент решения для виртуализации не содержит стеков ввода/вывода и даже драйверов устройств. Дочерние разделы взаимодействуют с нижележащим аппаратным обеспечением посредством драйверов родительского раздела. Такой подход типичен для архитектуры с использованием гипервизоров на основе микроядра, однако он имеет свои недостатки: из-за такой структуры родительский раздел подвергается большим рискам и может быть поврежден неправильными или вредоносными драйверами. Далее мы представим варианты решений, позволяющих администратору защитить этот раздел.
АППАРАТНЫЕ ПРЕДПОСЫЛКИ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ
Компания Microsoft установила очень жесткие аппаратные требования к применению Hyper-V, в том числе из соображений безопасности: помимо аппаратной виртуализации, которая должна поддерживаться центральным процессором, в родительском разделе может выполняться только Windows Server 2008 в версии x64 или редакция R2 Release этой системы, доступная исключительно в 64-разрядном варианте. По словам инженеров Microsoft, это ограничение обусловлено тем, что 64-разрядные системы обладают более широкими возможностями управления оперативной памятью и процессами. Кроме того, они не содержат унаследованного кода, так как разрабатывались полностью с нуля в соответствии с методом «жизненный цикл разработки безопасности» (Security Development Lifecycle, SDL [3]).
К числу других предпосылок для применения Hyper-V относится ряд мер по обеспечению безопасности, которые в современных процессорах присутствуют по умолчанию и напрямую используются решением Hyper-V. В их число входят технологии предотвращения выполнения данных (Data Execution Prevention, DEP) и рандомизации адресного пространства (Address Space Layout Randomization, ASLR). Технология DEP предназначена для предотвращения переполнения буфера (Buffer Overrun), когда выполняемый и, как правило, вредоносный программный код записывается напрямую в буфер оперативной памяти. Технология предотвращения таких атак для процессоров AMD именуется No Execute (NX), а ее аналог для Intel — Execute Disable (XD).
Технология ASLR призвана защитить от вредоносного программного обеспечения (Malware): при помощи этого метода между перезапусками системы случайным образом изменяются адреса оперативной памяти, где в момент работы хранятся важные данные. Это позволяет достаточно эффективно препятствовать вредоносной деятельности троянов и червей, которые постоянно запрашивают одни и те же адреса памяти на разных системах.
Таким образом, для того чтобы решение Hyper-V могло воспользоваться своими преимуществами в вопросах безопасности, серверное аппаратное обеспечение должно соответствовать трем важным условиям: иметь средства аппаратной виртуализации, аппаратные функции DEP и ASLR, а также поддерживать 64-разрядные вычисления. Бесплатный инструмент Securable [4] поможет определить, соответствует ли используемое аппаратное обеспечение этим условиям. Кроме того, компания AMD предоставляет для своих процессоров собственное программное решение [5] для проверки необходимых характеристик (Рисунок 2).
Рисунок 2. Использование правильного аппаратного обеспечения повышает безопасность. На рисунке изображен тестовый инструмент компании AMD, позволяющий проверить, обладает ли процессор сервера необходимыми характеристиками. |
ЗАЩИТА РОДИТЕЛЬСКОГО РАЗДЕЛА
Уменьшение площади атаки в случае родительского раздела всегда означает повышение безопасности всего сервера Hyper-V и виртуальных машин. Системному администратору доступны различные способы быстрого и осмысленного достижения этой цели: еще на этапе установки выбрать опцию Server Core, использовать так называемый менеджер авторизации (Authorization Manager, Azman) или активизировать технологию Bitlocker Drive Encryption (BDE).
Если в качестве основы системы виртуализации предполагается использовать вариант Server Core сервера Windows Server 2008, то этот режим необходимо выбрать еще на этапе установки, поскольку последующее преобразование всего сервера Windows в Server Core невозможно. В итоге администратор получает в свое распоряжение сервер без традиционного графического интерфейса Windows, на котором может использовать подмножество серверных ролей, таких как контроллер домена, файловый сервер или сервер Hyper-V. Площадь атаки для такой минимальной версии серверной системы, которой можно управлять только с помощью командной строки или соединения с терминальным сервером, значительно сокращается, что, в свою очередь, повышает безопасность Hyper-V.
Еще один возможный подход предполагает использование автономной версии программного решения Hyper-V. При этом не нужно производить установку сервера виртуализации на систему Windows Server 2008 Standard, Enterprise или Datacenter — в этом случае изначально предоставляется очень «тонкая» платформа виртуализации без графического пользовательского интерфейса. Однако в такой инсталляции нет опций для обеспечения высокой доступности, в частности самовосстанавливающихся кластеров Windows (Windows Failover Clustering, WFC), столь необходимых многим специалистам ИТ в их системных средах.
Каждый администратор должен иметь только те права доступа и привилегии, которые ему действительно требуются для выполнения его непосредственных обязанностей. Из соображений безопасности этот принцип «наименьших возможных привилегий» (Least Privilegs) следует применять и при работе с виртуализированными серверами. Администраторы, отвечающие за функционирование виртуальных машин, должны управлять только выделенными им виртуальными машинами, и ни в коем случае у них не должно быть доступа к родительскому разделу. Права доступа следует соответствующим образом ограничить и контролировать. На сервере Hyper-V для этих целей может использоваться менеджер авторизации (Authorization Manager, Azman) операционной системы, впервые представленный компанией Microsoft в версии Windows Server 2003. Это программное обеспечение позволяет определять и выполнять роли для администраторов виртуальных машин прямо из управляющей консоли Microsoft (Microsoft Management Console, MMC).
В заключение следует упомянуть и о возможности шифрования дисков с помощью технологии Bitlocker Drive Encryption (BDE), по умолчанию включенной в Windows Server 2008, а также версии Windows 7 Ultimate и Enterprise. Для защиты инсталляций Hyper-V администратор может реализовать с помощью BDE эффективное, а главное, прозрачное для системы шифрование физических дисков, на которых будут храниться, к примеру, файлы для виртуальных дисков (Virtual Hard Disks, VHD) и файлы конфигурации. Подробный доклад по этой теме представлен на сайте компании Microsoft [6].
ПОМНИТЬ ОБ АЗАХ
Работая с виртуализированными системами, не надо забывать и о классических «лучших методах» (Best Practices) из сферы безопасности: никогда не следует устанавливать приложения в родительский раздел, если они там не нужны. Кроме того, для администрирования родительского раздела необходимо выделить отдельный физический сетевой интерфейс, трафик через который должен быть обязательно защищен. Для администрирования имеет смысл организовать отдельную виртуальную локальную сеть (Virtual LAN, VLAN) и предусмотреть для нее надежные меры защиты и аутентификации пользователей — такие как смарт-карты для доступа администратора. Ни у одной из виртуальных машин не должно быть доступа к сетевому интерфейсу, посредством которого осуществляется администрирование родительского раздела. И естественно, необходимо позаботиться о том, чтобы операционные системы и приложения, установленные на виртуальных машинах, всегда оснащались антивирусными решениями, всеми обновлениями (Update) и заплатами (Patch) безопасности.
Франк-Михаэль Шледе — шеф-редактор Windows IT Pro (Германия).
[1] Загрузить Virtual Server 2005 R2 можно по ссылке:
[2] Загрузить Hyper-V Server 2008 R2 можно на следующей странице:
[3] Страница Microsoft о технологии SDL (Secure Development Lifecycle):
http://www.microsoft.com/security/sdl/
[4] Тестовый инструмент Securable:
http://www.grc.com/securable.htm
[5] Инструмент AMD для проверки совместимости с Hyper-V:
[6] Техническое описание Windows Server 2008 Hyper-V и Bitlocker Drive Encryption:
Поскольку виртуализация принадлежит к числу общепризнанных и широко распространенных технологий, все чаще появляются специальные методы нападения в расчете на высокую сложность таких решений.
В случае атаки Guest Hopping злоумышленник пытается идентифицировать две виртуальные машины, работающие на одной хост-системе. К примеру, если ему нужны данные из одной виртуальной машины, но достать их не удается, то есть возможность внедриться во вторую виртуальную машину, а затем «перепрыгнуть» в первую. Подобный сценарий уже несколько раз описывался, но до сих пор мало что известно о том, насколько успешными были атаки такого типа. Поставщики решений для виртуализации обычно всячески отрицают возможность неконтролируемого перемещения между виртуальными машинами.
В другом варианте данный сценарий развертывается на уровне гипервизора: если атакующему удастся «подсунуть» гипервизору взломанный сервер и если в сети поражены уже несколько хост-систем, то атакующая программа может переходить от одного хоста виртуальных серверов к другому, причем администраторам очень сложно обнаружить и предотвратить такие атаки.
Еще один метод некоторые специалисты называют «похищением гипервизора» (Hyper Jacking). Он предполагает различные способы установления контроля над гипервизором, а значит, и над всем виртуализированным решением. К примеру, на системе можно установить дополнительный неавторизованный гипервизор (Rogue Hypervisor), чтобы тот активизировался непосредственно на аппаратном обеспечении под настоящим гипервизором. Второй метод заключается в получении прямого контроля над гипервизором, который в конечном итоге может быть установлен на настоящем гипервизоре, где и станет перехватывать все входящие и исходящие данные, включая системные вызовы.
Наиболее известный из подобных методов атак — так называемый Subvirt Virtual Machine Based Root Kit, разработанный в 2006 году в рамках проверки концепции (Proof of Concept) и привлекший тогда широкое внимание. Это программное обеспечение устанавливалось в виде слоя между настоящей операционной системой и нижележащим аппаратным обеспечением. В итоге изначальная операционная система начинала эксплуатироваться в качестве гостевой незаметно для пользователей.