我想创建Windows服务,它通过一些队列任务接收来同时运行很多控制台应用程序。另外我想让我的服务器安全。仅仅因为任何人都可以将病毒上传到我的服务器并安排它运行。应用程序可以写在Java,C#上,它们也可以是原生应用程序,写在纯C上。最简单的方法是使用虚拟机运行应用程序。但是VM有很多资源可以运行,事实上,每个虚拟机我都会运行独立的Windows副本,这会占用大量的内存和处理器资源。如何让不受信任的应用程序运行沙箱?
第二种方式是写文件系统minifilter内核驱动程序来控制文件系统和Windows注册表。我可以制作独立的文件夹并限制对其他文件夹的所有访问。此外,我可以为每个正在运行的线程和进程制定配额。但是我无法控制内存,可以用来破解我的沙箱。
理想情况下,我需要一个可以在沙盒中运行应用程序的解决方案,同时我需要控制此沙箱(清理它,部署新应用程序,运行刚部署的应用程序,从沙箱复制日志文件)。
为什么要为每个应用程序运行单独的VM?只需运行一个虚拟机作为沙盒,并运行该虚拟机中的所有传入应用程序。 –
没办法。有人可以上传一个应用程序,该应用程序可以控制运行其他应用程序并破坏其结果 – Alexus