温馨提示×

Linux Tomcat安全配置有哪些要点

小樊
34
2025-11-23 05:16:54
栏目: 智能运维

Linux Tomcat 安全配置要点

一 基础与运行环境

  • 使用官方渠道的最新稳定版本,并对安装包进行SHA1/PGP 校验,避免被篡改的二进制文件进入生产环境。
  • 非 root用户运行 Tomcat,创建专用系统账号(如tomcat),禁止登录 shell,最小化操作系统权限。
  • 目录与文件权限最小化:Tomcat 安装目录属主属组设为tomcat:tomcat,仅授予必要权限;部署目录与运行用户分离,避免应用目录可被 Tomcat 进程写入。
  • 如启用 SELinux,为 Tomcat 目录设置合适上下文(如日志目录可设为 httpd_sys_rw_content_t),变更后用 restorecon 或策略持久化,确保重启后仍然有效。

二 配置与组件加固

  • 删除或禁用默认应用与示例:docs、examples、host-manager、manager,必要时直接删除 $CATALINA_HOME/webapps 下默认内容,减少攻击面。
  • 关闭管理端或强限制来源 IP:若不使用管理应用,直接删除;若必须使用,编辑对应应用的 META-INF/context.xml,仅对受控网段开放(RemoteAddrValve)。
  • 关闭自动部署与热部署:在 server.xml 中设置 unpackWARs=“false” autoDeploy=“false”,防止恶意 WAR 被自动加载。
  • 隐藏版本与 Banner:在 Connector 增加 server=“自定义标识”;或解压 catalina.jar 修改 ServerInfo.properties 中的 server.info / server.number
  • 禁用 AJP 或限制访问:前端为 Nginx 时建议直接注销 AJP 连接器(8009);如必须使用,仅在内网开放并配合防火墙与访问控制。
  • 保护关闭端口:修改 的端口与关闭命令,避免被外部轻易关停。
  • 禁止目录列表:在全局或应用的 web.xml 中确保 listings=false
  • 自定义错误页面:为 40x/50x 配置跳转,避免泄露堆栈与版本信息。
  • 会话与 Cookie:设置合理的 session-timeout(如 60 分钟);在 context.xml 启用 useHttpOnly=true;在 web.xmlsession-config/cookie-config 中启用 secure(仅 HTTPS 传输)。

三 网络与访问控制

  • 仅通过反向代理访问:将 HTTP Connector 的 address 设为 127.0.0.1 或内网地址,使 Tomcat 仅监听本机/内网;配合 iptables/firewalld 仅允许 Nginx 所在 IP 访问 8080/8443
  • 反向代理安全头:在 Nginx 设置 proxy_set_header Host $host; X-Real-IP $remote_addr; X-Forwarded-For $proxy_add_x_forwarded_for;,并在 Tomcat 侧校验 Host 头,仅允许合法域名。
  • 管理端来源限制:对 /manager//host-manager/ 使用 RemoteAddrValve 白名单,仅内网或跳板机可访问。
  • 加密传输:启用 HTTPS/TLS,在 server.xml 配置 8443 连接器,使用受信任证书(JKS/PKCS12),并开启 secure/SSLEnabled 等参数。

四 认证授权与日志审计

  • 精简与加固 tomcat-users.xml:删除无关账号,按“最小权限”分配角色;为管理接口仅授予必要的最小角色(如 manager-script/manager-status 等,避免授予 manager-gui/admin-gui 给普通运维)。
  • 口令策略:长度至少 8 位,包含数字/小写/大写/特殊字符中至少 3 类;定期更换,禁止复用。
  • 应用级访问控制:在应用的 WEB-INF/web.xml 使用 + 配置 URL 与 HTTP 方法 的访问权限,对管理路径强制认证与角色校验。
  • 启用访问日志:在 server.xml 中配置 AccessLogValve,记录 client IP、请求时间、方法、URI、状态码、UA 等,便于审计与溯源。
  • 方法级安全:保持 DefaultServlet readonly=true(默认拒绝 PUT/DELETE 等修改类方法);如业务需要启用 PUT/DELETE,应通过应用层鉴权与校验;对 TRACE 方法建议禁用。

五 运维与持续检查

  • 启动与权限:以 systemd 管理 Tomcat,在 [Service] 中指定 User=tomcat / Group=tomcat;确保脚本与目录权限正确,避免越权执行。
  • 变更与回退:修改 server.xml / web.xml / tomcat-users.xml 前先备份;变更后校验配置语法并滚动重启,观察 catalina.out 与访问日志无异常。
  • 基线核查清单:
    • 无默认应用与示例、无弱口令与多余账号;
    • autoDeploy/unpackWARs 关闭、目录列表关闭、版本信息隐藏;
    • AJP 已禁用或严格限制、8005 已加固;
    • 管理端仅内网可访问、已启用 HTTPS
    • 访问日志与 AccessLogValve 正常输出;
    • 定期更新 Tomcat 与依赖组件,关注 CVE 通告并及时修补。

0