Добрый день. Начал знакомиться с Proxmox, выбор пал на использование LXC контейнеров вместо полноценных ВМ, т.к экономия ресурсов, что огромный плюс. Изучал информацию по Proxmox и контейнерам в сети и наткнулся на изречения, что LXC никуда не годится, т.к они - потенциальная брешь в безопасности и лучше всегда ВМ использовать. Но подбробных объяснений так и не нашел. Уважаемые господа, можете, пожалуйста, внести ясность в картину почему ВМ лучше, чем LXC в плане безопасности ? И может с современной реализацией LXC не так все плохо как в 2016 году, т.к инфа была от 2016 года ?
Нормально всё с lxc, не парься. Он настолько же безопасен насколько и докер(по сути)
ВМ конечно имеет изоляцию от хоста намного лучше, но так же имеет и кучу накладных расходов.
Я лично давно перелез на lxc, вместо ВМ, по крайней мере в тех местах, где надо разделись сервисы 1 клиента.
google: (lxc or lxd) (breakout or escape) container, первая же ссылка с описанием и примерами готовых утилит
docker основан на lxd с теми же уязвимостями.
Эти технологии не подходят для запуска злонамеренного кода, только доверенного.
lxc используется для удобной изоляции конфигураций различных версий пакетов из зависимостей приложений. А так же изоляции от выбранной ОС (внутри она как бы своя), например какой-нибудь snap/flatpack пользуются той же основой.
rPman, это касается привелигированных контейнеров. При каких обстоятельствах вы используете этот формат? Напомню, вопрос про LXC, а не Docker. И да, разница есть.
Sanes, нет, речь не о уязвимостях. Речь о том что lxc это изоляция другого уровня, на уровне приложений.
Пример - в linux с издавних пор существовала утилита chroot, ее единственная задача - подмена системных вызовов доступа к файлам с целью обмануть запускаемое приложение и подсунуть корневую файловую систему, отличающуюся от основной. Т.е. единственное что она делает, это удаляет начало пути ко всем файлам, т.е. если указать ей запустить программу с новым root /mnt/disk то /mnt/disk/usr/bin/... становится /usr/bin/... и эта простая подмена дает огромные возможности по изоляции приложений в своей песочнице, но так как многим приложениям требуется доступ к служебным файловым системам /proc и /sys, для них эти файловые системы монтировались как копия (mount bind), т.е. приложение, запущенное из chroot имеет доступ к хост системе /proc и /sys а при наличии root доступа (уровень привилегий с помощью chroot не менялся) получается доступ к буквально любому процессу (в /proc/$pid) и оперативной памяти (/proc/mem)
lxc это развитие этого подхода, на основе cgroup, который позволяет более точно определить права доступа, но все еще не полностью (на сколько я понял тут больше функционала по настройке сети). Я читал что возможна такая конфигурация lxc контейнера, что возможности выйти наружу не будет, но и приложения внутри контейнера будут иметь меньше привилегий (условный root там уже не получишь)
Нормально там всё с безопасностью. Конкретно у LXD/Incus. Другое дело, что там есть ряд ограничений, при которых может что-то не работать в отличии от железной виртуализации.
Чистый LXC нет смысла использовать, это как ядро Linux для энтузиастов. Гораздо интересней LXD/Incus. Бонусом получите возможность запускать Qemu VM.