Tomcat在Linux上的安全策略
小樊
45
2025-12-10 22:38:06
Tomcat 在 Linux 上的安全策略
一 身份与访问控制
- 使用非 root用户运行 Tomcat,遵循最小权限原则;为 Tomcat 服务创建专用系统用户(如 tomcat),并限制其家目录与部署目录的权限,避免越权访问。
- 严格管理管理接口:如非必要,删除或禁用 webapps 下的 manager/、host-manager/、examples/、docs/ 等默认应用;若必须使用管理端,仅在内网开放,并通过 IP 白名单限制来源。
- 精细化授权与认证:在 $CATALINA_HOME/conf/tomcat-users.xml 中仅保留必要角色与账户;在应用的 WEB-INF/web.xml 使用 与 配置基于角色的访问控制(如 BASIC 认证),对 /admin/ 等敏感路径进行保护。
- 保护关闭端口与命令:修改 server.xml 中的 ,避免被恶意关闭;必要时将 8005 仅绑定 127.0.0.1 或改为高位随机端口。
二 传输加密与协议安全
- 启用 HTTPS/TLS:使用 JDK keytool 生成密钥库,配置 server.xml 的 8443 连接器(示例:SSLEnabled=“true”、keystoreFile、keystorePass、sslProtocol=“TLS”),对外服务强制跳转 HTTPS。
- 禁用不安全与不必要的 HTTP 方法:在 web.xml 的 DefaultServlet 中将 readonly 设为 true,禁止 PUT/DELETE 等危险方法;如业务不需要 AJP,在 server.xml 中注释或删除 AJP Connector(8009),减少攻击面。
- 隐藏服务标识:在 Connector 上设置 server=“自定义标识” 或在 ServerInfo.properties 中调整 server.info/server.number,降低版本信息泄露风险。
三 运行与资源控制
- 关闭自动部署与解包:在 server.xml 的 Host 中将 autoDeploy=“false”、unpackWARs=“false”,避免热部署带来的代码注入与路径穿越风险。
- 线程与连接控制:合理设置 maxThreads、minSpareThreads、maxSpareThreads、acceptCount,并配置 connectionTimeout(如 30000 ms),缓解慢速攻击与资源耗尽。
- 会话与 Cookie 安全:在 context.xml 启用 useHttpOnly=“true”;在 web.xml 的 session-config 中设置 ,确保会话 Cookie 仅通过 HTTPS 传输。
- 默认应用与目录清理:删除 webapps 下的默认应用与示例文件,减少已知漏洞利用面。
四 日志审计与监控
- 启用访问日志:在 server.xml 的 中配置 AccessLogValve,记录 客户端 IP、请求方法、URL、Referer、User-Agent 等关键字段,便于溯源与威胁分析。
- 自定义错误页面:在 web.xml 配置 处理 404/403/500 等错误,避免堆栈与版本信息泄露,同时提升用户体验。
- 变更留痕与基线:对 server.xml、web.xml、tomcat-users.xml 等配置变更纳入版本管理与审计;定期核查 catalina.out 与访问日志的异常模式。
五 系统与服务加固
- 防火墙与网络隔离:仅开放必要端口(如 8080/8443),对管理端口 8005 与(若使用)8009 实施来源限制或仅本地监听;与前端 Nginx/Apache 之间使用本地回环或受控网络。
- 文件与目录权限:部署目录与应用目录分离,Tomcat 运行用户对代码与配置仅有只读权限,日志目录可写;脚本与二进制文件限制为最小执行权限。
- 安全更新与漏洞治理:保持 JDK 与 Tomcat 为受支持版本,及时修补已知漏洞;对公网暴露面进行最小化,并定期巡检。