温馨提示×

Tomcat在Ubuntu上如何安全配置

小樊
32
2025-12-11 02:08:12
栏目: 智能运维

Ubuntu上Tomcat的安全配置清单

一 基础安全基线

  • 使用受支持的 LTS JDK(推荐:JDK 11/17),先执行 java -version 验证环境可用。
  • 创建专用系统用户运行 Tomcat(禁止 root):sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat,并将安装目录属主设为该用户。
  • 下载 Apache 官方二进制包,用 sha512sum 校验完整性,避免使用第三方修改版。
  • 目录规划建议:将 Tomcat 解压至 /srv/tomcat/opt/tomcat,与系统其他目录隔离。
  • 以服务方式运行:创建 Systemd 单元,设置 User=tomcatGroup=tomcatUMask=0007,并配置 JAVA_HOMECATALINA_HOMECATALINA_BASE 等环境变量。

二 运行与访问控制

  • 降权与最小权限:确保 Tomcat 以 非 root 用户运行;为安装目录设置合理权限(目录 750、文件 640),关键脚本如 bin/*.sh 设为 700,敏感文件 conf/tomcat-users.xml 设为 600
  • 移除或禁用默认应用:删除 webapps 下不需要的 docs、examples、ROOT、host-manager、manager,减少攻击面。
  • 禁用自动部署:在 conf/server.xml 中将 autoDeploydeployOnStartup 设为 false,避免热部署引入风险。
  • 管理接口保护:
    • 仅保留必要角色,使用 强密码;谨慎授予高权限角色(如 manager-scriptmanager-jmx)。
    • 通过 Valve 限制来源 IP,例如在 webapps/manager/META-INF/context.xml 添加 RemoteAddrValve 仅允许内网或跳板机访问;若无需远程管理,可直接删除 manager 应用。
  • 防火墙与端口:使用 UFW 仅开放必要端口(如 8080/8443 或反向代理的 80/443),避免暴露管理端口到公网。

三 加密与传输安全

  • 启用 HTTPS/TLS:建议将 8443 端口用于 HTTPS。使用 Let’s Encrypt 获取证书后转换为 PKCS12 并配置到 Tomcat:
    • 转换证书:openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out /srv/tomcat/conf/keystore.p12 -name tomcat -CAfile chain.pem -caname root -password pass:密钥密码
    • conf/server.xml 配置 HTTPS Connector(示例):
      <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                 maxThreads="150" SSLEnabled="true" scheme="https" secure="true">
        <SSLHostConfig>
          <Certificate certificateKeystoreFile="conf/keystore.p12"
                       type="RSA" certificateKeystorePassword="密钥密码"/>
        </SSLHostConfig>
      </Connector>
      
  • 如由 Nginx/Apache 反向代理对外提供 443,Tomcat 侧可仅监听本地 8080,减少直接暴露。

四 服务管理与维护

  • Systemd 服务示例(要点):
    [Unit]
    Description=Apache Tomcat Web Application Container
    After=syslog.target network.target
    
    [Service]
    Type=forking
    Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk
    Environment=CATALINA_PID=/srv/tomcat/temp/tomcat.pid
    Environment=CATALINA_HOME=/srv/tomcat
    Environment=CATALINA_BASE=/srv/tomcat
    ExecStart=/srv/tomcat/bin/startup.sh
    ExecStop=/srv/tomcat/bin/shutdown.sh
    User=tomcat
    Group=tomcat
    UMask=0007
    RestartSec=10
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    执行:sudo systemctl daemon-reload && sudo systemctl enable --now tomcat
  • 安全重启流程:
    • 检查状态:sudo systemctl status tomcat
    • 备份关键配置与日志:sudo cp /srv/tomcat/conf/server.xml{,.bak}sudo cp -r /srv/tomcat/logs logs.bak
    • 优雅停止:sudo systemctl stop tomcat 并确认进程退出
    • 启动并验证:sudo systemctl start tomcatsudo systemctl status tomcattail -f /srv/tomcat/logs/catalina.out

五 持续加固与监控

  • 版本与补丁:保持 Tomcat 与系统 的安全更新,及时修复已知漏洞。
  • 组件最小化:如业务不使用 AJP,在 server.xml 中移除 AJP Connector。
  • 日志与告警:集中采集与轮转 catalina.outlocalhost*.log 等日志,关注异常访问与管理登录失败。
  • 访问控制复核:定期审计 tomcat-users.xmlcontext.xml 的权限与 IP 白名单,确保仅授权必要人员与网段。

0