温馨提示×

Linux上Tomcat安全配置技巧

小樊
34
2025-12-06 23:09:59
栏目: 智能运维

Linux上Tomcat安全配置要点

一 基础与运行环境

  • 使用受支持的 Tomcat 9/10 LTS 版本,避免 Tomcat 6/7 等已停止维护的分支;从官方获取发行包并使用 sha512sum 校验完整性,降低被篡改风险。
  • 以非 root 专用用户运行:创建 tomcat_user:tomcat_group,安装目录属主设为该用户;通过 systemd 服务以最小权限启动,示例关键项:
    • User/Group、UMask=0007、Restart=always、Environment 设置 CATALINA_HOME/BASE
  • 目录与文件权限最小化:目录 750、文件 640,关键脚本如 bin/*.sh 700;部署目录与应用分离,避免应用写入 CATALINA_HOME
  • 启用访问日志与必要的审计:在 server.xml 配置 AccessLogValve,记录客户端 IP、请求方法、状态码、字节数、URL 等,便于溯源。
  • 如启用 SELinux,为 Tomcat 目录设置合适上下文(如日志可写、内容只读),或按需调整策略,避免因权限策略导致启动失败。

二 配置与组件加固

  • 删除或禁用默认应用与示例:webapps/docs、examples、host-manager、manager、ROOT;若无需 Web 部署,可清空或注释 conf/tomcat-users.xml 的用户配置。
  • 关闭管理接口或强限制来源 IP:保留管理应用时,在 webapps/manager/META-INF/context.xml 增加 RemoteAddrValve,仅允许内网或跳板机网段访问。
  • 隐藏版本信息:修改 lib/catalina.jarorg/apache/catalina/util/ServerInfo.properties,自定义 server.info/server.number;或在 server.xml Connector 添加 server 属性以隐藏版本。
  • 关闭自动部署与解压:在 server.xml HostunpackWARs=“false” autoDeploy=“false”,降低被植入 WAR 木马的风险。
  • 禁止目录浏览:在全局或应用的 web.xmlDefaultServlet listings 设为 false
  • 管理 AJP 连接器:若前端由 Nginx/Apache HTTPD 反向代理,建议直接注释或关闭 8009/AJP 连接器,减少攻击面。
  • 修改 shutdown 端口与口令:将 Server port=“8005” shutdown=“SHUTDOWN” 改为不易猜测的值,避免被恶意关停。

三 传输加密与访问控制

  • 启用 HTTPS/TLS:在 8443 端口配置 SSLHostConfig + Certificate,证书可用 Let’s Encrypt 获取并转换为 PKCS12 导入;强制仅开放 443/8443,将 8080 限制内网或关闭。
  • 强口令与最小权限:在 tomcat-users.xml 仅分配所需角色(如 manager-gui/manager-script/manager-status),禁用默认弱口令与共享账号,定期轮换。
  • 精细化 HTTP 方法 控制:
    • DefaultServlet 将 readonly=true(默认),拒绝 PUT/DELETE 等修改类方法。
    • 在应用的 web.xml 使用 security-constraint 对敏感路径限制 GET/POST 之外的动词。
    • 显式拒绝 TRACE 方法;如需 CORS,为 OPTIONS 预检放行但不授予业务权限。

四 监控与维护

  • 访问与错误日志:开启 AccessLogValve(记录源 IP、时间、方法、URL、状态码、UA、耗时等),自定义 40x/50x 错误页面,避免泄露堆栈与服务器信息。
  • JVM 与资源控制:通过 JAVA_OPTS 设置堆与 GC(如 -Xms/-Xmx-XX:+UseG1GC),按实例规格合理分配;设置连接器 connectionTimeout(如 30000 ms)与线程上限,防止慢速攻击与资源耗尽。
  • 进程与端口巡检:定期核查 ps -ef | grep tomcat 启动用户是否为 tomcat_user;确认仅开放必要端口(如 8080/8443/8005),不存在未使用的 AJP/8009
  • 安全更新与基线复核:关注 Tomcat 安全公告 与依赖组件漏洞,定期升级小版本修复;对 server.xml/web.xml 进行变更审计与回滚演练。

五 快速检查清单

检查项 期望状态/做法
运行用户 非 root,专用 tomcat_user,最小权限
版本与校验 使用 Tomcat 9/10,安装包 sha512 校验通过
管理应用 已删除或来源 IP 白名单(RemoteAddrValve)
端口与协议 仅开放 443/8443(HTTPS),关闭 AJP/8009 与对外 8080
部署与解压 autoDeploy/unpackWARs=false,WAR 走 CI/CD 受控发布
目录与权限 目录 750、文件 640、脚本 700,部署目录与应用分离
日志与审计 启用 AccessLogValve,自定义 40x/50x,关键操作留痕
方法控制 DefaultServlet readonly=true,显式拒绝 TRACE,按需放行 OPTIONS
版本隐藏 修改 ServerInfo.properties 或 Connector server 字段
更新与基线 订阅安全公告、定期小版本升级、配置基线复核与回滚预案

0