Java 安全管理器的 DOD STIG 修复不起作用

DOD STIG fix for Java Security Manager not working

提问人:Valdis Ibeh 提问时间:10/12/2023 最后编辑:Mads HansenValdis Ibeh 更新时间:10/19/2023 访问量:48

问:

我正在尝试为 Java Security Manager 应用 DOD STIG 修复程序。该修复要求我修改 /etc/systemd/system/tomcat.service 文件并将“ExecStart”参数设置为:。ExecStart=/opt/tomcat/bin/startup.sh -security

应用此修复程序后,tomcat 将无法启动。还有其他人遇到过这个问题吗?

我添加到了 .保存/退出tomcat.service文件后,我应用了该命令。我希望 tomcat 按预期运行,但一段时间后无法启动。-securityExecStart=/opt/tomcat/bin/startup.shsystemctl daemon-reload

当我重新启动tomcat时,catalina.out显示以下内容:

19-Oct-2023 14:16:26.412 严重 [acop-startStop-1] org.apache.catalina.core.ContainerBase.startInternal 子容器 启动时失败 java.util.concurrent.ExecutionException:org.apache.catalina.LifecycleException:无法启动组件 [标准引擎[a2]。StandardHost[本地主机]。标准上下文[/a2]] 在 java.util.concurrent.FutureTask.report(FutureTask.java:122) 在 java.util.concurrent.FutureTask.get(FutureTask.java:192) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:892) 在 org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:793) 在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1362) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1352) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:750) 原因:org.apache.catalina.LifecycleException:无法启动组件 [标准引擎[a2]。StandardHost[本地主机]。标准上下文[/a2]] 在 org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) 在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198) ...另外 6 个 原因:java.security.AccessControlException:访问被拒绝(“java.lang.RuntimePermission” “accessClassInPackage.org.apache.catalina.connector”) 在 java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) 在 java.security.AccessController.checkPermission(AccessController.java:886) 在 java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 在 java.lang.SecurityManager.checkPackageAccess(SecurityManager.java:1564) 在 java.lang.ClassLoader$1.run(ClassLoader.java:496) 在 java.lang.ClassLoader$1.run(ClassLoader.java:494) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.lang.ClassLoader.checkPackageAccess(ClassLoader.java:494) 在 java.lang.Class.getDeclaredFields0(本机方法) 在 java.lang.Class.privateGetDeclaredFields(Class.java:2583) 在 java.lang.Class.getDeclaredFields(Class.java:1916) 在 org.apache.catalina.util.Introspection$1.run(Introspection.java:106) 在 org.apache.catalina.util.Introspection$1.run(Introspection.java:103) 在 java.security.AccessController.doPrivileged(本机方法) 在org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:102) 在 org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:269) 在 org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:137) 在 org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:69) 在 org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:329)

Java 安全性 tomcat stig

评论

0赞 Mads Hansen 10/12/2023
如果您尝试在命令行上手动启动会发生什么?./startup.sh -security
0赞 Mads Hansen 10/12/2023
提交更改后,在运行之前是否重新启动了 Tomcat:?systemctl daemon-reloadsudo systemctl restart tomcat
1赞 Valdis Ibeh 10/12/2023
@MadsHansen我忘了提这个。在使用 systemctl daemon-reload 之前,我当然输入了 systemctl restart tomcat。当我尝试手动使用 ./startup.sh 时,它无法启动。
0赞 Mads Hansen 10/12/2023
并且没有记录或吐出任何内容来表明存在问题?
0赞 Mads Hansen 10/19/2023
编辑您的问题并将这些详细信息放在那里。

答:

0赞 Mads Hansen 10/19/2023 #1

您可能需要修改 conf/catalina.policy 并包含一些额外的权限,例如:

permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.connector";

评论

0赞 Valdis Ibeh 10/20/2023
该许可也被拒绝了。