我在 CentOS 6 解决方案上运行 Glassfish 3.1,默认情况下启用了 SELinux。我在服务器上安装了 Sun 的 JDK 版本 1.6.0_29,并将 Glassfish 3.1.1 提取到,其中包含指向最新 Glassfish 版本的/opt/glassfish-3.1.1
链接/opt/glassfish
。我还创建了一个名为的系统用户,其glassfish
主目录为/home/glassfish
。
在启用 SELinux 的情况下运行时,我遇到各种错误。例如,我无法创建域。我有点喜欢 SELinux 的概念,并希望能够启用 SELinux。我对 Glassfish 服务器有以下要求:
- 监听端口 8080 和 8081
- 其他端口 7676:JMS 8686:JMX监控,4848:管理控制台
mod_jk
通过端口 8009从 apache 转发到 Glassfish- 启动 OpenMQ 作为单独的进程,监听 7676 和 JMX 监控端口 7776
- 能够读写指定区域(不同于主目录)的文件
- 能够使用 /tmp/ 作为临时文件
我知道在宽容模式下运行时 audit2allow 工具,但我很难理解该工具生成的规则,并且认为第一次手动设置这些规则将帮助我比迄今为止见过的简单示例更好地理解 SELinux 规则。
有 SELinux 经验的人能帮助我制定这些 SELinux 规则并附上描述规则每个部分的注释吗?
答案1
正如 Mlfe 所说,java 是用户安装的并且不受限制地运行,因为策略不知道它们。
规则制定是一个相当复杂的过程,我建议你阅读 RHEL 指南http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/index.html了解一般信息。
有一个“selinux-polgengui”命令(policycoreutils-gui 包中的 fedora/rhel/centos)可以为您的应用程序创建附加策略。它可以逐步工作,可以满足您的要求,但我猜对于 java 和 glassfish 来说并不容易,因为涉及所有文件。
应用程序的另一道防线可能是由 java vm 的安全管理器管理的 java 策略。请参阅 http://blogs.oracle.com/monzillo/entry/policy_files_the_securitymanager_and 作为起点。