Является ли запуск сервера NFS в кластере Kubernetes хорошей идеей или это ворота для хакеров
Одним из многочисленных преимуществ сетевой файловой системы является ее способность выполнять многократное чтение-запись.
И как и все в наши дни, NFS – это просто еще одна служба, которую можно запустить в своем кластере Kubernetes.
Однако является ли сервер NFS подходящей службой для запуска в контейнерной среде?NF
NFS может показаться достаточно невинным для запуска, как и многие другие типы сервисов.
Сам CNCF даже продвигает эту идею через учебные пособия, доступные в их собственной документации, поэтому можно предположить, что такая практика приемлема.
Чтобы понять последствия для безопасности при запуске такой службы, как NFS, в кластере, необходимо понять, как работает сервер NFS.
Побег из контейнера
Прежде чем ответить на вопрос, безопасно ли использовать NFS в вашем кластере, необходимо понять, что такое побег из контейнера и что для этого требуется.
Прорыв контейнера – это святой Грааль любого эксплуатируемого контейнера.
Он позволяет злоумышленнику получить доступ к хосту, возможно, ко всем другим рабочим нагрузкам, запущенным на кластере.
Это также может позволить злоумышленнику скомпрометировать другие хосты.
Ранее мы подробно рассмотрели этот момент:
Побег из контейнера Kubernetes с помощью монтирования HostPath | (itsecforu.ru)
Для того чтобы произошел побег, должно быть верно следующее:
- Контейнер, запущенный от имени root (UID 0) или с небезопасными возможностями ядра.
- Контейнер, работающий под привилегированными правами.
В контейнерах используются пространства имен как средство изоляции процессов друг от друга.
Основной целью является обеспечение безопасности, которая не позволяет процессам конфликтовать друг с другом.
Хотя, да, это действительно обеспечивает некоторый уровень защиты, функция ядра пространства имен не была разработана с этой целью.
Запуск NFS
Для работы NFS-сервера требуются привилегии root, и причин тому множество.
Во-первых, сервер NFS должен иметь возможность привязки к сетевому порту, чтобы клиенты могли подключаться.
Для привязки к портам требуются привилегии root.
Во-вторых, для размещения сетевого хранилища используется ряд системных вызовов, которые также требуют привилегий root.
Возможности ядра
Предоставление кому-либо или службе полных привилегий root часто считается очень, очень плохой идеей.
И до появления возможностей ядра в 2000-х годах это было обычной практикой, когда процессу требовались повышенные привилегии.
Сегодня мы можем выделить отдельные привилегии с помощью возможностей ядра, чтобы предоставить.
Root
NFS должен запускаться от имени root или пользователя с привилегиями root.
Собираем все вместе
Взлом контейнеров – это святой грааль взлома любых организаций.
При выполнении этой задачи злоумышленник получает
- Родительский процесс UID 0 (Root)
- Привилегии root
см. также:
- 🐳 Запуск сервера FreeIPA в контейнерах Docker/Podman
- ☸️ Как выполнять команды внутри контейнеров и подов Kubernetes
- 🐳 Docker, containerd и CRI-O: Углубленное сравнение
- ☸️ Внедрили Kubernetes? Попробуйте эти 5 инструментов для аудита прав Rbac
- ☸️ Ломаем и чиним Kubernetes
- 🐳 Как использовать Docker для проверки безопасности ПО
- ☸️ Peirates : Инструмент для тестирования на проникновение Kubernetes