Ubuntu中Tomcat的安全性如何保障
导读:Ubuntu 上 Tomcat 的安全性保障清单 一 基础运行环境与权限 使用专用的非 root系统用户运行 Tomcat(如创建用户 tomcat,家目录 /opt/tomcat,Shell 为 /bin/false),并将安装目录属主...
Ubuntu 上 Tomcat 的安全性保障清单
一 基础运行环境与权限
- 使用专用的非 root系统用户运行 Tomcat(如创建用户 tomcat,家目录 /opt/tomcat,Shell 为 /bin/false),并将安装目录属主设为该用户,避免被攻破后获取 root 权限。
- 通过 systemd 托管 Tomcat,在单元文件中显式声明 User=tomcat / Group=tomcat,并配置合适的 JAVA_HOME / CATALINA_HOME 等环境变量。
- 仅赋予 Tomcat 目录最小必要权限(如 755 目录、640 配置文件),日志与敏感目录仅对 tomcat 组可读写。
- 示例要点:创建用户与目录、设置属主、配置 systemd 服务、最小权限与 UMASK 控制。
二 最小化攻击面与访问控制
- 删除或禁用不需要的内置应用:清理 webapps 下的 docs / examples / ROOT / host-manager / manager。
- 禁用或移除 AJP 连接器(如未使用 Apache httpd 的 mod_jk/mod_proxy_ajp),减少历史漏洞面。
- 关闭自动部署:在 server.xml 中将 autoDeploy 与 deployOnStartup 设为 false,避免热部署引入风险。
- 管理界面访问控制:
- 直接删除管理应用;或
- 保留时仅在内网开放,并在 server.xml / META-INF/context.xml 中对 manager / host-manager 做 IP 白名单 限制;
- 仅授予必要角色,避免使用高权限角色(如 manager-script / manager-jmx)。
- 启用失败登录锁定(如配置 FailedLoginAttempts)以缓解暴力破解。
- 修改默认端口(如将 8080 改为非标准端口)仅作为“安全通过 obscurity”的辅助手段,不能替代认证与加密。
三 传输加密与协议安全
- 为管理端与对外接口启用 HTTPS/TLS:在 server.xml 配置 SSL/TLS Connector,使用有效证书(Let’s Encrypt 或企业 CA),并禁用明文 HTTP。
- 禁用不安全协议与弱套件:仅启用 TLSv1.2+,禁用 SSLv3 / TLSv1.0 / TLSv1.1 与已知弱加密套件。
- 在反向代理(Nginx/Apache)前置时,亦可在代理层终止 TLS,后端 Tomcat 使用 HTTP 与代理通信(确保代理到 Tomcat 的链路在内网)。
四 日志审计与监控
- 启用并审计访问日志:在 server.xml 的 中确保 AccessLogValve 开启,记录 客户端 IP、时间、请求行、状态码、User-Agent 等关键字段,便于溯源。
- 启用日志轮转与归档:使用 Cronolog 或 logrotate 按日/按大小分割 catalina.out / localhost.*.log,并设置仅授权用户可读写。
- 隐藏版本信息:修改 lib/catalina.jar 中的 org/apache/catalina/util/ServerInfo.properties,去除版本与构建信息,降低信息泄露风险。
- 持续监控:关注 catalina.out、localhost_access_log 的异常访问与错误激增,结合 fail2ban 对管理接口进行封禁。
五 配置示例与快速检查
- 示例要点
- 创建系统用户与目录:
- sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
- sudo chown -R tomcat:tomcat /opt/tomcat
- systemd 服务片段(/etc/systemd/system/tomcat.service):
- [Service] 中设置 User=tomcat / Group=tomcat,Environment=JAVA_HOME=… / CATALINA_HOME=…,ExecStart=/opt/tomcat/bin/startup.sh,ExecStop=/opt/tomcat/bin/shutdown.sh,Restart=always
- server.xml 关键项:
- 关闭自动部署:< Host … autoDeploy=“false” deployOnStartup=“false” />
- 禁用 AJP:注释或移除 < Connector protocol=“AJP/1.3” … />
- 管理端限制:在 manager/META-INF/context.xml 添加 < Valve className=“org.apache.catalina.valves.RemoteAddrValve” allow=“127.0.0.1|内网网段” />
- 访问日志:在 内启用 AccessLogValve(directory、prefix、suffix、pattern 等)
- SSL/TLS:配置 < Connector port=“8443” protocol=“org.apache.coyote.http11.Http11Nio2Protocol” SSLEnabled=“true” … /> 并指向证书与私钥
- 防火墙(UFW):仅开放必要端口(如 8080/8443 或 80/443),默认拒绝其他入站
- 创建系统用户与目录:
- 快速检查清单
- 进程以 tomcat 非 root 用户运行(ps -ef | grep tomcat)
- webapps 中无 docs/examples/ROOT/host-manager/manager
- server.xml 中 autoDeploy/deployOnStartup=false,无 AJP 连接器
- 管理端仅限内网或已删除
- server.xml 已配置 AccessLogValve 且日志轮转生效
- 已启用 HTTPS/TLS,禁用弱协议与弱套件
- 版本信息已隐藏,错误页面不泄露堆栈
- 系统与安全更新为最新稳定版,并建立定期更新与备份机制
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu中Tomcat的安全性如何保障
本文地址: https://pptw.com/jishu/755822.html
