我们有一台运行 Linux 的设备,我们需要在此设备上运行不受信任的应用程序。我们正在努力缓解以下安全问题 -
- 不受信任的应用程序不应对核心操作系统数据和二进制文件产生不利影响
- 不受信任的应用程序不应对另一个应用程序的数据和二进制文件产生不利影响
- 不受信任的应用程序不应消耗过多的 CPU、内存或磁盘,并导致核心操作系统或其他应用程序出现 DoS/资源不足的情况
从不受信任的应用程序的角度来看,它只需要能够读取和写入自己的目录,也许还需要挂载的 USB 驱动器
我们正在考虑使用以下方法之一 -
方法 1 - 将 SELinux 用作沙箱
- 这可能吗?我已经阅读了一些 SELinux,它在设置策略文件和在运行时强制执行等方面看起来有点复杂。SELinux 可以做到这一点并将不受信任的应用程序限制为只读/写自己的目录,并且还能够设置配额限制?
方法 2 - 我们自己创建一个新的沙箱
在安装期间
- 为每个不受信任的应用程序创建一个新的应用程序用户
- 给整个应用程序目录和文件加盖权限,这样只有应用程序用户可以读写
- 使用 ulimit/quota 为应用程序用户设置配额
在运行时,使用启动不受信任的应用程序
- 关闭所有打开的文件描述符/句柄
- 使用 chroot 将根设置为应用程序目录
- 在应用程序用户的上下文中启动应用程序
对上面的想法?哪种方法比另一种更安全?还有另一种可能效果更好的方法吗?由于某些原因,我们无法选择迁移 Android,因此我们无法使用 Android 原生提供的沙盒功能......
让我知道
谢谢,