怎样在Ubuntu上配置Tomcat的安全策略
导读:在 Ubuntu 上配置 Tomcat 的安全策略 一 运行身份与最小权限 创建专用系统用户,禁止以 root 运行:sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat 调整目录属...
在 Ubuntu 上配置 Tomcat 的安全策略
一 运行身份与最小权限
- 创建专用系统用户,禁止以 root 运行:sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
- 调整目录属主与权限,仅赋予必要访问:
- sudo chgrp -R tomcat /opt/tomcat/conf
- sudo chmod -R g+r /opt/tomcat/conf
- sudo chmod g+x /opt/tomcat/conf
- sudo chmod -R ug+r /opt/tomcat/bin /opt/tomcat/lib
- sudo chmod +x /opt/tomcat/bin/*.sh
- 以专用用户托管 Tomcat 服务(示例 Systemd 片段):
- User=tomcat;Group=tomcat;UMask=0007
- 说明:最小权限与专用用户可显著降低被提权与横向渗透风险。
二 启用 Java SecurityManager 与 catalina.policy
- 启用方式:在启动脚本或 systemd 的 CATALINA_OPTS 中加入:-Djava.security.manager -Djava.security.policy==${
CATALINA_BASE}
/conf/catalina.policy
- 注意“==”表示仅使用指定策略文件,不继承系统默认策略。
- 策略文件位置与原则:${ CATALINA_BASE} /conf/catalina.policy;默认已为 Tomcat 核心组件授予必要权限,并为每个 Web 应用默认授予其文档根目录的读权限与工作目录的读写/删除权限。
- 最小权限示例(按需收紧,以下仅为范式):
- 仅允许应用读取自身目录与日志目录:
- grant codeBase “file:${
catalina.base}
/webapps/yourapp/-” {
- permission java.io.FilePermission “${ catalina.base} /webapps/yourapp/-”, “read”;
- permission java.io.FilePermission “${ catalina.base} /logs”, “read”;
- permission java.io.FilePermission “${ catalina.base} /logs/-”, “read,write”;
- permission java.util.PropertyPermission “java.home”, “read”;
- permission java.util.PropertyPermission “file.separator”, “read”;
- permission java.lang.RuntimePermission “getClassLoader”;
- permission java.lang.RuntimePermission “setContextClassLoader”;
- } ;
- grant codeBase “file:${
catalina.base}
/webapps/yourapp/-” {
- 禁止危险行为(示例:禁止调用 System.exit):
- grant {
- permission java.lang.RuntimePermission “exitVM.*”, “deny”;
- } ;
- grant {
- 仅允许应用读取自身目录与日志目录:
- 说明:catalina.policy 使用标准 Java policy 语法,可按应用粒度细化 FilePermission、SocketPermission、PropertyPermission 等,务必在测试环境充分验证后再上线。
三 访问控制与认证加固
- 管理界面访问控制:
- 清理默认账户,使用强密码;在 conf/tomcat-users.xml 中仅保留必要角色(如 manager-gui、admin-gui)。
- 对管理应用启用来源 IP 白名单(在对应应用的 META-INF/context.xml 中配置 RemoteAddrValve):
- <
Valve className=“org.apache.catalina.valves.RemoteAddrValve”
- allow=“127.0.0.1,192.168.1.100”/>
- <
Valve className=“org.apache.catalina.valves.RemoteAddrValve”
- 应用层基于角色的访问控制(在应用的 WEB-INF/web.xml 中):
- - /admin/* - admin -
- BASIC
- 说明:先认证、再授权,并对管理接口实施来源限制,可显著降低暴力与越权风险。
四 传输加密与端口管理
- 启用 HTTPS(推荐 8443),可使用 Let’s Encrypt 证书并转换为 PKCS12 供 Tomcat 使用:
- 转换示例:
- openssl pkcs12 -export -in /etc/letsencrypt/live/example.com/fullchain.pem
-inkey /etc/letsencrypt/live/example.com/privkey.pem
-out /opt/tomcat/conf/keystore.p12 -name tomcat -CAfile /etc/letsencrypt/live/example.com/chain.pem
-caname root -password pass:密钥密码
- openssl pkcs12 -export -in /etc/letsencrypt/live/example.com/fullchain.pem
- server.xml 连接器示例:
- <
Connector port=“8443” protocol=“org.apache.coyote.http11.Http11NioProtocol”
- maxThreads=“150” SSLEnabled=“true” scheme=“https” secure=“true”>
- -
- <
Connector port=“8443” protocol=“org.apache.coyote.http11.Http11NioProtocol”
- 转换示例:
- 端口与暴露面管理:
- 如非必要,避免对外暴露 8080/8005 等管理端口;仅开放 8443 并配合防火墙白名单。
- 防火墙示例(UFW):sudo ufw allow from 192.168.1.0/24 to any port 8443;如需仅内网访问,可默认拒绝 8080/8443 再按需放行。
- 说明:全站 HTTPS 与来源限制可显著降低数据泄露与劫持风险。
五 日志审计与运行监控
- 启用访问日志(在 server.xml 的 Host 中取消注释或新增 AccessLogValve):
- <
Valve className=“org.apache.catalina.valves.AccessLogValve”
- directory=“logs” prefix=“localhost_access_log.” suffix=“.txt”
- pattern=“common” resolveHosts=“false”/>
- <
Valve className=“org.apache.catalina.valves.AccessLogValve”
- 运行监控与优雅启停:
- 状态与重启:sudo systemctl status|restart|reload tomcat
- 变更配置前先备份:server.xml、web.xml、catalina.policy 等关键文件
- 说明:访问日志是安全审计与溯源的关键数据,配合进程与端口监控可快速发现异常。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 怎样在Ubuntu上配置Tomcat的安全策略
本文地址: https://pptw.com/jishu/789707.html
