Для защиты от локального пользователя, не являющегося -root, я бы действительно использовал сетевые пространства имен.
Это, вероятно, самое простое решение, потому что, как правило, работа с сетью отделена от управления пользователями/группами, и хотя совмещение обоих может быть выполнено с помощью iptables
, это увеличивает нагрузку.
Сетевые пространства имен основаны только на том факте, что только пользователь root может перемещать процессы в пространства имен и из них.
Итак, вам нужна установка, аналогичная (ns = namespace)
main ns ---- nginx ns ---- elasticsearch ns
где соединения реализованы с помощью виртуальных пар (ethernet )veth )с собственным сегментом локальной сети. Это будет означать, что каждый процесс в основном пространстве имен может получить доступ только к пространству имен nginx, а к пространству имен elasticsearch нельзя получить прямой доступ (, если вы не сможете запускать процессы в этом пространстве имен ).
Вам необходимо знать основы работы в сети (Сегменты локальной сети, сетевая маска, маршруты и маршруты по умолчанию ). ip netns...
— это инструмент командной строки для создания сетевых пространств и управления ими, а также для запуска процессов в пространстве имен. ip link...
— это инструмент командной строки для создания пар veth -.
Я рекомендую запустить xterm
в каждом пространстве имен, чтобы вы могли видеть и изменять конфигурацию сети. Как только все заработает, просто запишите это.
Вам нужно немного поэкспериментировать,но это не очень сложно. Я не могу придумать более простой способ сделать это.
Редактировать
Чтобы начать работу с пространствами имен, попробуйте скрипт в этом ответе или просмотрите этот вопрос .
Я не знаю, где вы застряли. сетевые пространства имен. Думайте о каждом пространстве имен как о собственном сетевом виртуальном компьютере, который имеет общую файловую систему и другие данные с остальной частью физического компьютера. Таким образом, работа с пространствами имен аналогична подключению компьютеров в локальную сеть. Одним из важных инструментов является виртуальная пара Ethernet , которую можно представить как виртуальный кабель локальной сети, соединяющий два сетевых пространства имен.