Linux下Tomcat安全配置
导读:Linux下Tomcat安全配置清单 一 运行环境与最小权限 使用非root专用账户运行Tomcat,创建系统用户并设置目录属主,例如: 创建用户:sudo useradd -m -U -r -s /usr/sbin/nologin t...
Linux下Tomcat安全配置清单
一 运行环境与最小权限
- 使用非root专用账户运行Tomcat,创建系统用户并设置目录属主,例如:
- 创建用户:
sudo useradd -m -U -r -s /usr/sbin/nologin tomcat - 设置目录:
sudo chown -R tomcat:tomcat /srv/tomcat
- 创建用户:
- 以systemd托管,限定运行用户与权限掩码,示例:
- 创建服务文件:
/etc/systemd/system/tomcat.service - 关键项:
User=tomcat、Group=tomcat、UMask=0007、Restart=always - 生效:
systemctl daemon-reload & & systemctl enable --now tomcat
- 创建服务文件:
- 目录与文件权限建议:目录750、文件640,关键脚本700,如:
find /srv/tomcat -type d -exec chmod 750 { } \;find /srv/tomcat -type f -exec chmod 640 { } \;chmod 700 /srv/tomcat/bin/*.sh
- 如启用SELinux,为日志等目录设置合适上下文(示例):
sudo chcon -R -t httpd_sys_content_t /srv/tomcat/webappssudo chcon -R -t httpd_sys_rw_content_t /srv/tomcat/logs
- 版本选择建议:优先JDK 11/17(LTS);内存≤2GB的实例可考虑Tomcat 9,需Jakarta EE 9+则选Tomcat 10.1。
二 服务与连接器加固
- 关闭或限制管理接口:
- 生产环境如无必要,直接删除或禁用
webapps/manager与webapps/host-manager - 必须保留时,仅开放给内网/IP白名单,在
webapps/manager/META-INF/context.xml添加:< Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1,192.168.1.0/24" />
- 精简
conf/tomcat-users.xml,仅保留必要角色(如manager-gui、manager-script、manager-status),并为账户设置强密码
- 生产环境如无必要,直接删除或禁用
- 禁用或移除AJP连接器(前端为Nginx/HTTP时通常不需要):
- 在
server.xml中注释或删除AJP Connector(典型端口8009)
- 在
- 保护8005关闭端口与命令:
- 修改
server.xml的< Server port="8005" shutdown="复杂随机字符串">,避免被恶意关闭
- 修改
- 开启访问日志并优化格式(记录来源、UA等便于审计):
- 在
< Host>内启用AccessLogValve,示例:< Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b %{ Referer} i %{ User-Agent} i" resolveHosts="false" />
- 在
- 隐藏版本信息:
- 方式一:在
server.xml的Connector上设置server="自定义标识" - 方式二:修改
lib/catalina.jar中org/apache/catalina/util/ServerInfo.properties,自定义server.info、server.number
- 方式一:在
- 连接器安全与性能基线(示例):
- 仅开放8080/8443,禁用明文管理端口直连公网
- 建议配置:
protocol="org.apache.coyote.http11.Http11NioProtocol",connectionTimeout="20000",maxThreads按规格调优,redirectPort="8443"。
三 应用与Web层安全
- 关闭目录浏览:在
conf/web.xml的DefaultServlet中设置< init-param> < param-name> listings< /param-name> < param-value> false< /param-value> < /init-param>
- 禁用危险HTTP方法:在
DefaultServlet中设置< init-param> < param-name> readonly< /param-name> < param-value> true< /param-value> < /init-param>
- 自定义错误页面,避免信息泄露:
< error-page> < error-code> 404< /error-code> < location> /404.html< /location> < /error-page>< error-page> < error-code> 500< /error-code> < location> /500.html< /location> < /error-page>
- 会话与Cookie安全:
context.xml启用:useHttpOnly="true"web.xml会话配置:cookie-config中设置secure="true"(仅HTTPS传输)
- 关闭自动部署与热部署(降低被植入风险):
server.xml中< Host unpackWARs="false" autoDeploy="false" />
- 删除默认示例与文档应用:清理
webapps下的docs/ examples/ ROOT/等。
四 加密通信与访问控制
- 启用HTTPS/TLS:
- 推荐将8443仅在内网开放,公网通过Nginx/Apache终止TLS
- 使用Let’s Encrypt证书示例:
- 转换证书:
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out /srv/tomcat/conf/keystore.p12 -name tomcat -CAfile chain.pem -password pass:YourPass server.xml配置:< Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" scheme="https" secure="true">< SSLHostConfig> < Certificate certificateKeystoreFile="conf/keystore.p12" type="RSA" certificateKeystorePassword="YourPass"/> < /SSLHostConfig> < /Connector>
- 转换证书:
- 网络层访问控制:
- 防火墙仅放行必要来源IP与端口(如仅内网或跳板机可访问管理口/8080)
- 在
server.xml的< Host>或管理应用的context.xml中使用RemoteAddrValve做二次白名单
- 反向代理前置(Nginx示例要点):
- 仅暴露80/443,代理到
localhost:8080 - 在代理层配置IP白名单、Basic认证、HSTS、TLS等,进一步降低后端暴露面。
- 仅暴露80/443,代理到
五 审计与运维检查
- 启动与运行身份核验:
ps -ef | grep tomcat确认进程非rootsystemctl show tomcat | grep User与目录权限核对
- 端口与协议核验:
ss -lntp | grep -E '8005|8009|8080|8443'curl -I http://localhost:8080检查响应头是否泄露版本(Server:字段)
- 管理接口访问控制核验:
- 非白名单来源访问
/manager/html应被拒绝 tomcat-users.xml仅保留必要账户与最小角色
- 非白名单来源访问
- 日志与审计:
- 确认
localhost_access_log.*正常滚动,包含Referer/User-Agent - 定期审计
catalina.out与业务日志的异常堆栈与访问模式
- 确认
- 变更与回滚:
- 修改
server.xml/web.xml/context.xml后先备份,滚动重启验证 - 证书更新后同步更新
keystore.p12与配置并重启
- 修改
如需,我可以按你的Tomcat版本与目录结构,生成可直接替换的配置片段与systemd单元文件。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux下Tomcat安全配置
本文地址: https://pptw.com/jishu/769534.html
