Контейнеры LXC как среда песочницы

9

В настоящее время я начинаю проект по оценке ненадежных программ (студенческих заданий) в безопасной среде песочницы. Основная идея заключается в создании веб-приложения для GlassFish и Java-оболочки вокруг lxc-utils для управления контейнерами LXC. У него будет очередь ожидающих программ, а оболочка Java будет поддерживать фиксированное число (пул) контейнеров LXC, назначая каждой программе один (неиспользуемый) контейнер.

Каждый контейнер должен быть защищен с помощью SELinux для защиты хост-системы.

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

ехр
источник

Ответы:

6

Вы не написали, почему выбрали LXC, так как это не самое безопасное решение для виртуализации. Я большой пользователь KVM / XEN, а также LXC, и я могу сказать одно: когда дело доходит до безопасности, я никогда не использую контейнеры Linux (неважно, LXC / OpenVZ / VServer). С KVM / XEN это проще (и надежнее).

Если речь идет о требованиях к производительности или оборудованию, тогда хорошо - вы можете попробовать с LXC, но есть некоторые правила, которые вы должны соблюдать:

  • libvirt обеспечивает строгое ограничение контейнеров при использовании SELinux (благодаря LXC_driver) - хотя не уверен, что это только случай RHEL / Centos / Fedora (я не так часто использую Ubuntu / Debian) https://www.redhat.com/archives /libvir-list/2012-January/msg01006.html - поэтому использование SELinux - хорошая идея (на мой взгляд, в таких обстоятельствах это "должно быть")
  • Установите строгие правила cgroups, чтобы Ваши гости не заставляли вашего хоста зависать и не влияли на другие контейнеры.
  • Я бы предпочел использовать контейнеры на основе LVM - это всегда еще один уровень «безопасности»
  • Подумайте о сетевом решении и архитектуре. Эти контейнеры должны общаться друг с другом?

Начните с чтения этого - оно довольно старое, но все же - там много знаний. А также - встретить пользовательские пространства имен

И после всего этого подумайте еще раз - у вас действительно так много времени, чтобы поиграть с безопасностью LXC? KVM просто намного проще ...

Мацей Ласык
источник
Прежде всего, спасибо за ответ. Я выбираю LXC, потому что мне нужно что-то легкое, и оно будет работать внутри KVM. Можно ли запустить KVM внутри KVM?
EXPI
1

Для запуска ненадежных программ пространства имен Linux по-прежнему являются лучшим решением. Его проще настроить, чем KVM, и он требует меньше ресурсов. Вы можете попробовать LXC, однако LXC был построен как более универсальная песочница для запуска полных образов дистрибутива Linux. На ум приходят две другие песочницы пространства имен Linux:

  • Песочница Google Chrome , распространяемая в настоящее время вместе с Google Chrome / Chromium
  • Firejail , песочница безопасности, созданная для запуска Mozilla Firerfox и любой другой программы с графическим интерфейсом.
netblue
источник