2012-06-08 44 views
1

我想创建Windows服务,它通过一些队列任务接收来同时运行很多控制台应用程序。另外我想让我的服务器安全。仅仅因为任何人都可以将病毒上传到我的服务器并安排它运行。应用程序可以写在Java,C#上,它们也可以是原生应用程序,写在纯C上。最简单的方法是使用虚拟机运行应用程序。但是VM有很多资源可以运行,事实上,每个虚拟机我都会运行独立的Windows副本,这会占用大量的内存和处理器资源。如何让不受信任的应用程序运行沙箱?

第二种方式是写文件系统minifilter内核驱动程序来控制文件系统和Windows注册表。我可以制作独立的文件夹并限制对其他文件夹的所有访问。此外,我可以为每个正在运行的线程和进程制定配额。但是我无法控制内存,可以用来破解我的沙箱。

理想情况下,我需要一个可以在沙盒中运行应用程序的解决方案,同时我需要控制此沙箱(清理它,部署新应用程序,运行刚部署的应用程序,从沙箱复制日志文件)。

+0

为什么要为每个应用程序运行单独的VM?只需运行一个虚拟机作为沙盒,并运行该虚拟机中的所有传入应用程序。 –

+0

没办法。有人可以上传一个应用程序,该应用程序可以控制运行其他应用程序并破坏其结果 – Alexus

回答

0

我刚找到解决方案。该解决方案使用ReactOS作为VirtualBox上的来宾操作系统。所以,因为我想用4-5个PC和大约20个客户操作系统创建“计算集群”,所以我需要有guest虚拟机操作系统,它不会占用大量内存。 ReactOS吃大约25 Mb或RAM。和25到视频卡仿真和其他VirtualBox的东西。我将创建部署服务来部署我需要运行到ReactOS的应用程序。之后,客户操作系统将收到关于部署完成的通知,并将运行部署的应用应用程序完成工作后,所有日志都将被复制到主机,并且来宾虚拟机将被回滚到快照。因此,如果有人上传病毒,其所有工作结果将自动清除。我可以运行很多副本,因为ReactOS只吃25-30 Mb的RAM

相关问题