Luo Hao

tomcat——隐藏版本查看

rehoni / 2020-09-01


备份原来的tomcat配置文件

在ems用户下,备份原来tomcat下的tomcat/conf目录,注意操作前shutdown掉tomcat

 cp -r conf/ 目录

在ems用户下,给原来的tomcat压一份包备份,如果无法压缩则用root账户压包

 tar czf old_tomcat.tar.gz -C 目录

放入新的tomcat

官网下载最新的tomcat的tar.gz包,上传到服务器上解压缩

 tar xf apache-tomcat-8.5.57.tar.gz -C 目录

将旧的conf文件夹替换掉新的tomcat的conf文件夹,正常启动新的tomcat即可,删除旧的tomcat文件夹

查看/隐藏tomcat版本

查看tomcat版本

  1. bin目录下.version.sh
  2. lib目录下找到catalina.jar包,解压缩查看里边的org\\apache\\catalina\\util\\ServerInfo.properties文件
  3. lib目录下找到catalina.jar包,解压缩查看里边的org\\apache\\catalina\\MANIFEST.MF文件,仅作为参考(最低版本)。
 Manifest-Version: 1.0
 Ant-Version: Apache Ant 1.10.5
 Created-By: 1.8.0_151-b12 (Oracle Corporation)
 Specification-Title: Apache Tomcat
 Specification-Version: 8.5
 Specification-Vendor: Apache Software Foundation
 Implementation-Title: Apache Tomcat
 Implementation-Version: 8.5.42
 Implementation-Vendor: Apache Software Foundation
 X-Compile-Source-JDK: 1.7
 X-Compile-Target-JDK: 1.7

修改tomcat版本

推荐直接修改lib目录下catalina.jar包,解压缩修改里边的org\\apache\\catalina\\util\\ServerInfo.properties文件,然后再重新压成jar包,放入tomcat替换。

取消session持久化功能

Session 是保存在内存中的,如果服务器重启、宕机的话,Session 就会丢失。有时候,我们需要对 Session 持久化以应对意外的情况发生。例如,客户端与服务器在交互过程中,可能因为 Session 的丢失而造成数据的丢失。还有一种情况,我们需要持久化 Session。如果当前用户的访问量巨大,大量的 Session 便会占用服务器大量的内存,从而使服务器的性能受到影响。如果能将一些闲置时间较长的 Session 换出,存储至磁盘,便可以起到节省内存空间的作用。需要注意的一点是,要持久化 Session,那么 Session 里存放的对象必须是可序列化的,即实现了 java.io.Serializable 接口。Tomcat 通过两个 Session 管理类来实现 Session 的持久化:org.apache.catalina.session.StandardManager 和 org.apache.catalina.session。 可以通过 $CATALINA_HOME/conf/context.xml 的 节点来配置 Session 的持久化方式。Tomcat 默认已经启动了持久化配置,若要禁用持久化功能,只需在 节点里配置

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2710e28f-3345-4293-b8b8-ff031b8e05c5/image-20200711115831013.png

修改完context.xml之后报错,tomcat启动服务全down了,排查当天的Catalina日志时,发现问题如下:

 11-Jul-2020 14:22:51.050 严重 [localhost-startStop-1] org.apache.catalina.startup.ContextConfig.processContextConfig 解析context.xml错误,[/zhsbd_deployment]
     com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效。
         at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:701)
         at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:567)

目测是那一行中文注释引起的,删除中文注释后,tomcat正常启动,所有服务正常。

参考

how to find out running tomcat version

Tomcat - 持久化 Session

荐 【漏洞预警】Apache Tomcat Session 反序列化代码执行漏洞修复方案