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

问题描述 投票:0回答:1

我正在尝试对 Java 安全管理器应用 DOD STIG 修复。该修复需要我修改 /etc/systemd/system/tomcat.service 文件并将“ExecStart”参数设置为:

ExecStart=/opt/tomcat/bin/startup.sh -security

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

我在

-security
的末尾添加了
ExecStart=/opt/tomcat/bin/startup.sh
。保存/退出 tomcat.service 文件后,我应用了
systemctl daemon-reload
命令。我期望 tomcat 按预期运行,但过了一会儿却无法启动。

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

2023 年 10 月 19 日 14:16:26.412 严重 [acop-startStop-1] org.apache.catalina.core.ContainerBase.startInternal 子容器 启动期间失败 java.util.concurrent.ExecutionException:org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine[a2].StandardHost[localhost].StandardContext[/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:无法启动组件 [StandardEngine[a2].StandardHost[localhost].StandardContext[/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 security tomcat stig
1个回答
0
投票

您可能需要 修改您的

conf/catalina.policy
并添加一些额外的权限,例如:

permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.connector";
© www.soinside.com 2019 - 2024. All rights reserved.