在生产环境中跑Tomcat,安全配置这道坎绕不过去。很多团队上线前忙着调性能、加功能,安全方面却往往在“按默认配置跑就行”的侥幸心理下埋下隐患。以下几条加固措施,都是经过实战验证的硬功夫,建议逐条落地。
1. 及时更新Tomcat版本
保持Tomcat及其依赖库为最新稳定版本,这绝不是形式主义。定期扫一眼Apache Tomcat官方安全公告,像CVE-2025-24813远程代码执行、CVE-2024-50379文件上传这类高危漏洞,补丁一出来就该安排上。在Debian环境下,用sudo apt update && sudo apt upgrade tomcat就能完成更新。不过提醒一句:升级前务必备份配置文件和应用程序,别因为更新把业务搞挂了。
2. 最小化安装与端口管控
默认安装自带的docs、examples这些示例应用,妥妥的攻击面,直接删掉就好。另外AJP协议(默认8009端口)如果业务用不上,果断在server.xml里注释或删掉对应的Connector。端口方面,只开放HTTP 8080和HTTPS 8443就够了,配合ufw做访问限制:sudo ufw allow 8080/tcp、sudo ufw allow 8443/tcp,其他端口一概禁止。
3. 权限与认证强化
千万别用root跑Tomcat,这是大忌。创建专用低权限用户:sudo useradd -r -d /opt/tomcat -s /bin/false tomcat,然后sudo chown -R tomcat:tomcat /opt/tomcat设置所有权,再用sudo chmod -R 750 /opt/tomcat限制权限——只有所有者能读写执行,组和其他用户只有读和执行权限,写权限严格收回。密码方面,tomcat-users.xml里的默认密码立刻改掉,至少8位,包含大小写字母、数字和特殊符号。高权限角色(如manager-script、manager-jmx)非必要不使用,管理界面只授权给确实需要的人。
4. 管理界面与访问控制
管理界面(manager、host-manager)如果必须开放,一定要做IP白名单。在server.xml的中添加,只允许内网特定网段访问。如果业务不需要管理界面,最简单粗暴的办法:直接删除webapps目录下的manager和host-manager文件夹。另外,Shutdown端口(默认8005)务必定死——在server.xml中将,让攻击者无法通过端口发送shutdown命令。
5. SSL/TLS加密配置
通信加密是基本要求,不然中间人攻击分分钟窃取数据。推荐使用Let's Encrypt这类免费受信任CA签发的证书。拿到证书文件(.crt)和私钥(.key)后,放到Tomcat的conf目录下,修改server.xml中对应的Connector配置:
重启Tomcat后通过https://your_domain:8443访问,强制用户使用HTTPS。别忘了做HTTP到HTTPS的重定向。
6. 日志监控与安全审计
日志是发现入侵的第一道警报。定期翻看logs/catalina.out和logs/localhost_access_log.*.txt,重点关注频繁的登录失败、大量404错误、可疑的POST请求。小规模部署可以用tail -f /opt/tomcat/logs/catalina.out实时盯着;规模上来以后,建议上ELK Stack或Splunk做自动化监控。另外设置好日志轮转,别让日志文件把磁盘撑爆。
7. 高级安全措施
最后几个容易忽略的点:
禁用文件上传的危险配置 —— 在conf/web.xml中将readonly参数设为true:
readonly
true
禁用HTTP PUT方法 —— 攻击者喜欢通过PUT上传恶意JSP文件。在web.xml中添加安全约束:
Disable PUT
/*
PUT
开启账户锁定机制 —— 通过tomcat-users.xml或自定义Realm配置登录失败次数限制(比如连续5次失败锁定账户10分钟),能有效防止暴力破解。
以上七步走完,Tomcat的安全水平至少能提到及格线以上。安全配置不是一次性工作,版本更新、日志审计、访问控制都需要持续维护。
