Ограничить доступ пользователей к определенным портам
Этот вопрос чисто гипотетический. Можно ли ограничить, какие порты могут использовать определенные пользователи для своих процессов? Скажем, 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 с модулем владельца. Я никогда не пробовал это в этой конкретной ситуации, но, похоже, отвечает на ваш вопрос.