Назад | Перейти на главную страницу

Linux: Разрешить / ограничить разрешения на привязку IP-адресов пользователем

Я запускаю выделенный компьютер на 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 с типом, назначенным пользователю, которого вы хотите ограничить.

Ссылки: