我一直在研究如何对进程进行沙盒处理,并发现了 cgroups,它看起来很有前途。我不太想为此使用虚拟化或 strace,因为我希望程序运行得尽可能快。我也知道 SELinux/AppArmor,但我正在寻找一种不需要内核修补的东西(如果可能的话)。
我知道 cgroups 可用于限制 CPU/内存使用率和文件系统访问,但它可用于阻止进程打开套接字或绑定到端口吗?或者,我是否可以结合使用某些东西与 cgroups 来限制网络访问?能够分别限制每个功能将非常棒。
再次感谢!
答案1
您可以设置iptables
匹配 UID/GID 或 UID/GID 范围的规则。使用--uid-owner
和--gid-owner
选项选择要匹配的 UID/GID,然后在其中一个用户帐户下运行您的进程。
此类规则应在OUTPUT
或POSTROUTING
链中。