温馨提示×

Debian环境下Tomcat安全设置

小樊
41
2025-11-30 04:11:42
栏目: 智能运维

Debian环境下Tomcat安全设置

一 系统与运行账户加固

  • 保持系统与应用为最新:执行sudo apt update && sudo apt upgrade,及时修补漏洞。
  • 创建专用系统用户运行Tomcat(禁止登录):
    • 创建用户与组:sudo adduser --system --group --shell /bin/false tomcat
    • 调整目录属主(Debian打包版常见路径):
      • sudo chown -R tomcat:tomcat /var/lib/tomcat9 /var/log/tomcat9 /etc/tomcat9
  • 配置服务以最小权限运行(若使用systemd服务单元):
    • 在单元文件**[Service]**中设置:User=tomcatGroup=tomcatUMask=0007
    • 重新加载并重启:sudo systemctl daemon-reload && sudo systemctl restart tomcat9
  • 说明:Debian的tomcat9包通常已提供系统服务与专用用户,上述步骤用于校验与加固;如使用官方压缩包安装,需自建systemd单元并指定JAVA_HOME/CATALINA_HOME等环境变量。

二 最小化攻击面

  • 删除示例与文档应用:
    • sudo rm -rf /var/lib/tomcat9/webapps/docs /var/lib/tomcat9/webapps/examples
  • 管理控制台访问控制:
    • 生产环境建议直接移除管理应用:sudo rm -rf /var/lib/tomcat9/webapps/manager /var/lib/tomcat9/webapps/host-manager
    • 如确需保留,务必仅在内网开放,并配置强密码与最小权限账户(见第四节)。
  • 关闭不必要的连接器:
    • 如无前置Apache HTTP Server + mod_jkIIS ARR场景,建议注释或删除AJP连接器(默认端口8009)以减少攻击面。
  • 修改默认HTTP端口为非标准端口(可选):在**/etc/tomcat9/server.xml中调整为如8081/1234**等,降低自动化扫描命中率。
  • 隐藏版本信息:在server.xml的**上设置server="YourServerName"属性,避免泄露Apache Tomcat/版本号**。

三 加密通信与访问控制

  • 启用HTTPS/TLS:在server.xml配置8443端口的SSL连接器,使用有效证书(生产建议由Let’s Encrypt等CA签发)。示例:
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="/etc/ssl/tomcat/keystore.jks"
               keystorePass="changeit"/>
    
    完成后重启服务:sudo systemctl restart tomcat9
  • 边界与主机防火墙:仅放通必要来源IP与端口(示例为UFW
    • 仅内网访问管理(若保留):sudo ufw allow from 192.168.1.0/24 to any port 8081,8443 proto tcp
    • 公网仅开放443(建议前置反向代理/负载均衡终止TLS):sudo ufw allow 443/tcp
  • 建议架构:对外仅暴露443,由反向代理处理TLS与部分WAF/限速策略,Tomcat监听127.0.0.1:8080/8443

四 认证授权与日志监控

  • 强化tomcat-users.xml
    • 仅授予必要角色,使用强密码并定期轮换;如保留管理应用,仅在内网开放并限制可登录来源。
    • 示例(保留管理台时的最小配置):
      <tomcat-users>
        <role rolename="manager-gui"/>
        <role rolename="admin-gui"/>
        <user username="deploy" password="StrongPassw0rd!" roles="manager-gui"/>
      </tomcat-users>
      
  • 启用LockOutRealm防暴力破解:
    <Realm className="org.apache.catalina.realm.LockOutRealm">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
    </Realm>
    
  • 会话与错误信息安全:
    • 在**/etc/tomcat9/context.xml启用useHttpOnly**(可叠加secure标记在HTTPS场景):
      <Context useHttpOnly="true">
      
    • server.xml的**内将ErrorReportValveshowReportshowServerInfo设为false**,避免泄露堆栈与版本。
  • 日志与审计:
    • 实时查看:sudo tail -f /var/log/tomcat9/catalina.out
    • 部署Logwatch做日报:sudo apt install logwatch && sudo logwatch --output mail
  • 变更生效:每次修改配置后执行sudo systemctl restart tomcat9并回归测试。

0