我们有一台运行Linux的设备,我们需要在此上运行不受信任的应用程序。我们正试图减轻以下安全问题 -在沙箱中的Linux上运行不受信任的应用程序
- 不受信任的应用程序不应该能够在核心操作系统数据和二进制文件产生不利影响
- 不受信任的应用程序不应该能够到另一个应用程序的数据和二进制文件产生不利影响
- 非信任应用程序不应该能够占用过多的CPU,内存或磁盘并导致DoS /资源匮乏情况一样的核心操作系统或其它应用程序
从不受信任的应用程序的立场点,只需要能够读取和写入自己的目录,也许安装USB驱动器
我们正在考虑使用以下方法之一 -
方法1 - 使用了SELinux的沙盒
- 这可能吗?我已经阅读了一些SELinux,在设置策略文件和在运行时强制执行它等方面看起来有点复杂。SELinux可以做到这一点,并限制不可信任的应用程序只读/写自己的目录,并且能够设定配额限制?
方法2 - 我们自己的
创建一个新的沙箱在安装时
- 每个置信应用
- 邮票整个应用程序创建一个新的应用程序用户目录和具有权限的文件,以便只有应用程序用户才能读取和写入 使用的ulimit应用程序用户分
- 设置配额/配额
在运行时,推出采用
- 关闭所有打开的文件描述符/句柄
- 使用的chroot设置根的信任应用程序到应用程序目录
- 在应用程序用户环境下启动应用程序
关于上述的想法?哪种方法比其他方法更安全?还有另一种方法可能会更好吗?由于某些原因,我们没有选择移动Android,因此我们无法使用Android本身提供的沙盒功能...
让我知道
感谢,
你的选择数字2实际上听起来很像Android的沙箱功能(除了chroot) - 那些工作到内核用户安全模型保持完好的程度... – 2013-03-15 17:22:01
@ chris-stratton - Android是什么我们用作参考来提出我们的方法-2。不幸的是,我们现在无法移动到Android本身,所以没有可以选择使用Android沙盒的选项...... – user967973 2013-03-15 18:57:46
如何使用Linux的命名空间和cgroups?老实说,我不太熟悉它,但根据我的卑微知识,你可以将流程的资源孤立于你所设定的内容。换句话说,你创建了自己的集装箱系统,就像Docker一样。每个进程/应用程序仅限于查看并使用分配给它的内容。 – 2017-04-18 21:58:20