linux 在沙盒中运行,在Linux的沙盒中运行不受信任的C程序,阻止它打开文件,分叉等?...

我已经使用

Systrace到沙箱不受信任的程序交互式和自动模式。它有一个基于

ptrace()的后端,允许它在没有特殊权限的Linux系统上使用,以及一个更快,更强大的后端,需要修补内核。

也可以使用chroot(1)在类Unix系统上创建一个沙盒,虽然这不是那么容易或安全。 Linux Containers和FreeBSD jails是chroot的更好的替代品。在Linux上的另一个替代方案是使用像SELinux或AppArmor这样的安全框架,这是我建议的生产系统。

我们将能够帮助你更多,如果你告诉你,究竟是什么,你想做的。

编辑:

Systrace会为你的情况工作,但我认为基于Linux Security Model的东西,如AppArmor或SELinux是一个更标准的,因此首选,替代,这取决于您的分布。

编辑2:

虽然chroot(1)可用于大多数(所有?)类Unix系统,它有很多问题:

>它可以打破。如果你要在系统上实际编译或运行不受信任的C程序,你特别容易遇到这个问题。如果你的学生是我的,有人会试图打破监狱。

>您必须创建一个完整的独立文件系统层次结构,其中包含任务所需的所有内容。你不必在chroot中有一个编译器,但是应该包括运行编译的程序所需的任何东西。虽然有些实用程序可以帮助这一点,但它仍然不是微不足道。

>你必须维护chroot。因为它是独立的,所以chroot文件不会随着你的发行版一起更新。您必须定期重新创建chroot,或者在其中包含必要的更新工具,这本质上要求它是一个完整的Linux发行版。您还必须保持系统和用户数据(密码,输入文件e.t.c.)与主机系统同步。

> chroot()只保护文件系统。它不能防止恶意程序打开网络套接字或一个不好写的,从吸吮每一个可用的资源。

资源使用问题在所有备选方案中是常见的。 Filesystem quotas将阻止程序填充磁盘。正确的ulimit(C的setrlimit())设置可以防止内存过度使用和任何叉车炸弹,以及停止CPU猪。 nice(1)可以降低这些程序的优先级,以便计算机可以用于任何被认为更重要且没有问题的任务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值