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

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

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

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

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

решение1

Вы не написали, почему выбрали 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 - хорошая идея (по моему мнению, это "must have" в таких обстоятельствах)
  • Установите строгие правила cgroups, чтобы ваши гости не заморозили ваш хост и не повлияли на другие контейнеры.
  • Я бы предпочел использовать контейнеры на основе LVM — это всегда еще один уровень «безопасности».
  • Подумайте о сетевом решении и архитектуре. Должны ли эти контейнеры общаться друг с другом?

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

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

решение2

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

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

Связанный контент