pipe理共享环境中的安全(Java)访问

在为Java应用程序开发共享托pipe解决scheme时,我们遇到了一个问题,因为用户可以上传他们自己的jar,我们如何限制他们运行Linux命令(如df -h或free -g)与这些jar? 当然,我们有我们的权限的情况下,他们无法绕过他们自己的文件,但这些命令是我们遇到的问题。

当你可以控制那个Java虚拟机,那么你可以使用java策略来指定什么是允许的,什么不是。

有了它们,您可以限制访问文件系统的某些部分,特定的端口等

这里有一个很好的教程:

http://docs.oracle.com/javase/tutorial/security/tour2/step2.html

但是您必须强制用户在激活安全pipe理器的情况下运行jvm。 如果您无法执行此操作,则可以简单地禁用策略。

这些用户可以写入的每个文件系统树必须挂载noexec

您可以通过为它们创build一个组来阻止对它们的所有二进制文件的访问,并将一个ACL enry添加到/bin/sbin/usr/bin […],以防止该组访问该目录:

 for dir in /bin ...; do setfacl -mg:javausers:- "$dir" done 

你创build一个新目录/whitelisted_binaries并硬链接他们需要的所有二进制文件(比如java本身,并把这个目录作为用户$PATH一部分,这些硬链接可能需要在包更新后重新创build。