Що робить systemd-nspawn ще "непридатним для безпечних налаштувань контейнерів"?


21

Про це йдеться на сторінці man для systemd-nspawn

Зауважте, що навіть якщо ці заходи безпеки вжиті systemd-nspawn, не підходить для безпечних налаштувань контейнерів. Багато можливостей захисту можна обійти, і тому в першу чергу корисні, щоб уникнути випадкових змін хост-системи з контейнера. Передбачуване використання цієї програми - це налагодження та тестування, а також створення пакетів, дистрибутивів та програмного забезпечення, що стосується завантаження та управління системами.

Згодом саме це запитання було поставлено у списку розсилки в 2011 році , але, здається, відповідь застаріла.

systemd-nspawn містить код для виконання CLONE_NEWNETза допомогою --private-networkпараметра зараз. Це, мабуть, охоплює AF_UNIXпроблему приватного простору імен, і, мабуть, згадуються CAP_NET_RAWі CAP_NET_BINDпроблеми.

Які проблеми залишаються на даний момент і що робить, наприклад, LXC на додаток до того, що systemd-nspawnзараз можна зробити?


AF_UNIX стає CLONE_NEWNETнапівізольованим: абстрактні сокети - окремі, на основі файлів - об'єднані (якщо між хостом і контейнером немає спільних файлових систем). Це дозволяє зручно запускати мережу заборонених додатків X для конкретного додатка (оскільки Xorg відкриває як абстрактний, так і файлову систему UNIX).
Ві.

Відповіді:


12

LXC трохи краще, оскільки він може запускати контейнери як непривітні користувачі . Це можливо для systemd-nspawn, але лише для сценаріїв, коли вам потрібен лише один користувач (замість кількох), що може бути важко або менш безпечно для багатопроцесових процесів у контейнерних сценаріях. Якщо ви хочете знати, чому docker, lxc та systemd-nspawn по суті не є надійним механізмом захисту, прочитайте це: https://opensource.com/business/14/7/docker-security-selinux . В основному контейнери все ще мають доступ до ядра, і будь-яке ядро ​​використовує контроль над всією машиною. У такому монолітному ядрі, як Linux, експлуатація ядра не рідкість.


3
Ця відповідь невірна. systemd-nspawn підтримує привілеї для відмови від іншого користувача: freedesktop.org/software/systemd/man/systemd-nspawn.html
Девід Тімоті Стросс

Я впевнений, що все, що потрібно, це запустити консоль / оболонку як неприватного користувача, але запустити все інше як root. Ви можете заглянути в це?
CameronNemo

1
Гаразд, я беру назад свою останню заяву. Однак у нього немає належної однорідної / суворої обробки, лише один неприєднаний користувач на контейнер.
CameronNemo

2
Тільки можливість переходу на одного непривілейованого користувача на контейнер замість підтримки повноцінної підшипної / підтяжної обробки не є проблемою безпеки. Це обмеження функції.
Девід Тімоті Стросс

Так, я знаю. Я тільки вказував на різницю.
CameronNemo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.