The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Представлен virt-sandbox, инструмент для обеспечения изолированного запуска приложений

19.01.2012 14:25

Даниэль Беррандж (Daniel Berrange), работающий в компании Red Hat над развитием средств виртуализации, представил первый публичный выпуск пакета libvirt-sandbox, позволяющего организовать выполнение произвольных пользовательских приложений в изолированном окружении, построенном с использованием libvirt. В рамках libvirt-sandbox подготовлен API, расширяющий возможности libvirt в плане изолированного запуска отдельных приложений, и специальная сервисная утилита virt-sandbox.

Несколько лет назад компания Red Hat подготовила утилиту sandbox, которая позволяет организовать безопасное выполнение не вызывающих доверия программ с обеспечением изоляции при помощи SELinux, что накладывало определённые ограничения на функциональность sandbox. Утилита virt-sandbox существенно отличается от своего предшественника тем, что использует для изоляции полноценные виртуальные машины и не ограничивается только запуском подозрительных программ, а позиционируется также для более безопасного выполнения программ в повседневной практике и для организации быстрого запуска виртуальных машин для различных сетевых приложений. При использовании virt-sandbox требующие изоляции приложения запускаются напрямую из файловой системы базового хоста, без предварительной установки, сборки и настройки начинки гостевой системы. В настоящее время virt-sandbox поддерживает изоляцию с использованием гипервизора KVM и изолированных контейнеров LXC, но теоретически могут быть использованы любые системы виртуализации, поддерживаемые в libvirt (Xen, VirtualBox и т.п.).

При использовании системы виртуализации KVM возникает проблема с необходимостью формирования полного программного окружения при выполнении каждого приложения, запускаемого в virt-sandbox. Разработчики virt-sandbox нашли простой выход: при каждом запуске на лету создаётся минимальный загрузочный initrd-образ, содержащий специально созданную программу инициализации. После того как данный образ получит управление, программа инициализации загружает модуль ядра virtio-9p и монтирует корневую ФС текущей базовой системы в режиме только для чтения. Таким образом для изолированного приложения формируется гостевое окружение, полностью аналогичное по своему составу базовой системе, но не допускающее внесения изменений. После монтирования ФС производится запуск указанного приложения и перенаправление ввода/вывода на хост-систему. После завершения работы программы, виртуальная машина автоматические завершает своё выполнение. На формирование гостевой системы тратится всего несколько секунд, например, запуск /bin/false под управлением virt-sandbox занимает около 4 секунд (после оптимизации время планируется сократить до 2 секунд).

Подготовка специального API для изолированного запуска отдельных приложений сулит интересные возможности для разработчиков сторонних систем. Например, программист может определить желаемые характеристики изолированного окружения, указав какую программу следует выполнить, какие части ФС смонтировать и какие использовать параметры сети. После вызова соответствующей функции libvirt-sandbox на базе указанной конфигурации можно получить на выходе XML-конфигурацию libvirt для формирования гостевой системы, соответствующей заданным характеристикам и адаптированной для конкретной системы виртуализации.

В настоящее время полноценно работают только консольные приложения. Реализована начальная поддержка запуска GUI-программ, но она ещё требует значительной доработки. Среди планов на будущее отмечается: адаптация virt-viewer и использование SPICE/VNC для организации запуска в sandbox-режиме графических приложений; создание надлежащих политик SELinux для доступа к базовой файловой системе в режиме только для чтения (в настоящее время virt-sandbox работает только в permissive-режиме SELinux); подготовка утилиты для автоматического формирования типовых окружений для различных сервисов, например, для обеспечения запуска изолированной копии apache; задействование возможностей libvirt по формированию межсетевого экрана для дополнительной фильтрации сетевого трафика от изолированных приложений.

Готовые rpm-пакеты с libvirt-sandbox подготовлены для Fedora Linux и доступны в репозитории rawhide. Планируется, что новая система изоляции будет включена в состав релиза Fedora 17.

  1. Главная ссылка к новости (http://berrange.com/posts/2012...)
  2. OpenNews: В SELinux sandbox появилась поддержка изолированного запуска GUI-приложений
  3. OpenNews: Началось бета-тестирование безопасного Linux-дистрибутива Qubes OS
  4. OpenNews: Вторая бета-версия безопасной операционной системы Qubes OS, созданной на базе Linux и Xen
  5. OpenNews: isolate - утилита для изолированного выполнения подозрительных приложений
  6. OpenNews: В безопасной ОС Qubes будет добавлена поддержка одноразовых изолированных окружений
Лицензия: CC-BY
Тип: Программы
Ключевые слова: sandbox, kvm, lxc, virtual, chroot, limit
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (35) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.1, Аноним (-), 18:12, 19/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Класс!

    >Подготовка специально API для изолированного запуска отдельных приложений сулит интересные возможности для разработчиков сторонних систем.

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

     
     
  • 2.2, Боря (?), 18:16, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    См. https://igurublog.wordpress.com/downloads/script-sandfox/
     
  • 2.3, Аноним (-), 18:23, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Например впихать туда веб-браузер и/или все сетевые приложения которые выходят в глобальные сети.

    Это делается через использование network namespaces. Хоть каждому приложению по собственному сетевому стеку.

     
  • 2.30, Аноним (-), 13:41, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Зачем вам браузер который не может сохранять никакую инфу на диск? Да и зачем такие изолированные приложения нужны?
    Для каждой программы должен создаваться каталог в специальном месте, куда будут перенаправляться все попытки программы писать. Если в этот каталог можно легко зайти с хост системы, то удобство не теряется.
     
     
  • 3.66, vi (?), 23:39, 21/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Зачем вам браузер который не может сохранять никакую инфу на диск? Да
    > и зачем такие изолированные приложения нужны?
    > Для каждой программы должен создаваться каталог в специальном месте, куда будут перенаправляться
    > все попытки программы писать. Если в этот каталог можно легко зайти
    > с хост системы, то удобство не теряется.

    Уважаемый Аноним, некоторые мысли озвученные Вами, очень интересны для меня.
    Например:
    > Для каждой программы должен создаваться каталог в специальном месте, куда будут перенаправляться
    > все попытки программы писать. Если в этот каталог можно легко зайти
    > с хост системы, то удобство не теряется.

    Но тут Вы (как мне кажется) перемешали  понятия "каталог"  и "хост системы".
    Пиво в моей голове вскипело, и я решил отписать :(
    А вообще, спасибо, за интересные мысли, которые возникли в моей голове после прочтения Вашего комента (жаль, что что Вы "Аноним", но это ничего, как мне кажется, Вы все же реально существуете!).
    Кипение пива отнимает энергию, плюс быстее испаряются фракции "spiritus vini", так что на сегодня достаочно переписки.
    И да, обидно от Вас слышать: "> и зачем такие изолированные приложения нужны?"
    Если бы Вы добавыли пару слов к этой мысли (на мой взгляд) мне бы было легче, а так пиво кипит ;)

    Спасибо.

     

  • 1.4, Аноним (-), 18:46, 19/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Джоанне Рутковской посвещается :))
     
     
  • 2.18, Аноним (-), 22:27, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Джоанне Рутковской посвещается :))

    Представленная технология является некой пародией на Qubes OS. Потому что технологии изоляции сабжа на порядок легче взламываются, чем ее творение.

     

  • 1.5, Аноним (-), 19:04, 19/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    > монтирует корневую ФС текущей базовой системы в режиме только для чтения

    Т. е. при запуске "подозрительного" ПО оно вполне сможет украсть данные пользователя: сохранённые в приложениях пароли, куки, и т.д. И прекрасно передать это "наружу".

     
     
  • 2.10, Crazy Alex (??), 20:42, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> монтирует корневую ФС текущей базовой системы в режиме только для чтения
    > Т. е. при запуске "подозрительного" ПО оно вполне сможет украсть данные пользователя:
    > сохранённые в приложениях пароли, куки, и т.д. И прекрасно передать это
    > "наружу".

    Тогда ваш случай - это отдельный пользователь с отдельным хомяком, от которого запускать недоверенные приложения, а совсем не эта штука (польза которой, впрочем, лично для меня сомнительна). Только это натуральная паранойя.

     
     
  • 3.24, Аноним (-), 12:13, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Тогда ваш случай - это отдельный пользователь с отдельным хомяком,

    Есть риск что недоверяемое приложение прогрейдится до рута и пошарится где-то еще, например. В этом плане ничего лучше виртуалок не придумано.

     
     
  • 4.26, Ваня (??), 12:55, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    "Виртуалки" лучше запускать рекурсивно, т.к. есть шанс что приложение доберётся до первой хост-системы и увидит другие виртуалки - а тут облом, других нет, виртуалка запущена в виртуалке.

    Если рекурсивность будет больше 300, и на каждой будут стоять разные ОС и программы виртуализации - тогда троян можно будет тупо вычислять по размеру.

    Хмм... Тоже вариант защиты, и куда получше вашего.

     
     
  • 5.41, Аноним (-), 17:16, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > "Виртуалки" лучше запускать рекурсивно, т.к. есть шанс что приложение доберётся до первой
    > хост-системы и увидит другие виртуалки - а тут облом, других нет,
    > виртуалка запущена в виртуалке.
    > Если рекурсивность будет больше 300, и на каждой будут стоять разные ОС
    > и программы виртуализации - тогда троян можно будет тупо вычислять по
    > размеру.
    > Хмм... Тоже вариант защиты, и куда получше вашего.

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

     
     
  • 6.44, Ваня (??), 17:22, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Возможно вы не в курсе, но антивирусы настраиваются. Для повышения эффективности можно приобрести "железный" антивирус с максимальными настройками, не отнимающий выч.ресурсов.
     
     
  • 7.49, Аноним (-), 17:43, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Возможно вы не в курсе, но антивирусы настраиваются.

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

    > Для повышения эффективности можно приобрести "железный" антивирус с максимальными настройками, не отнимающий выч.ресурсов.

    Лучше на эти деньги прокачать основное железо, и поставить туда менее ресурсоемкое решение, типа вложенных виртуалок. Огромный выигрыш по ресурсам при тех же расходах.

     
  • 7.56, Аноним (-), 02:26, 21/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Возможно вы не в курсе, но антивирусы настраиваются. Для повышения эффективности можно
    > приобрести "железный" антивирус с максимальными настройками, не отнимающий выч.ресурсов.

    То-то сами антивирусники для изучения вирусов используют ... виртуалки :)


     
  • 2.16, Аноним (-), 22:25, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Т. е. при запуске "подозрительного" ПО оно вполне сможет украсть данные пользователя: сохранённые в приложениях пароли, куки, и т.д. И прекрасно передать это "наружу".

    Технология filesystem namespaces, на которой основан сабж, позволяет сделать полностью недоступными (для подозреваемого приложения и его потомков) любые выбранные каталоги, например, /home и /etc. Достаточно нескольких строк кода.

     
  • 2.20, Аноним (-), 22:34, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > И прекрасно передать это "наружу".

    Кстати, возможность полностью отрезать подозрительному приложению сеть (оставив только lo) тоже делается в пару строчек кода. Но знают об этом лишь несколько человек: Торвальдс, Поттеринг, и разработчики LXC.

     
     
  • 3.22, anon8 (ok), 10:03, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • –5 +/
    > Но знают об этом лишь несколько человек: Торвальдс, Поттеринг…

    Поттеринг может об этом и знает, но обязательно напишет свой велосипед. Фатальный недостаток же.

     
     
  • 4.33, Аноним (-), 15:34, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Поттеринг может об этом и знает, но обязательно напишет свой велосипед. Фатальный недостаток же.

    "Велосипеды" Поттеринга как раз и дают юзерам возможность воспользоваться фичами ядра.
    Без него - фича в ядре есть, но воспользоваться ей нельзя, потому что юзерспейс о ней не знает.

     
     
  • 5.35, Аноним (-), 15:45, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Без него - фича в ядре есть, но воспользоваться ей нельзя, потому что юзерспейс о ней не знает.

    А все потому, что это юзерспейс написан тридцать лет назад, и на этом прогресс для него остановился.

    Впрочем, некоторые ортодоксы считают, что новый софт не нyжен. Пусть в ядре будет 100500 новых фич - убедим себя, что они нам не требуются. Правда, нафига тогда вообще тащить себе весь этот динамичный и развивающийся (фу, мерзость!) GNU/Linux? Есть же прекрасная System V, в которой все это нормально работает.

     
     
  • 6.64, Андрей (??), 04:36, 21/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > юзерспейс написан тридцать лет назад

    А чем же разработчики тестируют эти новые фичи?

     
     
  • 7.68, Аноним (-), 16:57, 22/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> юзерспейс написан тридцать лет назад
    > А чем же разработчики тестируют эти новые фичи?

    Примитивными сишными прогами из одного syscallа.

     
  • 5.52, anon8 (ok), 19:03, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    это какими же?
     
     
  • 6.67, Аноним (-), 16:56, 22/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    cgroups, namespaces, например.
     
  • 5.69, Аноним (-), 17:03, 22/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, к вопросу о Поттеринге и фичах ядра http www 0pointer de blog projects... текст свёрнут, показать
     
  • 2.23, Аноннимнез (?), 11:06, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Ну таки да. Есть такой боян про то как юзер под вайном запустил трояна на посмотреть. А троян упер пароль его аськи, которую он в этом-же вайне в квипе юзал.
     

  • 1.7, Аноним (-), 20:10, 19/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    /home кладётся в отдельный партишн, не?
     
     
  • 2.12, Аноним (-), 20:55, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > /home кладётся в отдельный партишн, не?

    не похоже чтоб помогло.
    Другое дело будет ли там сеть сразу

     
  • 2.19, Аноним (-), 22:29, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > /home кладётся в отдельный партишн, не?

    Необязательно. Это же Linux. Возможность блокировки выбранных каталогов для заданных процессов не зависит от разбивки на разделы.

     
     
  • 3.21, Аноним (-), 09:05, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Хвост крутит собакой.

    //Возможность блокировки выбранных каталогов ...

    Доступность выбранных каталогов ...


    Похоже что вы не осилили суть *nix.

     
     
  • 4.25, Аноним (-), 12:16, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Хвост крутит собакой.

    "У нас этого нет, поэтому это не нyжно"?

     
     
  • 5.37, Аноним (-), 15:51, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А вы не осилили метафору.
     
     
  • 6.57, Аноним (-), 02:28, 21/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > А вы не осилили метафору.

    Не вижу чем виртуализация пространства имен, сети и прочего так уж клещится с unix-овской идеологией. Как максимум расширяет ее и дополняет, не более. Если ваша древность так не умеет - так мы в этом не виноваты.

     
  • 4.40, Аноним (-), 17:15, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Доступность выбранных каталогов ...

    Каталоги по умолчанию доступны (если не считать ортогональных технологий, таких, как права доступа, ACL и MAC). Для того, чтобы сделать их read-only или вообще недоступными, нужно совершить дополнительные телодвижения.

    > Похоже что вы не осилили суть *nix.

    Похоже, что вы не поняли, о чем вообще речь.

     

  • 1.70, arisu (ok), 00:35, 23/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    я джва года ждал такую фичу!

    а если серьёзно — здорово, молодцы. не поттерингом единым.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру