Linux环境下Tomcat安全漏洞防范
最近几个Tomcat安全漏洞值得所有运维和开发团队重点关注。下面这份指南,将帮你快速锁定风险、完成加固,并建立有效的防护基线。
一 近期漏洞与修复基线
如果你的环境中还在运行旧版本Tomcat,那么下面这几个漏洞需要优先处置。官方已经发布了修复版本,建议立即对照下表,评估升级计划。
| 漏洞编号 | 风险级别 | 影响范围 | 修复版本 |
|---|---|---|---|
| CVE-2025-55752 | 高危(特定配置可达RCE) | Tomcat 11.0.0-M1–11.0.10、10.1.0-M1–10.1.44、9.0.0.M11–9.0.108 | 11.0.12、10.1.47、9.0.110 |
| CVE-2025-55754 | 中危 | Tomcat 11.0.0-M1–11.0.10、10.1.0-M1–10.1.44、9.0.0.40–9.0.108 | 11.0.12、10.1.47、9.0.110 |
| CVE-2025-61795 | 中危(DoS) | Tomcat 11.0.0-M1–11.0.11、10.1.0-M1–10.1.46、9.0.0.M1–9.0.109 | 11.0.12、10.1.47、9.0.110 |
一句话总结:当前的安全基线是Tomcat 11.0.12、10.1.47或9.0.110。如果因为某些原因无法立即升级,别慌,结合下文提到的临时缓解措施,也能在第一时间把风险降下来。
二 立即执行的加固清单
除了打补丁,一套完整的加固策略同样关键。下面这份清单,涵盖了从账户权限到日志监控的各个环节,建议逐项核对。
- 升级与补丁管理
- 将Tomcat升级至已修复的安全基线版本。记住,升级不是小事,务必先在测试环境充分验证,并制定好变更与回退预案。
- 运行账户与文件权限
- 绝对禁止使用root账户运行Tomcat。正确的做法是,创建一个专用用户(比如`tomcat`),并赋予其最小必要权限。同时,安装目录的权限也要收紧,确保只有属主才有读写执行的权力。
- 管理应用与示例组件
- 生产环境下,那些默认的示例和管理应用往往是最大的累赘。二话不说,直接删除`webapps`目录下的`docs`、`examples`、`host-manager`、`manager`和`ROOT`应用。如果确实不需要Web管理界面,移除或严格限制对其的访问。
- 端口与协议
- 网络层面要最小化开放。只开放必要的HTTP/HTTPS端口。如果业务用不到AJP协议,那么请在`server.xml`中果断关闭8009端口的AJP连接器。另外,把默认的8080端口改掉,也是个增加攻击成本的好习惯。
- 部署与上传安全
- 关闭自动部署和热部署功能(`autoDeploy`、`deployOnStartup`),这能有效防止恶意WAR包被自动加载。同时,在`web.xml`中限制或禁用PUT、DELETE等危险的HTTP方法。对于文件上传目录,务必设置禁止脚本执行。
- 目录浏览与信息泄露
- 在`web.xml`中将目录列表功能设为`false`,防止目录结构被窥探。此外,修改或隐藏Server响应头中的版本信息,减少被攻击者指纹识别的风险。
- 加密与访问控制
- 启用SSL/TLS配置HTTPS是传输安全的基础。对于管理接口,仅放通必要的来源IP,并实施强身份认证和基于角色的访问控制(RBAC)。
- 日志与监控
- 安全离不开可追溯性。确保访问日志和`catalina.out`日志已启用并定期审计。针对异常请求、频繁的失败登录、PUT/DELETE方法滥用等行为,配置告警规则。日志的留存周期也要足够长,以备事后分析。
三 关键配置示例
光说不练假把式。这里提供几个核心的安全配置片段,你可以直接对照修改。
- 关闭 AJP 连接器(server.xml)
- 禁用目录浏览(web.xml)
default org.apache.catalina.servlets.DefaultServlet listings false 1 - 限制危险 HTTP 方法(web.xml,在需要保护的应用中配置)
Restricted /* PUT DELETE - 启动与权限(systemd 示例)
# /etc/systemd/system/tomcat.service [Unit] Description=Apache Tomcat After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JA VA_HOME=/usr/lib/jvm/ja va-11-openjdk" ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh Restart=on-failure [Install] WantedBy=multi-user.target
四 临时缓解与验证
升级需要时间窗口,在此之前,可以针对特定漏洞采取临时措施,并验证整体安全状态。
- 针对 CVE-2025-55752(URL 重写绕过)
- 如果你没有使用RewriteValve或重写规则,立即禁用它。如果必须使用,务必确保规则中不会对路径进行解码或规范化后再匹配,要保证对`/WEB-INF/`、`/META-INF/`的访问始终被严格限制。同时,临时禁用PUT或WebDA V功能,直到完成升级。
- 针对 CVE-2025-55754(控制台 ANSI 转义序列注入)
- 这个问题主要影响Windows控制台环境,Linux环境风险相对较低。如果你的Tomcat确实运行在Windows上,建议禁用控制台ANSI支持,或者尽快升级。
- 针对 CVE-2025-61795(多文件上传 DoS)
- 在应用层面或前端袋里(如Nginx)上,限制单次和并发上传的文件大小与速率。制定并执行上传目录的定期清理策略,同时监控临时文件目录和磁盘使用情况。当然,最终还是要尽快升级到修复版本。
- 通用验证
- 加固完成后,别忘了验证效果。使用`nmap`或`ss`命令确认只有必要端口对外开放;访问一个不存在的资源,检查返回的是404错误而不是目录列表;查看HTTP响应头,确认不包含详细的Server版本信息;对管理接口,测试来源IP白名单和强认证是否生效;最后,翻看`catalina.out`和访问日志,确认没有异常的PUT/DELETE请求或其他可疑活动。
