我认为没有 iptables/pf 解决方案只允许 XY 应用程序在例如:出站 tcp 端口 80、eth0 上。因此,如果我有一个用户 ID:“500”,那么我如何阻止端口 80/outbound/tcp/eth0 上提到的任何其他通信? (例如:只有 privoxy 使用 eth0 上的端口 80)
额外:virtualbox 也使用端口 80 吗?当来宾操作系统上的浏览器访问站点时..如何声明? - 设置普通用户漏洞太大
答案1
这是iptables
允许某个端口uid
通过某个端口的命令。
iptables -A OUTPUT -p tcp -m tcp --dport 80 -m owner --uid-owner username -j ACCEPT
从手册页
[!] --uid-owner userid[-userid] 匹配数据包套接字的文件结构(如果有)是否由给定用户拥有。您还可以指定数字 UID 或 UID 范围。
至于virtualbox..我相信它运行自己的内核...所以你可能想--uid-owner
在主机操作系统上使用virtualbox,但--uid-owner
在虚拟机上也有一个所有者规则。
注意到它--gid-owner
也存在也可能很有用,您可以创建一个组browser
和sgid
您的浏览器应用程序,以便它与一个有效的组一起运行browser
,然后只将您想要浏览的用户放在该组中......这不会是一个完美的解决方案...但大多数用户不会尝试作为该组运行任何其他应用程序,因此我认为通常会限制该应用程序的出站。我还没有尝试过这个,所以我不是 100% 认为它会像我所描述的那样工作。