在共享环境中管理安全 (Java) 访问

在共享环境中管理安全 (Java) 访问

在为 Java 应用程序开发共享托管解决方案时,我们遇到了一个问题,由于用户可以上传自己的 jar,我们如何限制他们使用这些 jar 运行 Linux 命令(如 df -h 或 free -g)?当然,我们已经解决了权限问题,他们不能随意修改自己文件之外的文件,但这些命令才是我们遇到的问题。

答案1

当您可以控制该 Java 虚拟机时,您就可以使用 Java 策略来指定什么是允许的,什么是不允许的。

通过它们,您可以限制对文件系统各部分、特定端口等的访问。

这有一个很好的教程:

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

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

答案2

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

/bin您可以通过为他们创建一个组并向、/sbin、 [...]添加 ACL 条目来阻止他们访问所有二进制文件,/usr/bin从而阻止该组访问此目录:

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

您创建一个新目录/whitelisted_binaries并硬链接它们需要的所有二进制文件(如其java自身),并使该目录成为用户的一部分$PATH。这些硬链接可能需要在软件包更新后重新创建。

相关内容