安全扫描:彻底隐藏 Tomcat 版本号 + 服务器名(100% 过扫描)
最标准、最彻底、一次到位 的 Tomcat 安全加固方案,专门用于安全扫描/等保/漏洞扫描整改,能完全隐藏:
- HTTP 响应头里的 Tomcat 版本
- 错误页面(404/500)泄露的版本
- 服务器名称(Server 头)
- 所有能被扫描到的版本标识
目标:让扫描工具完全识别不出这是 Tomcat,也看不到任何版本号。
一、最关键:修改 3 个配置文件(必做)
1. 修改 conf/server.xml
作用:隐藏响应头 Server、去掉 X-Powered-By
找到 <Connector> 标签,添加这 2 个属性:
xml
server="Unknown"
xpoweredBy="false"
完整示例:
xml
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
server="Unknown" <!-- 关键:隐藏服务器名 -->
xpoweredBy="false" /> <!-- 关键:隐藏版本头 -->
2. 继续在 server.xml 隐藏错误页面版本
在 <Host> 里面加入:
xml
<Valve className="org.apache.catalina.valves.ErrorReportValve"
showReport="false"
showServerInfo="false" />
完整示例:
xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<!-- 隐藏错误页版本信息 -->
<Valve className="org.apache.catalina.valves.ErrorReportValve"
showReport="false"
showServerInfo="false" />
</Host>
3. 修改 conf/web.xml
作用:自定义 404/500 错误页,彻底不泄露任何信息
在 </web-app> 上面添加:
xml
<error-page>
<error-code>404</error-code>
<location>/error.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error.html</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/error.html</location>
</error-page>
然后在 webapps/ROOT/ 下新建一个空白 error.html
html
访问出错
二、最高级:彻底删除 Tomcat 版本标识(安全扫描必过)
这一步必须做,否则漏洞扫描依然能识别出 Tomcat 版本!
操作步骤:
- 进入 Tomcat 的 lib 目录
bash
cd TOMCAT_HOME/lib
- 解压 catalina.jar 里的版本配置文件
bash
jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties
- 编辑这个文件
bash
vim org/apache/catalina/util/ServerInfo.properties
- 全部清空或改成无意义内容
properties
server.info=Unknown
server.number=0.0
server.built=Unknown
- 重新打包回 jar
bash
jar uvf catalina.jar org/apache/catalina/util/ServerInfo.properties
- 删除临时文件夹
bash
rm -rf org/
三、最后重启 Tomcat
bash
shutdown.sh
startup.sh
四、验证是否成功(自己测一下,确保过扫描)
1. 测响应头
bash
curl -I http://IP:端口
✅ 必须看不到:
- Server: Apache Tomcat/x.x.x
- X-Powered-By: Tomcat
2. 测 404 页面
bash
curl http://IP:端口/xxxxxx
✅ 必须看不到任何 Tomcat 版本号、错误堆栈。
最终效果(安全扫描认可)
- 无 Tomcat 版本号
- 无服务器名称
- 无错误页泄露信息
- 漏洞扫描无法识别中间件类型
- 可直接通过等保、渗透测试、安全扫描
总结
server.xml:隐藏 HTTP 头版本ErrorReportValve:隐藏错误页版本catalina.jar:彻底删除底层版本标识(最关键)- 自定义错误页:完全屏蔽系统默认页面