加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

embedded-linux – 在沙盒中的Linux上运行不受信任的应用程序

发布时间:2020-12-14 01:55:11 所属栏目:Linux 来源:网络整理
导读:我们有一台运行 Linux的设备,我们需要在此上运行不受信任的应用程序.我们正在努力减轻以下安全问题 – 不受信任的应用程序不应该对核心OS数据和二进制文件产生负面影响 不受信任的应用程序不应该对另一个应用程序的数据和二进制文件产生负面影响 不受信任的
我们有一台运行 Linux的设备,我们需要在此上运行不受信任的应用程序.我们正在努力减轻以下安全问题 –

>不受信任的应用程序不应该对核心OS数据和二进制文件产生负面影响
>不受信任的应用程序不应该对另一个应用程序的数据和二进制文件产生负面影响
>不受信任的应用程序不应该消耗过多的CPU,内存或磁盘,并导致DoS /资源不足,如核心操作系统或其他应用程序

从不受信任的应用程序角度来看,它只需要能够读取和写入自己的目录,也可能是已安装的USB驱动器

我们正在考虑使用以下方法之一 –

方法1 – 使用SELinux作为沙箱

>这可能吗?我已经阅读了一些SELinux,它在设置策略文件和在运行时强制执行等方面看起来有点复杂.SELinux可以这样做并限制不受信任的应用程序只读/写自己的目录,也能够设定配额限制?

方法2 – 自己创建一个新的沙箱

>在安装期间

>为每个不受信任的应用程序创建一个新的应用程序用户
>使用权限标记整个应用程序目录和文件,以便只有应用程序用户才能读写
>使用ulimit / quota为应用程序用户设置配额

>在运行时,使用启动不受信任的应用程序

>关闭所有打开的文件描述符/句柄
>使用chroot将根目录设置为应用程序目录
>在应用程序用户的上下文中启动应用程序

关于上述的想法?哪种方法比另一种更安全?还有其他方法可能更好吗?由于某些原因,我们无法选择移动Android,因此我们无法使用Android本身提供的沙盒功能…

让我知道

谢谢,

解决方法

SELinux是一组规则,应用程序与用户权限相似,甚至更复杂.您可以在每个进程中使用它来设置该进程的域,并允许或拒绝几乎任何访问.它意味着访问文件,网络或进程/线程.这样它就可以用作一种沙箱.但是,您必须为每个进程准备一个规则集,或者您可以创建一个必须在沙盒应用程序之前运行的脚本来自行准备规则.

如果要控制CPU消耗,SELinux没有CPU规划器,因为任何规则只有两个逻辑结果中的一个“允许”或“拒绝”访问.我建议你’cgroups’来控制CPU消耗.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读