跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Tomcat 服务器安全加固实战指南

Tomcat 安全加固涉及端口隐藏、权限最小化及日志审计等核心环节。通过修改默认端口降低被扫描风险,禁用管理应用与默认用户防止未授权访问。配置非 root 启动减少入侵危害面,关闭目录列表与错误版本信息泄露敏感数据。结合 IP 白名单限制与响应头重写,配合完善的访问日志记录,构建多层防御体系保障 Web 服务稳定运行。

imJackJia发布于 2025/2/4更新于 2026/10/2592 浏览
Tomcat 服务器安全加固实战指南

Tomcat 安全加固实战指南

在生产环境中,Tomcat 的默认配置往往存在诸多安全隐患。作为运维或开发人员,我们需要从端口、权限、信息泄露及访问控制等多个维度进行加固,构建纵深防御体系。

1. 端口暴露面收敛

关闭或修改管理端口 8005 端口是 TCP 的管理端口,用于接收关闭指令。默认端口容易被扫描到,建议修改为不易猜测的高位端口(大于 1024)。

<Server port="8527" shutdown="SHUTDOWN">

AJP 协议保护 8009 端口用于 AJP 协议连接,若未受控可能引发远程代码执行漏洞。优化策略包括修改默认端口并结合防火墙限制访问来源。

<Connector port="8528" protocol="AJP/1.3" redirectPort="8443" secretRequired="true" />

注意:生产环境务必设置 secret 属性,防止未授权访问。

2. 管理端与权限控制

清理默认应用与用户 默认安装会包含示例应用和测试账户,应予以移除。删除 conf/tomcat-users.xml 后重启,Tomcat 会生成空配置文件,需手动添加必要的管理员账号并设置强密码。

同时,清理 webapps 目录下所有非必要的目录和文件,减少攻击面。

最小化启动权限 Tomcat 绝不应以 root 用户启动。请创建专用普通用户运行服务,并严格限制该用户对系统目录的读写权限。一旦服务被攻破,可避免黑客直接获取服务器最高权限。

<!-- server.xml 中 Context 配置示例 -->
<Context path="" docBase="/usr/local/tomcat_webapps" debug="0" reloadable="false" crossContext="false"/>

3. 信息泄露防护

禁用目录列表功能 在 conf/web.xml 中,DefaultServlet 的 listings 参数默认为 true,这会导致目录结构暴露。必须将其设置为 false。

<servlet>
    <servlet-name>default</servlet-name>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
</servlet>

隐藏版本信息 Tomcat 报错页面常包含版本号,便于攻击者定位漏洞。通过自定义错误页面重定向,可以屏蔽敏感信息。

<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>

重写响应头 修改 HTTP 响应头中的 Server 字段,避免直接暴露 Tomcat 标识。

server=WebServer

4. 访问控制与审计

IP 白名单限制 对于管理后台或特定接口,建议通过 Valve 组件限定访问 IP 来源,仅允许内网或特定网段访问。

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.*|192.168.10.*" deny="" />

完善日志记录 开启访问日志并记录 Referer 和 User-Agent,有助于后续的安全审计与异常分析。

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>

通过以上步骤,我们可以显著提升 Tomcat 的基础安全性。当然,安全是一个持续的过程,还需结合 WAF、定期补丁更新等策略共同维护。

目录

  1. Tomcat 安全加固实战指南
  2. 1. 端口暴露面收敛
  3. 2. 管理端与权限控制
  4. 3. 信息泄露防护
  5. 4. 访问控制与审计

更多推荐文章

查看全部
  • IntelliJ IDEA 搭建 Spring Boot Web 项目实战指南
  • Node.js 通过 WASI 运行 WebAssembly 应用实现性能提速
  • Java 大厂实习面试高频考点:MySQL、Redis、并发与算法实战
  • Spring Cloud 熔断降级详解:Sentinel 实战指南
  • Vben Admin:基于 Vue 3 的企业级中后台管理系统框架
  • 基于 SpringBoot 的无人机智能管控系统小程序设计与实现
  • 主流C语言开发工具对比:VS/CLion/VSCode/Dev C++选型指南
  • Llama Factory 实战:快速切换 Alpaca 与 Vicuna 对话模板
  • Android WebView shouldInterceptRequest 异步加载
  • OpenClaw 爆红启示:AI 助手如何改写开源规则
  • Llama 3-8B-Instruct 在昇腾 NPU 上的 SGLang 性能实测
  • JDK 21 安装与环境配置实战
  • 50 道前端核心面试题:涵盖 HTML CSS JS Vue React TypeScript 及工程化
  • 群晖NAS搭建Git Server:从零配置到团队协作
  • 医疗 AI 场景下算法编程深度解析(一)
  • 开源硬件与Python融合:青少年科技创新教育实践指南
  • 无人机航拍目标检测与语义分割数据集汇总
  • ERNIE-4.5-0.3B 超轻量模型部署与测评指南
  • SubtitleEdit Purfview Faster Whisper XXL 引擎安装失败排查指南
  • 低代码结合大模型:中小企业半天构建专属SaaS应用路径

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online