OpenBSD上有哪些类似于Jail / Chroot / Sandbox的机制? [关闭]

问题描述 投票:4回答:2
我最近开始使用OpenBSD。而且我想创建简单的即弃型容器/ VM或其他东西(应将其用作沙箱)。

用户可以上载源代码(C ++ / Java / Perl),它将在服务器(OpenBSD)上进行编译,如果成功,则应执行此File,然后将结果返回到Web页面。

如何在OpenBSD中提供此功能?

此外,由于'jail'将在6.0中删除,因此我应该使用chroot吗?还是在OpenBSD中创建“沙盒”还有其他可能性吗?

security sandbox bsd chroot openbsd
2个回答
4
投票
目前,OpenBSD不支持任何“类固醇上的chroot”机制。过去,相同的监狱功能(名为sysjail)曾存在于端口中,但由于不易维护且非常不安全,于2007年被删除。您可以在stackexchange上以及在搜索引擎中找到有关它的更多信息。

从历史上看,OpenBSD仅支持chroot(8),并且与其他系统完全一样:

    创建带有用户名的备用根目录
  • # create your target chroot target="/tmp/chroot" mkdir ${target} # now build and install your userland cd /usr cvs -qz3 -d${repository} co src -r${openbsd_release} cd /usr/src make obj && make && make install DESTDIR=${target}
      在其中启动守护程序或您的守护程序
  • # in root chroot /tmp/chroot # run your daemon here # note: you need to init also dev directory # and, eventually, customize /etc/fstab # /tmp is currently not allowed to have dev on it # please see fstab(5) man page
    基本支持chroot功能中的许多软件,openntpdopensshhttpd和许多其他文件默认情况下在隔离目录中配置。 

    现在,从OpenBSD 5.9开始,您可以在基础中使用vmm(4)管理程序和vmctl(8)。您可以启动vmd守护程序并创建隔离的容器,就像其他任何虚拟机管理程序一样(Bhyve,xen或kvm)。

    # from openbsd vmctl man page example vmctl create disk.img -s 4.5G vmctl start "myvm" -m 512M -i 1 -d disk.img -k /bsd vmctl stop 1

    您还可以使用基于端口的软件的另一种方法,qemu可以很好地工作,但是由于内核加速的支持以及部分由于文件系统结构,在OpenBSD上的性能很差。

    现在,关于您的主要问题(提供一种远程编译源代码的方式),我认为更好的主意是将您的代码与主系统真正隔离,并且使用类似vmctlqemu的方法可能是个好答案。也许qemu会更好,因为您可以使用标准用户来执行它,而没有内核功能和很多网络功能,但是编译的确很慢。


  • 0
    投票
    签出pledgeunveil

    您可以使用质押来限制系统调用,而可以使用揭露来隐藏目录

    © www.soinside.com 2019 - 2024. All rights reserved.