Linux服务器上保障Tomcat安全的可落地清单
一 基础与系统层加固
- 使用受支持的稳定版本(如Tomcat 10.x/9.x),及时应用官方补丁,关注并记录CVE修复进度。
- 创建专用系统用户与组(如tomcat:tomcat),禁止以root启动;将安装目录(如**/opt/tomcat**)属主设为该用户,脚本目录如bin/*.sh权限设为755,其余按最小权限收敛。
- 精简默认应用:删除webapps下的docs、examples、ROOT、host-manager、manager等;如无需Web部署,可清空webapps目录。
- 关闭自动部署:在conf/server.xml的Host中设置autoDeploy=“false”、deployOnStartup=“false”,必要时将unpackWARs=“false”。
- 隐藏版本信息:在conf/server.xml的Connector添加server="Apache"或在lib/catalina.jar中修改ServerInfo.properties的server.info/server.number。
- 禁止目录浏览:在conf/web.xml将**listings设为false**。
- 管理连接器暴露面:如无前置Apache/Nginx使用AJP,则在server.xml中注释或删除AJP Connector(8009);必要时仅开放必要端口(如8080/8443)。
二 认证授权与访问控制
- 强化tomcat-users.xml:删除无关账号,设置强密码(长度≥8,包含大小写字母、数字、特殊字符中至少3类);仅按需分配角色。
- 管理界面最小化授权:保留manager-status(只读监控)给监控账号;如需脚本化部署,仅授予manager-script;manager-gui/host-manager建议删除或限制来源IP访问。
- 启用访问控制:在server.xml的Host中使用RemoteAddrValve限制管理路径仅内网或跳板机网段可访问。
- 应用层安全约束:在应用的WEB-INF/web.xml配置**与(如FORM登录),对/admin/**等路径强制角色校验。
- 认证机制扩展:如需对接企业目录或定制流程,可使用JASPI等机制实现可插拔认证。
三 传输加密与网络边界
四 日志审计与运行监控
- 访问日志:在server.xml配置AccessLogValve,记录客户端IP、请求、状态码、UA、耗时等,便于审计与溯源。
- 错误与信息泄露防护:配置ErrorReportValve的showReport=“false”、showServerInfo=“false”,自定义40x/50x错误页面。
- 会话与Cookie安全:在conf/context.xml设置useHttpOnly=“true”;在应用的web.xml会话配置中启用cookie-config secure=“true”(仅HTTPS传输)。
- 运行监控与告警:启用JMX或Prometheus Exporter监控线程、连接、JVM与错误率;对异常登录、频繁失败、异常流量设置告警。
五 维护与变更管理
- 安全重启流程:变更前备份server.xml、web.xml、tomcat-users.xml与logs;用systemctl status tomcat检查状态,必要时先stop再start;变更后在localhost_access_log与catalina.out核验启动与访问情况。
- 定期审计与基线核查:例行检查tomcat-users.xml的用户与角色分配、未使用Connector、目录权限、证书有效期;对管理口与后台进行周期性渗透测试与漏洞扫描。
- 安全策略文件:按需启用与调优catalina.policy,为不同应用分配最小Java权限,降低被攻陷后的横向影响。