我在RHEL(CentOS 6.3)上运行一台专用机器,运行多个IP地址.多个用户还可以在非超级用户帐户上访问该计算机.我想阻止他们绑定到某些地址.
我知道Linux可以限制非root用户的端口,就像目前对小于或等于1024的端口所做的那样.如果我想阻止访问特定的IP地址,如0.0.0.0,或者范围如127.0 .0.0 / 8,这样做是可能的,如果是这样,它会怎么做?
或者相反,我如何拒绝所有绑定到任何IP地址的访问权限,并授予用户对各个地址的访问权限?
解决方法
我不会详细介绍如何设置SELinux或如何创建SELinux策略.
This可能是熟悉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替换为分配给您要限制的用户的类型.
参考文献: