隐藏Tomcat中间件名称及版本号
目的
防止黑客利用中间件及版本号有针对性发起攻击。
处理方法
处理方法有两种:改server.xml、改tomcat内部的catalina.jar
方式一:改server.xml
在server.xml的Host块内添加<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />
其中showReport控制是否显示报错信息,showServerInfo控制是否显示tomcat版本
用命令行操作方法如下:
sed -i "/<\/Host>/i<Valve className=\"org.apache.catalina.valves.ErrorReportValve\" showReport=\"false\" showServerInfo=\"false\" />" /usr/local/tomcat/conf/server.xml
方式二:改tomcat内部的catalina.jar
# 进入tomcat/lib目录 cd Tomcat目录/lib # 解决catalina.jar,备份ServerInfo.properties unzip catalina.jar cp org/apache/catalina/util/ServerInfo.properties ServerInfo.properties.bak # 替换中间件名称、版本号为Unknown sed -i "s/server.info=.*/server.info=Unknown/g" org/apache/catalina/util/ServerInfo.properties sed -i "s/server.number=.*/server.number=Unknown/g" org/apache/catalina/util/ServerInfo.properties # 查看替换是否成功,输出server.info与server.number均为Unknown即正常 grep server org/apache/catalina/util/ServerInfo.properties # 修改的配置文件替换jar内文件 jar uvf catalina.jar org/apache/catalina/util/ServerInfo.properties # 删除解压的临时文件 rm org META-INF -rf
脚本tomcat-no-version.sh
#!/bin/bash [ ! -d "lib" ] && echo "lib目录不存在,请检查脚本是否正确放到tomcat目录下" && exit; cd ./lib [ -d "org" ] && rm -rf org; [ -d "META-INF" ] && rm -rf META-INF; unzip -q catalina.jar [ $? != 0 ] && echo "unzip命令不存在,请安装后重试" && exit; sed -i "s/server.info=.*/server.info=Unknown/g" org/apache/catalina/util/ServerInfo.properties sed -i "s/server.number=.*/server.number=Unknown/g" org/apache/catalina/util/ServerInfo.properties jar uvf catalina.jar org/apache/catalina/util/ServerInfo.properties [ $? != 0 ] && echo "jar命令不存在,可能在PATH中找不到,请正确配置后重试" && exit; rm org META-INF -rf echo "操作完成。"
将脚本命名为 tomcat-no-version.sh
,放入tomcat目录下执行 sh tomcat-no-version.sh
本文作者:东北小狐狸
本文链接:https://www.cnblogs.com/hellxz/p/tomcat-no-version.html
版权声明:本作品采用自由转载-非商用-非衍生-保持署名 (CC BY-NC-ND 3.0)许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步