我一直在研究如何在嵌入式tomcat上进行"tomcat强化",但我找不到更改这3个catalina服务器信息属性的方法:server.info
、server.built
、server.number
有没有一种方法可以更改spring application.properties文件中的这3个属性?或者通过任何其他方式?
下面的配置是专门针对ServerInfo.properties而非嵌入式tomcat的tomcat服务器强化指南
理由:
更改server.info属性可能会使攻击者确定哪些漏洞会影响服务器站台所需配置:
执行以下操作以更改服务器当客户端连接到tomcat时显示的平台字符串服务器
- 从catalina.jar文件中提取ServerInfo.properties文件:$cd$catalina_HOME/lib$jar xf-catalina.jarorg/apache/catalina/util/ServerInfo.properties
- 导航到创建的util目录cd org/apache/Catalina/util
- 在编辑器中打开ServerInfo.properties
- 更新ServerInfo.properties文件中的server.info属性。server.info=
- 使用修改后的ServerInfo.properties文件更新catalina.jar。$jar uf catalina.jarorg/apache/catalina/util/ServerInfo.properties
更新:
我试图通过用修改过的ServerInfo.properties覆盖tomcat-embed-core-9.0.36来修改应用程序fat jar。但当我通过Java启动应用程序时,我得到了以下错误:
原因:java.lang.IllegalStateException:无法打开嵌套项"BOOT-INF/lib/tomcat-embed-core-9.0.36.jar"。它已被压缩,嵌套的jar文件必须在没有压缩的情况下存储。请检查用于创建可执行jar文件的机制网址:org.springframework.bootloader.jar.JarFile.createJarFileFromFileEntry(JarFile.java:283(网址:org.springframework.bootloader.jar.JarFile.createJarFileFromEntry(JarFile.java:265(网址:org.springframework.bootloader.jar.JarFile.getNestedJarFile(JarFile.java:254(…还有6个
提出了两个解决方案:
-
肥罐法->tomcat-embed-core.jar中的ServerInfo.properties进行了修补,并在构建过程中打包了可执行的fat-jar。但需要修补的tomcat-embed-core.jar在repo/artifactory中才能工作。
-
薄罐法->可执行jar使用spring-boot精简布局与外部库分离;spring-boot瘦maven插件(用于构建(。这将依赖关系外部化,您可以在本地修补任何jar文件,而不会损坏可执行的瘦jar。
目前,以下是我可以想到的关于如何在春季启动应用程序中强化嵌入式tomcat的两种方法。
我会把这个标记为答案,直到有人想出更好的解决方案。