Я запускаю выделенный компьютер на RHEL (CentOS 6.3), который работает с несколькими IP-адресами. Несколько пользователей также имеют доступ к машине под учетными записями без прав суперпользователя. Я хотел бы предотвратить их привязку к определенным адресам.
Я знаю, что Linux может ограничивать порты для пользователей без полномочий root, как это делается в настоящее время для портов, меньших или равных 1024. Если бы я хотел предотвратить доступ к определенному IP-адресу, например 0.0.0.0
, или диапазон, например 127.0.0.0/8
, возможно ли это сделать, и если да, то как это сделать?
Или, наоборот, как мне запретить любой доступ для привязки к любым IP-адресам и предоставить доступ к отдельным адресам пользователю?
Я не буду вдаваться в подробности того, как настраивается SELinux или как создается политика SELinux. это может быть хорошей отправной точкой для знакомства с SELinux.
Чтобы решить вашу проблему с SELinux, попробуйте следующее:
Назначьте тип сетевого интерфейса, который вы хотите ограничить
# Assign a type to the whole interface
semanage interface -a -t foo_netif_t eth2
Назначьте метки трафику, проходящему через интерфейс
netlabelctl unlbl add interface:eth2 address:0.0.0.0/0 label:system_u:object_r:foo_peer_t:s0
netlabelctl unlbl add interface:eth2 address:::/0 label:system_u:object_r:foo_peer_t:s0
В этом примере присваивается тип foo_peer_t
для всего трафика IPv4 и IPv6.
Добавьте правила, чтобы разрешить поток пакетов
Входящий трафик
allow user_t foo_netif_t:netif ingress;
allow user_t foo_peer_t:node recvfrom;
Трафик уходит
allow user_t foo_netif_t:netif egress;
allow user_t foo_peer_t:node sendto;
Заменить user_t
с типом, назначенным пользователю, которого вы хотите ограничить.
Ссылки: