Ubuntu Tomcat安全如何设置
小樊
32
2025-12-26 19:27:07
Ubuntu 上 Tomcat 的安全设置清单
一 运行身份与最小权限
- 创建专用系统用户并降权运行(禁止登录、无 shell):sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat;sudo chown -R tomcat:tomcat /opt/tomcat。若使用 systemd,创建服务文件 /etc/systemd/system/tomcat.service,显式指定 User=tomcat、Group=tomcat,并配置环境变量(JAVA_HOME、CATALINA_HOME 等),随后执行 systemctl daemon-reload && systemctl enable --now tomcat。目录权限建议:conf 770(仅属主与组可读写执行)、logs 755(审计需要)、webapps 755(禁止执行)、work 700(隔离临时文件)。
二 最小化攻击面
- 删除默认应用与示例:rm -rf /opt/tomcat/webapps/{docs,examples,ROOT,host-manager,manager}。禁用自动部署与解包:在 server.xml 的 Host 中将 unpackWARs 与 autoDeploy 设为 false,必要时将 deployOnStartup 设为 false。关闭未使用的 AJP 协议(默认端口 8009):在 server.xml 注释 AJP Connector。隐藏版本信息:在 Connector 增加 server=“Custom Server” 属性,或编辑 catalina.jar 中 org/apache/catalina/util/ServerInfo.properties 替换版本字符串。禁止目录列示:在应用的 web.xml 中确保 listings 为 false。自定义错误页面(404/500)以避免泄露路径与版本信息。
三 加密通信与访问控制
- 启用 HTTPS:生成密钥库 keytool -genkeypair -alias tomcat -keyalg RSA -keystore /opt/tomcat/keystore.jks -validity 365;在 server.xml 配置 8443 连接器(示例:SSLEnabled=“true”、keystoreFile、keystorePass、scheme=“https”、secure=“true”)。可选:在 web.xml 添加 将 设为 CONFIDENTIAL 实现 HTTP 到 HTTPS 重定向。防火墙仅开放必要端口:sudo ufw allow 22/tcp,8080/tcp,8443/tcp;如需白名单,可限制来源 IP。管理界面保护:仅在需要时启用 manager/host-manager,tomcat-users.xml 仅授予最小必要角色并使用强密码;通过 RemoteAddrValve 限制来源网段(如 allow=“192.168.1.\d+”)。
四 服务、部署与日志监控
- 服务可靠性:在 systemd 服务中设置 Restart=always、RestartSec=10、合适的 UMask=0007,确保异常退出自动拉起并降低权限泄露风险。JVM 与连接器调优(示例):-Xms 512M -Xmx 1024M、-server、-XX:+UseParallelGC;连接器可按并发调优(如 maxThreads、acceptCount)。安全部署流程:采用“先停后更、替换 WAR、再启动”的原子化方式,避免热修改;必要时先备份 webapps、conf。日志与审计:定期 tail -f 查看 catalina.out、localhost_access_log,配置 logrotate 防止日志过大;结合监控(如 Prometheus+Grafana)与入侵防护(如 fail2ban)提升可观测性与安全性。
五 维护与合规
- 持续更新 Tomcat 与 JDK 至稳定安全版本;若通过包管理器安装,执行 sudo apt update && sudo apt upgrade;手动安装则关注官网发布并及时替换旧文件。定期核查用户与权限、证书有效期、备份策略与恢复演练,形成变更记录与回滚预案。