安全扫描:彻底隐藏 Tomcat 版本号 + 服务器名(100% 过扫描)

安全扫描:彻底隐藏 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 版本!

操作步骤:

  1. 进入 Tomcat 的 lib 目录
bash 复制代码
cd TOMCAT_HOME/lib
  1. 解压 catalina.jar 里的版本配置文件
bash 复制代码
jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties
  1. 编辑这个文件
bash 复制代码
vim org/apache/catalina/util/ServerInfo.properties
  1. 全部清空或改成无意义内容
properties 复制代码
server.info=Unknown
server.number=0.0
server.built=Unknown
  1. 重新打包回 jar
bash 复制代码
jar uvf catalina.jar org/apache/catalina/util/ServerInfo.properties
  1. 删除临时文件夹
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 版本号
  • 无服务器名称
  • 无错误页泄露信息
  • 漏洞扫描无法识别中间件类型
  • 可直接通过等保、渗透测试、安全扫描

总结

  1. server.xml:隐藏 HTTP 头版本
  2. ErrorReportValve:隐藏错误页版本
  3. catalina.jar:彻底删除底层版本标识(最关键)
  4. 自定义错误页:完全屏蔽系统默认页面
相关推荐
砍材农夫12 分钟前
物联网 基于netty核心实战-安全tls
java·开发语言·前端·物联网·安全
nan madol15 分钟前
Rocky Linux 9.5 部署 Percona XtraDB Cluster (PXC) 集群
linux·运维·服务器
zincsweet15 分钟前
Linux 命名管道(FIFO)详解:原理分析、源码封装与通信流程图解
linux·服务器·c++·流程图
|_⊙20 分钟前
进程间通信(System V 标准下的多种通信方式)
linux·运维·服务器
无风听海40 分钟前
构建现代 Web 应用的令牌安全体系:Refresh Token Rotation、HttpOnly Cookie 与 Grace Period 全解析
前端·安全
宋浮檀s43 分钟前
应急响应——Web高危漏洞应急(SQL注入+XSS跨站+文件上传)
前端·网络·安全·web安全·xss
阿部多瑞 ABU44 分钟前
一次针对大语言模型的“虚构历史前提注入”红队测试实录:当AI相信了不存在的对话历史
网络·人工智能·安全
原来是猿1 小时前
性能测试(1)
运维·服务器·python·压力测试
郝学胜-神的一滴1 小时前
CMake 012:Linux 下动态库与可执行程序的单文件构建
linux·服务器·开发语言·c++·软件构建·cmake
aaaffaewrerewrwer2 小时前
一个真正“完全浏览器本地运行”的 AVIF 转 WebP 在线工具(无需上传)
安全·个人开发