Где границы безопасности контейнеров lxc?

Мой вопрос касается безопасности контейнера LXC.

Если я запускаю несколько контейнеров на своем ящике и предоставляю пользователям отдельный ssh-доступ к их собственному контейнеру, может ли какой-либо из этих контейнеров взломать другие контейнеры на этом ящике или даже хост-компьютер?

Где границы безопасности контейнеров lxc?

8
задан 7 September 2013 в 04:35

1 ответ

Как я видел в , LXC Он хранит информацию о контейнере и (с хранилищем по умолчанию) корневых файловых систем в / var / lib / lxc. Шаблоны создания контейнеров также обычно хранят кэшированную информацию о дистрибутиве в / var / cache / lxc.

Таким образом, как правило, доступ к корневой файловой системе разрешен только администратору, если при их создании не используется неправильная или неправильная конфигурация профилей пользователей.

Но разработчики Ubuntu, возможно, уже пришли к этому, и они предоставили безопасное решение с помощью AppArmor.

LXC поставляется с профилем Apparmor, предназначенным для защиты хоста от случайного злоупотребления привилегиями внутри контейнера. Например, контейнер не сможет записывать в /proc/sysrq-trigger или в большинство /sys файлов.

Профиль usr.bin.lxc-start вводится с помощью команды lxc-start. Этот профиль в основном не позволяет lxc-start монтировать новые файловые системы вне корневой файловой системы контейнера. Перед выполнением инициализации контейнера LXC запрашивает переключение на профиль контейнера. По умолчанию этот профиль является политикой lxc-container-default, которая определена в /etc/apparmor.d/lxc/lxc-default. Этот профиль предотвращает доступ контейнера ко многим опасным путям и монтирует большинство файловых систем.

Если вы обнаружите, что lxc-start терпит неудачу из-за законного доступа, который запрещен его политикой Apparmor, вы можете отключить профиль lxc-start, выполнив:

sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start
sudo ln -s /etc/apparmor.d/usr.bin.lxc-start /etc/apparmor.d/disabled/

Это сделает lxc -start выполнить без ограничений, но продолжать ограничивать сам контейнер. Если вы также хотите отключить ограничение контейнера, то в дополнение к отключению профиля usr.bin.lxc-start необходимо добавить:

lxc.aa_profile = unconfined

в файл конфигурации контейнера. Если вы хотите запустить контейнер в пользовательском профиле, вы можете создать новый профиль в /etc/apparmor.d/lxc/. Его имя должно начинаться с lxc-, чтобы разрешить lxc-start переход к этому профилю. После создания политики загрузите ее, используя:

sudo apparmor_parser -r /etc/apparmor.d/lxc-containers

Профиль будет автоматически загружен после перезагрузки, поскольку он получен из файла /etc/apparmor.d/lxc-containers. Наконец, чтобы контейнер CN использовал этот новый lxc-CN-profile, добавьте следующую строку в его файл конфигурации:

lxc.aa_profile = lxc-CN-profile

lxc-execute не входит в профиль Apparmor, но контейнер, который он порождает, будет ограничен.

0
ответ дан 7 September 2013 в 04:35

Другие вопросы по тегам:

Похожие вопросы: