3

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

Я пытаюсь максимально защитить сервер Gentoo. Для этого я думаю использовать LXC, возможно, в сочетании с KVM, чтобы изолировать как можно больше сетевых сервисов.

Я прочитал страницу руководства по LXC unix, но мне все еще неясно, как настроены контейнеры Linux. Просматривая в Интернете дополнительную информацию, я нашел только документацию по запуску всей системы в контейнере Linux, что я не хотел бы делать.

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

Например, я хотел бы изолировать службу ntpd , насколько я знаю, что я могу синхронизировать системные часы, я не могу запустить его внутри виртуальной машины. Но я мог бы запустить его внутри chroot или, я полагаю, мог бы запустить его внутри контейнера Linux для лучшей изоляции и безопасности.
Для этого мне необходимо:

  1. Определите, какие файлы требуются ntpd при настройке chroot-тюрьмы.
  2. Вот где я не знаю, что делать и как: конфигурация LXC, шаблон, куда поместить мои файлы для настройки контейнера и т.д.
  3. Запустите его с помощью lxc-execute

Это возможно? Какими будут различные шаги для создания, запуска и управления таким контейнером?

1 ответ1

4

Исторически сложилось так, что в LXC было много проблем безопасности, которые мешают ему быть по-настоящему изолированным, но усовершенствования инфраструктуры основного ядра Linux разрешили большинство (если не все) этих проблем.

Смотрите здесь для обзора проблем безопасности / улучшений, которые наблюдались в последующих выпусках Ubuntu, включающих LXC.

Я нашел эту документацию Oracle Unbreakable Enterprise Kernel особенно полезной для объяснения того, как делать контейнеры уровня приложения.

Из документов:

Контейнеры приложений не создаются с помощью шаблонных скриптов. Вместо этого контейнер приложения монтирует всю или часть корневой файловой системы хоста, чтобы обеспечить доступ к двоичным файлам и библиотекам, которые требуются приложению. Вы используете команду lxc-execute для вызова lxc-init (урезанная версия /sbin /init) в контейнере. lxc-init монтирует все необходимые каталоги, такие как /proc, /dev /shm и /dev /mqueue, выполняет указанную прикладную программу и затем ожидает ее завершения. При выходе из приложения экземпляр контейнера перестает существовать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .