Появилась задача реализовать шифрованные контейнеры для виртуальной машины на XenServer, да еще и в добавок шифровать их с помощью TrueCrypt. Не найдя никакой полезной информации по теме в сети, решил поделиться заметкой по этому вопросу. На данный момент решение введено в эксплуатацию, работает и не кашляет.

Задачник спрашивает — зачем козе баян?

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

Почему бы тогда не зашифровать данные на виртуальной машине?

Да, почему бы и нет. Но в моем случае пришлось бы шифровать порядка 20 машин и в случае перезагрузки пришлось бы подключать все 20 контейнеров, что не очень-то удобно. Поэтому зашифруем сразу диск и развернем на него все виртуальные машины.

От слов к делу

Перво-наперво нам нужен установленный XenServer. В интернете валом мануалов по этому процессу, поэтому я его пропущу.

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

Процедура подготовки диска стандартная для linux систем и опытным пользователям не доставит хлопот, но на всякий случай напомню:

Разметим диск через:

#: fdisk /dev/sdx

Через mkfs.ext3 создадим файловую систему для раздела.

#: mkfs.ext3 /dev/sdx1

Добавим правила монтирования в fstab и пол дела сделано.

/dev/sda1       /mnt/xen        ext3    errors=remount-ro 0 0

Пришло время устанавливать truecrypt:

#: wget https://download.truecrypt.ch/current/truecrypt-7.1a-linux-console-x64.tar.gz
#: tar -zxvf truecrypt-7.1a-linux-console-x64.tar.gz
#: ./truecrypt-7.1a-setup-console-x64

Все круто, но в xen'е не хватает libfuse.so.2 по умолчанию. Управление гипервизором происходит из виртуальной машины на CentOS'е, поэтому для нас это не большая проблема:

#: yum --enablerepo=base --disablerepo=citrix install fuse-devel fuse 

Теперь все подготовлено для создания шифрованного контейнера:

#: truecrypt -c
Volume type:
 1) Normal
 2) Hidden
Select [1]: 1

Enter volume path: /mnt/xen/dts

Enter volume size (sizeK/size[M]/sizeG): 290G

Encryption algorithm:
 1) AES
 2) Serpent
 3) Twofish
 4) AES-Twofish
 5) AES-Twofish-Serpent
 6) Serpent-AES
 7) Serpent-Twofish-AES
 8) Twofish-Serpent
Select [1]: 1

Hash algorithm:
 1) RIPEMD-160
 2) SHA-512
 3) Whirlpool
Select [1]: 1

Filesystem:
 1) None
 2) FAT
 3) Linux Ext2
 4) Linux Ext3
 5) Linux Ext4
Select [2]: 1

Enter password: 
Re-enter password: 

Enter keyfile path [none]: 

Please type at least 320 randomly chosen characters and then press Enter:

Сам процесс займет какое-то время, все зависит от дисковой подсистемы и мощностей сервера.
У меня ~300Gb контейнер создавался около 2-х часов...

После создания контейнера монтируем его в систему, именно его мы будем пробрасывать в xen:

#: truecrypt --password=*** --filesystem=none --protect-hidden=no /mnt/xen/dts

Если все сделано правильно, то выполнив truecrypt --list мы увидим список подмонтированных контейнеров:

1: /mnt/xen/vms1 /dev/mapper/truecrypt1 - 

Ну и наконец-то сама цель всех наших подготовительных действий — пробрасываем контейнер в xenserver:

#: xe sr-create name-label=VMS shared=false device-config:device=/dev/mapper/truecrypt1 type=lvm sm-config:type=raw virtual-size=280GiB 
#: xe pool-param-set uuid=____ default-SR=____

uuid и default-SR можно узнать через xe pool-list и xe sr-list.

# xe pool-list
uuid ( RO)                : f33ac257-3fcf-1653-7b8f-105c83bf98d1
          name-label ( RW): 
    name-description ( RW): 
              master ( RO): 8362a425-4bef-4712-8864-a7542ba19c80
          default-SR ( RW): 950d80a8-bc98-1879-ba5f-653a01d0ced6

#: xe sr-list
....

uuid ( RO)                : 950d80a8-bc98-1879-ba5f-653a01d0ced6
          name-label ( RW): VMS
    name-description ( RW): 
                host ( RO): xenserver-luzdrjrf
                type ( RO): lvm
        content-type ( RO): 

На этом магия заканчивается и c помощью OpenXenManager или XenCenter спокойно можем создавать новые виртуальные машины в шифрованном контейнере, не боясь за их приватность в случае казусов с физическим рукоприкладством.

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

P.S.: Заметка нацелена на новичков или людей, никогда не решавших подобные задачки.

Комментарии (24)


  1. larrabee
    02.06.2015 16:17
    +3

    А почему не dm-crypt? Поддерживается разработчиками ядра, популярное и надежное решение прямо из коробки.


    1. alexrett Автор
      02.06.2015 16:27

      Ну все достаточно просто — в TrueCrypt'e я уверен, что в случае неожиданности все будет как я ожидаю, а с dm-crypt'ом еще не довелось столкнуться.


      1. amarao
        02.06.2015 16:53
        +2

        А в XenServer'е уверены? Точно-точно? И отлавливать залипшие blktap'ы умеете, и правильно SR_ERROR_47 исправлять, и если что, коррапченный VHD из снапшотиков обратно соберёте?


        1. alexrett Автор
          02.06.2015 17:11

          Ну за ~4 год продакшена на XenServer не сталкивался с дикими проблемами восстановления, обновления или правки каких-либо ошибок.
          Я твердо уверен, что xen НЕ лучший гипервизер, но платить дважды за бесплатность и открытость еще не довелось.

          Поделитесь опытом?


          1. amarao
            02.06.2015 17:44
            +7

            Никогда не давайте инсталляции разрастаться. Никогда не доверяйте SR'ам хранение данных. Никогда не доверяйте xapi вопросы отношения со снапшотами и по возможности избегайте их отсутствия. Не считайте снапшоты за бэкапы. Не делайте больше сотни виртуалок на пул и больше 2-3 хостов на пул. Если что-то идёт не так — обязательно ребутьте всё и вся, не найдетесь на self-healing. Если что-то идёт не так — срочно эвакуируйте данные и не найдейтесь ни на что.

            Читайте сырцы и ужасайтесь.


            1. nerudo
              02.06.2015 18:29
              +1

              Как выдержку из Библии прочитал ;)


  1. script88
    02.06.2015 16:29

    А с производительностью как обстоят дела?


    1. alexrett Автор
      02.06.2015 16:36

      По ощущениям потеря есть конечно же, но не сильная.
      Если интересно, могу провести тест. Меня просто этот вопрос не сильно волновал для данной реализации.


      1. script88
        02.06.2015 16:37

        было бы интересно.


        1. Scratch
          02.06.2015 16:54

          если используется AES-NI, то там скорость 2-3 Гб/с. На IO контейнера влиять вообще не должно, либо минимально


        1. alexrett Автор
          08.06.2015 23:08

          Собственно, товарищ Scratch прав.
          Я не стал проводить каких-то специальных замеров, просто нет времени разворачивать дополнительную ноду для тестов в такой-же конфигурации. Поэтому в сравнении с дев. окружением проект пишет одинаковый объем данных в OrientDB на 20-30 секунд медленнее, читает в среднем на 10-15 секунд медленнее. Сервера при этом примерно одинаковые. На мелкий выборках разницы нет совсем.

          Если есть желание узнать производительность на более интересных для Вас задачах — предлагайте примеры.


  1. amarao
    02.06.2015 16:52
    +2

    Сделать dm-crypt, будет куда как более естественно, и без фантастических прыжков между userspace&kernel по каждому IO.


  1. anton1234
    04.06.2015 17:39

    Шифровать диски не эффективно, говоря красиво — дикий оверхед.
    Шифровать вм не эффективно, говоря красиво — дикий оверхед.
    Ценность представляют данные, вот их и нужно шифровать.
    Далее мое личное мнение и совет тем у кого есть выбор в плане ПО.
    Применительно к конкретной технической части — truecrypt оффициально мертв и больше не поддерживается. Xenserver это во-первых не гипервизор, а во вторых хоть он формально еще жив, но будущего, во всяком случае светлого у него уже нет.

    По воле богов(заказчиков с кучей денег и богатой фантазией) страдал той же фигней с шифрованием дисков под xenserver. И даже написал немного об этом
    http://habrahabr.ru/post/142803/


    1. mobilesfinks
      19.06.2015 10:52

      >Xenserver это во-первых не гипервизор, а во вторых хоть он формально еще жив, но будущего, во всяком случае светлого у него уже нет.
      Можно пояснить? Если есть то пруфы какие то. Я бы поспорил, т.к. это очень даже себе гипервизор. У меня 17 машин под ксеном, и мне просто интересно откуда такая точка зрения.


      1. anton1234
        19.06.2015 23:23

        Гипервизором является xen. А вот xenserver это кастомизированный дистрибутив linux + гипервизор xen + xapi.
        Вероятно, это замечание с моей стороны было излишним. Это мелочи, такие же как то что копиры называют ксероксами.
        Против гипервизора xen не имею ничего против, он вполне себе жив и развивается.
        А вот с xenserver на мой взгляд все несколько иначе. Некоторое время назад это был коммерческий продукт компании Citrix. И они продавали его за немаленькие деньги. В некоторых сетапах он оказывался даже дороже решений от VMWare. Но летом 13 года Citrix неожиданно объявила его опенсорсным и бесплатным, передав его разработку комюнити. Случилось это на версии 6.2. Я попытался найти кто же сейчас разрабатывает новые версии, и насколько я понял это больше не подразделение Citrix. Но к моему удивлению он все же развивается.
        С момента появления dom0 был 32 битным, чем порождал некоторые проблемы в своей работе и не отвечал требованиям времени.
        НО, как оказалось год назад он все же получил 64 битный dom0. И добрался за 2 года с 6.2 до 6.5.
        До версии 6.2 на сайте Citrix можно было найти roadmap на ближайшие год — полтора, с указанием фич которые будут в новых релизах. На данный момент ничего подобного нет.
        А теперь о том почему я считаю его бесперспективным.
        Разработкой Citrix был кастомизированный дистрибутив + собственный api для управления и расширения функционала.
        Дистрибутив ничем не примечательный получился. Начиная с того, что всегда был устаревшим, и далек по актуальности от взятого за основу Centos. Функциональность linux лежавшего в основе была обезображена. Для примера, под корень выделяет всего пара гигабайт. Установка стандартного софта хоть и возможна, но имеет множество сложностей, в особенности в настройке. И весь софт будет безнадежно утерян при обновлении. И на этом же разделе находится лог файл.
        Из личного опыта. На одной ноде пула отвалилось сетевое хранилище iscsi. О том как долго его восстанавливали другая история. Скажу лишь что система полностью зависла из-за нехватки свободного места. В лог файл сыпалось огромное количество сообщений xapi, и он таки смог заполнить весь раздел.
        Имея linux очень хочется использовать весь богатый набор доступного ПО, скриптов. Но citrix постаралась сделать все, чтобы dom0 не трогали.
        Это было бы оправдано предоставь они богатый функционал взамен. И что мы имеем? Страшноватый xencenter, опять таки отставший от времени лет на 5. И xapi. Стабильность его не велика, xe-toolstack-restart, я набивал как мантру. Особенно плохо устроен опять же лог. Когда в xapi что-то не работает, в логе либо ничего либо бессмысленные сообщения общего характера об ошибках памяти.
        И с этим можно было бы мириться, будь у него надежный энтерпрайз функционал. У вас 17 машин в пуле, они используют общие сетевые хранилища, миграцию, балансировку? Если да, и если все у вас хорошо то я за вас рад. Xenserver казался мне боле менее надежным пока я не начал внедрять всю эту круть. И оказалось, что ноды из пула отваливаются перед каждым днем получки. За пару дней до праздников непременно на паре нод отвалится сетевое хранилище. А починить это все можно только переустановкой ноды.
        Я не вижу преимуществ у xenserver перед любым другим дистрибутивом с xen, а вот недостатки я описал.
        С xenserver вполне можно работать, но есть конкуренты с блэкджеком и печеньками.


        1. mobilesfinks
          24.06.2015 13:38

          У меня сложилось другое мнение, но и задачи у меня другие.
          конкуренты с блекджеком и печеньками стоят Денег. Хороших Денег. Когда есть необходимость экономить и получать большую часть плюшек — xenserver то что надо. Эта система самое то для малого бизнеса (мое основное поле деятельности).

          У нас HA не используется. Сетевых хранилищ не подключено. Задача была загрузить сервера по максимуму. Задача выполняется на отлично.
          xe-toolstack-restart выполняется очень редко. бывает подвисает, но это настолько редко, что и не вызывает такого раздражения.

          Дистрибутив ничем не примечательный получился… Имея linux очень хочется использовать весь богатый набор доступного ПО, скриптов.

          Ощущение, что вы плохо знаете xenserver. Это фактически Centos 5. Я использую скрипты, я использую возможности линукс. ЧЯДНТ? Почему у вас не получилось?
          Страшноватый xencenter, опять таки отставший от времени лет на 5.

          Насчёт страшноватого поспорю — мне удобно. Правда вот в версии 6.5 они его хреново переделали, но это уже другой вопрос.
          А вот то, что нет никакой альтернативы под Linux/Mac — вот тут я с вами согласен — отстали на 5 лет.
          Установка стандартного софта хоть и возможна, но имеет множество сложностей, в особенности в настройке. И весь софт будет безнадежно утерян при обновлении. И на этом же разделе находится лог файл.

          вариантов много — это Линукс Карл. Сейчас размер root 4G — мне хватает. А чего туда ставить то? у меня стоят zabbix-agent, puppet и пачка скриптов. ну ещё куча всего по мелочи, типа git и т.п. Всё ставится и места ещё хватает. Недавно даже nginx туда воткнул.
          для того что бы не перенакатывать весь софт после апгрейда есть много систем управления конфигурациями puppet/chef/ansible и т.п. — познакомьтесь с ними, рекомендую.
          У вас 17 машин в пуле, они используют общие сетевые хранилища, миграцию, балансировку?

          несколько пулов. К некоторым подключены NFS хранилища. Миграция проходит без проблем, в т.ч. и между пулами. Балансировка не используется.
          Насчёт лога я с вами согласен, и об этом на форуме многие говорят, но мне лично лог ксена не требовался ещё ни разу.
          И оказалось, что ноды из пула отваливаются перед каждым днем получки.

          Я подозреваю у вас HA активно и проблемы с доступом к хранилищу. У меня подобная ситуация была и после этого я HA перестал использовать — это фактически был тестовый запуск, я уяснил, что в моём случае HA не требуется.
          За пару дней до праздников непременно на паре нод отвалится сетевое хранилище.

          Проблемы с сетью?
          В общем, я думаю, я понял ваш взгляд. Я считаю, что вы немного преувеличиваете нестабильность xenserver, а насчёт его будущего ошибаетесь. Его самая сильная сторона бесплатность и linux в базе дистрибутива и он работает как линукс, а не чёрте что как у esxi. Вот у esxi реально функционал урезан по самые помидоры. следующая версия xenserver выйдет на базе CentOS 7 x64, это мне известно из общения на форуме, так что там будет уже функционал CentOS 7.
          Для полноты картины хотел уточнить: Как давно вы пользовались XenServer? Какими версиями? Патчи накатывали?


          1. anton1234
            24.06.2015 14:55

            Рут в 4 гб, который вы не сможете расширить. Вы не сможете вынести логи и темп файлы, это потенциальный источник проблем. Не невозможно, но гораздо сложнее сделать для него софтовый рэйд и зашифровать сам рут. Сам дистр устаревший.
            Я использовал xen начиная с версии 4.2 и заканчивая 6.2. Все патчилось и планомерно обновлялось до актуальных версий. За излишнюю поспешность я однажды поплатился, когда они выкатили крайне сырые xentools.
            Мой самый печальный опыт с xenserver это никак не решившаяся проблема с отключающимся iscsi хранилищем. Одна из нод прекрасно работала, зато вторая стоявшая в той же стойке не могла подключиться. Xenserver говорил «что-то пошло не так», в логах каша. На форуме единственный совет, переставлять ноду. Причем это повторялось несколько раз и на обеих нодах по очереди.
            Если нужна простая виртуализация то выбор и конкуренция очень большая. Я не вижу преимуществ у xenserver перед тем же Centos с установленным xen или kvm. Зато там нет бесполезной прослойки в виде xapi, там нормальные логи и любые проблемы с вероятностью 99% уже обсуждались на форумах. Hyper-v бесплатен, для него большой выбор средств управления, как платных так и бесплатных и могучий powershell!
            Xenserver вполне может быть стабильным. Но если у вас все таки появилась проблема, то ее решение может занять больше времени чем вы себе можете позволить.
            А будущее его мне не понятно. Во времена его коммерческой разработки он позиционировался как конкурент Vmware, который на тот момент был почти монополистом. Hyper-v еще ходил в бета версиях и ни с кем особо не конкурировал. Но эти продукты сделали большой скачок за последние годы, в отличие от xenserver. Появились такие проекты как proxmox. Есть openstack. Большинство дистрибутивов linux позволяют в несколько кликов настроить платформу виртуализации.


            1. mobilesfinks
              24.06.2015 15:41

              Не невозможно, но гораздо сложнее сделать для него софтовый рэйд и зашифровать сам рут.

              У меня все машины на софтовом рейде ))))) — элементарно!
              зачем выносить логи и temp файлы? Это же линукс, вот и пользуйтесь его возможностями. вы ставите Xenserver на диск и он себе отрезает всего 4+4 G — нарежте ещё сколько надо да добавьте в fstab. Да, это одно лишнее движение при сетапе. Но у меня рейд скриптом собирается в два этапа. Руками это ой как долго, а скриптом — 5-минут. Так что это тоже скриптуется. Это же Линукс детка! ))

              Hyper-v бесплатен
              ну то что он бесплатен нельзя сомневаться. А как насчёт лицензии на сам сервер мелкомягких? ))

              Вы пробовали развернуть виртуализацию из коробки на линукс? Когда я пришёл на текущее место работы, то тут была развёрнута виртуализация KVM на CentOS c libvirt. Я пробовал поставить opennebula, ещё парочку каких то opensource дистров — велосипед. Во первых настройка в базе неполная и нужно очень сильно постараться, что бы докрутить, во вторых я банально так и не смог запихнуть работающие машины в эти сборки. Сейчас может смогу, но тогда это занимало время, которого не было.
              У xenserver нет таких болячек. Он работает. Из коробки. Остальное рюшечки. Всё что нужно я могу на нём настроить. Единственная проблема — настройка сети — как то хитро всё это настраивается, пришлось добавлять на каждый хост по софтовому шлюзу. В остальном всё отлично.
              Ну как я выше писал — всё зависит от задач. Какой толк в бесплатности Hyper-V, когда сама ось на котором он запускается стоит немаленьких денег? Это просто пиар, и не более. Я с 2009 года использую xenserver — стабильно, работает и работает. Озвученные проблемы со scsi могут быть и из-за драйверов и из-за самого оборудования.
              Причем это повторялось несколько раз и на обеих нодах по очереди.

              проблема с scsi контроллером?
              могучий powershell!
              я на администрировании windows серверов с 2008 года и да, приходилось пользоваться коммандной строкой. Но вот powershell мне показался монстром и убожеством, особенно после знакомства с bash.
              Так что на вкус и цвет все фломастеры разные.
              Я сознательно ушёл от администрирования продукта мелкомягких, т.к. это стал какой то треш и последние версии серверной оси так же вызывают лёгкий нокаут при первом рассмотрении. Но это всё моё ИМХО.

              Я так и не понял вы включали HA (High Avalability) на двух нодах?


              1. anton1234
                24.06.2015 16:03

                HA работало пока были доступно общее хранилище. Моя проблема была в том что периодически одна из нод отказывалась подключать общее хранилище подключаемое по iscsi. При этом само iscsi подключение работало. Переустановка ноды решала проблему на время, а потом все по новой. С nfs таких проблем не было.
                У нас диалог уже больше в философию уходит. Мнение друг друга мы примерно поняли.
                Но хотелось бы отметить, что hyper-v server совершенно бесплатен. Не нужна лицензия на Windows Server. За бесплатно вы получаете Windows Server без GUI с доступной ролью Hyper-v в том числе:
                «including the new scalability, Shared Nothing Live Migration, virtual fibre channel, live storage move, RemoteFX, failover clustering, and more.»


                1. mobilesfinks
                  24.06.2015 17:50

                  Я так и не понял вы включали HA (High Avalability) на двух нодах?

                  тут ещё главные слова «на ДВУХ?». Это же HA, оно идёт с трёх и более.


  1. Paulus
    06.06.2015 03:03

    TrueCrypt имел внезапные проблемы, которые по-прежнему видны, например, тут truecrypt.sourceforge.net
    Так безопасен ли он?


    1. alexrett Автор
      06.06.2015 14:41

      Ну на самом деле все не так плохо.
      Да и проект находится в другом месте. На сколько мне известно, все остальное не совсем то, чем было ранее.


  1. Paulus
    08.06.2015 00:02

    >Ну на самом деле все не так плохо.
    >Да и проект находится в другом месте. На сколько мне известно, все остальное не совсем то, чем было ранее.

    Да уж хотелось бы верить, но пока по тем же ссылка пишут…
    Truecrypt has a bad security implementation to reduce the strength of the encryption ordered by NSA and FBI, as they have problems to unencrypt suspects data. So, i dont recommend truecrypt. It do not have a visible backdoor, it has a bug in the implementation of the security algorythm. Stay alert and do not read this fake article audit which is FAKE.

    Кому верить?


    1. alexrett Автор
      08.06.2015 23:01

      Ну Вы же понимаете — абсолютной защиты нет. Во всяком случае трукрипт, кроме как такими изречениями, себя еще не скомпрометировал. Да и на моей практике в форс-мажорных обстоятельств не дал в себе разочароваться (ну или тот кого нельзя называть не очень то и заморачивался).
      PS: Я не в коем случае не претендую на звание супер специалиста по криптографии или защите данных, поэтому если я в чем-то кардинально не прав — буду рад, если поправите.