我在 RHEL(CentOS 6.3)上运行一台专用机器,该机器使用多个 IP 地址运行。多个用户也可以使用非超级用户帐户访问该机器。我想阻止他们绑定到某些地址。
我确实知道 Linux 可以限制非 root 用户的端口,就像目前对小于或等于 1024 的端口所做的那样。如果我想阻止访问特定的 IP 地址(例如)或0.0.0.0
范围(例如)127.0.0.0/8
,是否可以这样做?如果可以,该如何做?
或者相反,我如何拒绝所有访问绑定到任何 IP 地址,并授予用户对单个地址的访问权限?
答案1
我不会详细介绍如何设置 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
用您想要限制的用户指定的类型 替换。
参考: