Ограничить доступ пользователей к определенным портам

Этот вопрос чисто гипотетический. Можно ли ограничить, какие порты могут использовать определенные пользователи для своих процессов? Скажем, users1 получает порты 8000-8999, а user2 получает порты 9000-9999.

Я использую Ubuntu 11.10.

2 ответа

Решение

Единственное нативное приложение Linux, которое может обрабатывать такого рода ограничения, может быть SElinux, который является частью дистрибутива Ubuntu. SElinux достаточно сложен, и я не уверен, как бы вы реализовали ограничения портов для каждого пользовательского шасси. Это будет между вами и Google.

В этом обсуждении упоминаются два исправления ядра (GRsecurity и TOMOYO), которые специально разрешают ограничения портов на уровне приложения, хотя обсуждение включает ссылку на ограничение порта для пользователя.

Наконец, я видел ссылки на другой патч ядра под названием "user-port-hack", но его страница проекта не выходит, и в одном посте ядра упоминается, что это только для ядра 2.4. Возможно, вы можете копать для этого.

Решение для левого поля, которое я вижу для вашего требования, - просто попросить пользователей выполнить политику. т.е. "Пользователь X, пожалуйста, используйте только порты 8000-8999."

В качестве альтернативы, если ваши пользователи настаивают на использовании портов, отличных от 1000, которые они были выделены, вы можете изолировать пользователей от их собственных выделенных виртуальных машин, а затем реализовать правила брандмауэра /iptables на уровне хоста, чтобы ограничить трафик определенным диапазоном портов для каждого из них. Виртуальный IP-адрес.

Вы должны рассмотреть возможность использования iptables с модулем владельца. Я никогда не пробовал это в этой конкретной ситуации, но, похоже, отвечает на ваш вопрос.

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