Tomcat
Categories:
4 分钟阅读
适用范围:Tomcat 7/8.5/9/10,适用于 Linux、Windows 和容器内 Tomcat 场景。
不适用标识说明:
- 使用
【不适用】明确标记现场可判定为不适用的控制点。 - 判定依据统一采用 GB/T 28448-2019 三级要求的“按测评对象实际承载功能、处理数据和安全机制进行判定”原则;若控制能力由上层应用、统一认证平台、前置代理、WAF、堡垒机或操作系统实现,应记录为“本组件原生不承载,按系统整体或上位组件另行测评”,不得机械按缺失判不符合。
基础信息
核查命令:
ps -ef | grep tomcat./bin/catalina.sh versionpwd、lsfind . -maxdepth 2 -type f | grep -E "server.xml|web.xml|context.xml|tomcat-users.xml|logging.properties"- 备注:优先确认安装路径、运行用户、版本、管理端口、部署目录、日志目录;如为容器部署,还要记录镜像版本、容器名、宿主机挂载路径。
- 预期证据:版本截图、安装路径截图、运行进程截图、配置目录截图、端口监听截图。
示例输出(节选)
Server version: Apache Tomcat/9.0.83
Server built: Oct 12 2023 08:12:00 UTC
Server number: 9.0.83.0
OS Name: Linux
java -version: OpenJDK 11.0.21
身份鉴别
A. 管理入口与登录要求
核查命令:
grep -R "manager\\|host-manager" conf webapps server.xml
- 备注:若
manager/host-manager未部署或已删除,可直接记为“管理控制台默认关闭”;该情况通常优于开放控制台。 - 预期证据:管理应用目录截图、管理入口访问截图或未部署截图。
示例输出(节选)
conf/server.xml:<Context docBase="manager" path="/manager">
webapps/manager
webapps/host-manager
conf/Catalina/localhost/manager.xml
B. 本地账户与角色
核查命令:
grep -n "user username\\|role rolename" conf/tomcat-users.xml
- 备注:核查是否存在共享管理员、默认账户、空口令、弱口令;如接入统一认证,应补平台材料。
- 预期证据:
tomcat-users.xml关键截图、账号台账、访谈记录。
示例输出(节选)
conf/tomcat-users.xml:<user username="demo-admin" password="***" roles="manager-gui"/>
conf/tomcat-users.xml:<role rolename="manager-gui"/>
conf/tomcat-users.xml:<role rolename="admin-gui"/>
C. 口令与失败处理
核查命令:
grep -R "lockOutTime\\|failureCount\\|Realm" conf
- 备注:Tomcat 原生能力有限,若口令复杂度、锁定策略由前置统一认证或反向代理实现,应按等效控制取证。
- 预期证据:锁定参数截图、统一认证平台截图、口令制度。
示例输出(节选)
conf/server.xml:<Realm className="org.apache.catalina.realm.LockOutRealm">
conf/server.xml:<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
(LockOutRealm 已启用,lockOutTime 默认 300 秒,未自定义 failureCount)
D. 会话与远程管理鉴别
核查命令:
grep -n "connectionTimeout\\|session-timeout" conf/server.xml conf/web.xml
- 备注:重点判断管理会话是否超时、是否通过 HTTPS、堡垒机、VPN 等方式保护运维入口。
- 【不适用】如现场已删除
manager/host-manager,且 Tomcat 不提供独立管理登录界面,则“管理会话超时”可判定为不适用。理由:测评对象不存在独立管理登录会话。依据:GB/T 28448-2019 对身份鉴别控制的判定应基于实际存在的鉴别交互面。 - 预期证据:会话超时截图、HTTPS 页面截图、远程运维方案材料。
示例输出(节选)
conf/server.xml: connectionTimeout="20000"
conf/web.xml: <session-timeout>30</session-timeout>
访问控制
A. 管理页面来源限制
核查命令:
grep -R "RemoteAddrValve\\|RemoteCIDRValve\\|allow\\|deny" webapps conf
- 备注:只开放给运维网段优于全网可访问;若控制台关闭,可记为“通过关闭管理面实现控制”。
- 预期证据:
context.xml或 Valve 配置截图、ACL 截图。
示例输出(节选)
webapps/manager/META-INF/context.xml:<Valve className="org.apache.catalina.valves.RemoteAddrValve"
webapps/manager/META-INF/context.xml: allow="192\.168\d+\d+\.\d+" />
(仅 manager 配置了来源限制,业务应用未配置)
B. 用户角色与最小权限
核查命令:
grep -n "manager-gui\\|manager-script\\|admin-gui\\|admin-script" conf/tomcat-users.xml
- 备注:避免将高权限角色赋给普通运维;不同用户应按职责分组授权。
- 预期证据:角色分配截图、审批记录、访谈记录。
示例输出(节选)
conf/tomcat-users.xml:<user username="demo-admin" password="***" roles="manager-gui,admin-gui"/>
C. 默认应用与无关组件
核查命令:
ls webapps
- 备注:
docs、examples、ROOT示例页、未使用应用应清理或明确限制访问。 - 预期证据:
webapps目录截图、处置说明。
示例输出(节选)
docs
examples
host-manager
manager
ROOT
(examples、docs 为默认自带应用,应评估清理)
D. 主机侧文件权限
核查命令:
ls -ld . conf logs webapps temp work
find conf -maxdepth 1 -type f -exec ls -l {} \\
- 备注:运行账户不宜为
root;配置、日志、部署目录权限应最小化。 - 预期证据:文件权限截图、运行用户截图。
示例输出(节选)
drwxr-x--- tomcat tomcat conf
drwxr-x--- tomcat tomcat logs
drwxr-x--- tomcat tomcat webapps
-rw-r----- tomcat tomcat 7600 conf/server.xml
-rw-r----- tomcat tomcat 4200 conf/web.xml
安全审计
A. 日志配置
核查命令:
grep -n "handlers\\|level\\|directory\\|prefix" conf/logging.properties
- 备注:判断是否启用访问日志、错误日志、管理日志;仅有默认控制台输出通常不足。
- 预期证据:
logging.properties截图、日志路径截图。
示例输出(节选)
conf/logging.properties:1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina
conf/logging.properties:2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost
conf/logging.properties:4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager
conf/server.xml:<Valve className="org.apache.catalina.valves.AccessLogValve" prefix="access_log" suffix=".txt"/>
B. 访问与管理日志
核查命令:
find logs -maxdepth 1 -type f | sort
grep -R "AccessLogValve" conf
- 备注:应至少能证明访问日志、错误日志、管理日志留存;如日志转储到平台,应补平台查询截图。
- 预期证据:日志目录截图、样例日志截图、日志平台材料。
示例输出(节选)
logs/catalina.out
logs/catalina.2026-08-24.log
logs/localhost_access_log.2026-08-24.txt
conf/server.xml:<Valve className="org.apache.catalina.valves.AccessLogValve" pattern="%h %l %u %t "%r" %s %b"/>
C. 日志留存与轮转
核查命令:
grep -R "maxDays\\|rotatable\\|fileDateFormat" conf
- 备注:现场需说明保留周期、轮转方式、是否备份;没有明确周期时需补制度或访谈。
- 预期证据:轮转配置截图、制度、访谈记录。
示例输出(节选)
conf/server.xml: rotatable="true"
(maxDays 仅在 Tomcat 9.0.28+ 的 AccessLogValve 支持,当前未显式配置保留天数)
D. 主机审计联动
核查命令:
last
grep -i audit /etc/*release 2>/dev/null
- 备注:Tomcat 应用审计往往不足,通常需要结合操作系统审计、堡垒机和日志平台进行综合判断。
- 预期证据:堡垒机记录、主机审计截图、日志平台截图。
示例输出(节选)
tomcat pts/0 192.168.20.31 Fri Aug 21 09:12 - 10:05 (00:53)
root pts/0 192.168.20.31 Thu Aug 20 15:40 - 16:22 (00:42)
(主机登录记录;应用级审计需结合访问日志)
数据完整性
A. 配置与发布完整性
核查命令:
ls -l conf/server.xml conf/web.xml conf/context.xml
- 备注:配置变更应通过变更流程;如使用 Git、发布平台或制品库,应按等效控制记录。
- 预期证据:配置文件截图、变更单、发布记录。
示例输出(节选)
-rw-r----- 1 tomcat tomcat 7600 Aug 20 14:02 conf/server.xml
-rw-r----- 1 tomcat tomcat 4200 Aug 12 10:31 conf/web.xml
-rw-r----- 1 tomcat tomcat 1900 Jul 02 09:44 conf/context.xml
B. 传输完整性
核查命令:
grep -n "SSLEnabled\\|keystoreFile\\|sslProtocol" conf/server.xml
- 备注:管理接口和业务接口建议通过 TLS 保护;若由 Nginx/Apache 前置终结 TLS,应补前置设备证据。
- 预期证据:HTTPS 配置截图、证书截图、前置代理材料。
示例输出(节选)
conf/server.xml: <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
conf/server.xml: SSLEnabled="true" scheme="https" secure="true"
conf/server.xml: keystoreFile="/opt/tomcat/conf/demo-server.jks" sslProtocol="TLS"/>
数据保密性
A. 传输加密
核查命令:
grep -n "scheme=\\\"https\\\"\\|secure=\\\"true\\\"\\|keystorePass" conf/server.xml
- 备注:敏感业务或管理面不应明文传输;证据以实际监听端口和页面访问结果为准。
- 预期证据:HTTPS 截图、证书信息、端口监听截图。
示例输出(节选)
conf/server.xml: scheme="https" secure="true"
conf/server.xml: keystorePass="***"(明文口令残留,已记录问题)
B. 敏感配置保护
核查命令:
grep -R "password\\|secret\\|credential" conf
- 备注:若配置中存在明文口令,应记录风险;可接受的替代方式包括加密配置、环境变量或统一密钥平台。
- 预期证据:敏感字段脱敏截图、密钥管理说明、访谈记录。
示例输出(节选)
conf/tomcat-users.xml:<user username="demo-admin" password="***" roles="manager-gui"/>
conf/server.xml: keystorePass="***"
(口令均为加密存储或已在整改清单中)
备份恢复
A. 配置备份
核查命令:
find .. -maxdepth 2 -type d | grep -i backup
- 备注:至少应覆盖
conf、部署包、证书、脚本等关键配置。 - 预期证据:备份目录截图、备份策略、备份记录。
示例输出(节选)
../backup-tomcat-20260801
../tomcat-backup
(存在备份目录,最近一次为 2026-08-01)
B. 日志与部署包备份
核查命令:
find logs -maxdepth 1 -type f | head
- 备注:日志通常不要求长期全量保留,但应说明保留周期、转储方式和补证来源。
- 预期证据:日志备份说明、归档截图、平台材料。
示例输出(节选)
logs/catalina.2026-08-24.log
logs/localhost_access_log.2026-08-24.txt
logs/host-manager.2026-08-24.log
C. 恢复能力
核查命令:
ls bin
find . -maxdepth 2 -type f | grep -i "backup\\|restore"
- 备注:现场重点看是否有恢复步骤、演练记录或可执行恢复手册。
- 预期证据:恢复手册、演练记录、访谈记录。
示例输出(节选)
bootstrap.jar
catalina.sh
shutdown.sh
startup.sh
version.sh
(bin 目录无备份/恢复脚本,恢复依赖外部备份策略)
剩余信息保护
A. 临时目录与历史文件
核查命令:
ls temp work
find webapps -maxdepth 1 -type f -o -type d
- 备注:停用应用、旧 WAR 包、解压残留、临时缓存应及时清理。
- 预期证据:目录截图、清理制度、访谈记录。
示例输出(节选)
temp/
work/Catalina/localhost
webapps/docs
webapps/examples
webapps/ROOT
webapps/manager
B. 凭据与敏感信息残留
核查命令:
grep -R "password\\|secret\\|token" conf logs 2>/dev/null
- 备注:日志、配置、脚本中若残留口令、令牌、证书私钥,应记录问题并确认处置口径。
- 预期证据:脱敏截图、整改说明、制度材料。
示例输出(节选)
conf/tomcat-users.xml:<user username="demo-admin" password="***" roles="manager-gui"/>
conf/server.xml: keystorePass="***"
logs/localhost_access_log.2026-08-24.txt: POST /manager/html 401(口令尝试记录)
个人信息保护
A. 日志与界面中的个人信息
核查命令:
grep -R "idcard\\|mobile\\|phone\\|name\\|email" logs webapps 2>/dev/null
- 备注:Tomcat 本身通常不直接定义个人信息规则,需结合部署应用判断是否记录、展示或导出个人信息。
- 【不适用】若测评对象仅为 Tomcat 运行容器,本身不直接存储、展示、导出个人信息,且个人信息处理完全发生在承载业务系统中,则本控制点对 Tomcat 中间件层可判定为不适用。理由:Tomcat 仅提供运行环境,不直接构成个人信息处理环节。依据:GB/T 28448-2019 中个人信息保护控制点应针对实际处理个人信息的组件或系统功能判定。
- 预期证据:日志脱敏截图、应用界面截图、访谈记录。
示例输出(节选)
logs/localhost_access_log.2026-08-24.txt: GET /api/user/info?name=%E5%BC%A0%E4%B8%89 200
(访问日志含 URL 参数中的姓名拼音,建议按个人信息保护要求脱敏)
B. 最小化处理与导出控制
核查命令:
grep -R "download\\|export" webapps 2>/dev/null
- 备注:若 Tomcat 承载业务系统,应关注管理端是否存在批量导出、调试接口、明文日志等个人信息风险。
- 【不适用】若 Tomcat 不提供独立导出、查询、共享个人信息的管理功能,且相关能力均由上层业务应用实现,则该点对 Tomcat 中间件层可判定为不适用。理由:测评对象不具备该业务处理能力。依据:GB/T 28448-2019 个人信息保护控制点应结合对象实际业务功能判定。
- 预期证据:应用权限截图、制度、个人信息保护访谈记录。
示例输出(节选)
webapps/demo-app/export.jsp
webapps/demo-app/download/list.jsp
(存在导出/下载页面,权限由应用层会话控制)
入侵防范
A. 管理面与默认应用暴露
核查命令:
ls webapps
grep -R "manager\\|host-manager\\|examples\\|docs" webapps conf 2>/dev/null
- 备注:重点核查是否暴露默认管理应用、示例应用、调试页面和未使用组件,避免形成弱口令和未授权访问入口。
- 预期证据:
webapps目录截图、管理面访问测试截图、处置说明。
示例输出(节选)
webapps/docs
webapps/examples
webapps/host-manager
webapps/manager
webapps/ROOT
conf/Catalina/localhost/manager.xml
B. 高危配置与利用面
核查命令:
grep -R "readonly\\|PUT\\|DELETE\\|RemoteAddrValve\\|AJP" conf 2>/dev/null
- 备注:关注 AJP、可写上传目录、危险 HTTP 方法、管理面来源不受限等高风险配置。
- 预期证据:关键配置截图、网络访问控制材料、访谈记录。
示例输出(节选)
conf/server.xml: <Connector port="8009" protocol="AJP/1.3"
conf/server.xml: secretRequired="true" secret="***"
conf/context.xml: <CookieProcessor sameSiteCookies="strict" />
C. 版本与补丁风险
核查命令:
./bin/catalina.sh version
cat RELEASE-NOTES 2>/dev/null | head
- 备注:核查版本是否长期未升级,是否存在已知高危漏洞整改记录;现场至少要有版本确认和补丁处置说明。
- 预期证据:版本截图、补丁记录、整改说明。
示例输出(节选)
Server version: Apache Tomcat/9.0.83
Server built: Oct 12 2023 08:12:00 UTC
Server number: 9.0.83.0
JVM Version: OpenJDK 11.0.21+9
D. 恶意利用防护联动
核查命令:
grep -R "AccessLogValve" conf 2>/dev/null
last
- 备注:Tomcat 原生入侵防范能力有限,通常结合 WAF、主机防护、堡垒机和日志告警平台综合判断。
- 预期证据:WAF/主机防护截图、告警记录、日志平台材料。
示例输出(节选)
conf/server.xml:<Valve className="org.apache.catalina.valves.AccessLogValve" pattern="%h %l %u %t "%r" %s %b"/>
last:
tomcat pts/0 192.168.20.31 Fri Aug 21 09:12 - 10:05 (00:53)