Eclipse Jetty 中间件测评

Eclipse Jetty 9/10/11/12 三级等保现场测评取证命令单:按控制点组织 jetty.xml/start.ini 核查命令、判定要点与取证要求。

定位:Eclipse Jetty 三级等保现场测评取证命令单,按 GB/T 22239-2019 安全计算环境控制点分节组织核查命令、判定要点与取证要求。 适用范围:Eclipse Jetty 9/10/11,独立部署、嵌入式部署和容器内 Jetty 场景。 配套文章:22、高风险判定指引与加固对照表、16、安全评估加固记录表3.0、21、Web中间件安全加固。

使用说明:

  • 本文所有命令均为只读取证命令,不修改配置、不重启服务、不执行清除类操作;确需变更由被测单位运维方在授权下实施。
  • 每个控制点小节按「对应控制点 → 判定要点 → 取证要求 → 核查命令 → 备注 → 预期证据」编排;命令回显本身即证据,须连同命令行一起截图。
  • 命令不存在或输出与示例差异较大时,先确认组件版本与部署形态(包管理器/源码编译/容器),再换用等效命令或转入配置文件、管理控制台取证,不得据命令缺失直接判不符合。
  • 示例输出中的地址、账户、路径均为演示值,现场须替换为真实取证结果并对涉及个人信息与内网管理地址的内容脱敏后再入报告。

不适用标识说明:

  • 使用 【不适用】 明确标记现场可判定为不适用的控制点。
  • 判定依据采用 GB/T 28448-2019 的对象边界原则;Jetty 作为运行容器时,业务型控制点需结合上层应用判定。

基础信息

对应控制点:非独立控制点(测评对象与资产确认);部署形态与冗余情况佐证 8.1.2.1 网络架构 e) 关键设备硬件冗余

判定要点:版本、部署路径、运行账户、监听端口、集群角色五项均可取证且与实际架构一致 → 符合;版本或路径无法确认、依赖口头说明 → 部分符合。

取证要求:版本命令回显截图、配置路径截图、进程与运行账户截图、端口监听截图;集群部署补节点清单与角色截图。

核查命令:

java -jar start.jar --version 2>/dev/null
ps -ef | grep jetty
find . -name start.ini -o -name jetty.xml -o -name start.d
  • 备注:确认版本、启动方式、配置目录、WebApp 目录、日志目录、监听端口和运行用户。
  • 预期证据:版本截图、进程截图、配置目录截图、端口截图。
示例输出(节选)
java -jar start.jar --version(节选)
Jetty Server Classpath:
Version Information
 9.4.53.v20231009 - org.eclipse.jetty.server.Server
ps -ef | grep jetty
jetty 8801 java -jar start.jar jetty.base=/opt/jetty-base
./start.ini  ./etc/jetty.xml

身份鉴别

对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)~d)

判定要点:管理账户唯一且非默认口令、鉴别信息复杂度与有效期均已配置、远程管理走加密通道、失败处理与会话超时已启用 → 符合;仅满足其中一部分(如有口令但无复杂度/无锁定/无超时)→ 部分符合;管理入口无鉴别或沿用出厂口令 → 不符合(高风险)。

取证要求:账户清单截图、口令策略配置截图、加密通道配置截图、失败锁定与超时配置截图;由统一认证平台承载时补平台侧配置与对接截图。

A. 管理入口识别

核查命令:

find . -type f | grep -E "realm|login|jaas|jetty-realm"
  • 备注:重点核查是否启用管理页面、JAAS、Realm、JMX 等管理入口。
  • 预期证据:配置截图、管理入口截图。
示例输出(节选)
find . | grep realm|jaas
etc/jetty-realm.properties
webapps/demo/WEB-INF/web.xml
(HashLoginService 用于控制台认证,业务应用经 SSO)

B. 认证机制

核查命令:

grep -R "LoginService\\|HashLoginService\\|JAASLoginService\\|ConstraintSecurityHandler" . 2>/dev/null
  • 备注:核查本地 Realm、JAAS、LDAP 或应用级鉴别机制。
  • 预期证据:认证配置截图、平台材料。
示例输出(节选)
grep LoginService etc
etc/jetty.xml:<Call name="addBean"><Arg><New class="org.eclipse.jetty.security.HashLoginService">
web.xml:<login-config><auth-method>FORM</auth-method>
ConstraintSecurityHandler 配置于 demo 应用
(控制台启用 FORM 认证+角色约束)

C. 登录失败与会话控制

核查命令:

grep -R "session-timeout\\|idleTimeout" . 2>/dev/null
  • 备注:Jetty 原生多作为容器,不一定具备独立管理登录过程。
  • 【不适用】若未部署独立管理登录界面,仅承载应用,则登录失败锁定/管理会话超时对 Jetty 本体不适用。
  • 预期证据:配置截图、等效控制材料。
示例输出(节选)
grep session-timeout webapps/demo/WEB-INF/web.xml
<session-timeout>30</session-timeout>
etc/jetty-http.xml: idleTimeout=300000
(会话 30 分钟超时,连接空闲 5 分钟断开)

D. 运维鉴别链路

核查命令:

grep -R "SslContextFactory\\|KeyStorePath\\|TrustStorePath" . 2>/dev/null
  • 备注:远程运维应结合 HTTPS、堡垒机、VPN 等保护。
  • 预期证据:HTTPS 截图、证书配置、制度。
示例输出(节选)
grep SslContextFactory etc
etc/jetty-ssl-context.xml:<Set name="KeyStorePath">/opt/jetty/ssl/keystore.p12</Set>
<Set name="TrustStorePath">/opt/jetty/ssl/truststore.p12</Set>
<Set name="IncludeProtocols"><Array><Item>TLSv1.2</Item><Item>TLSv1.3</Item></Array></Set>

访问控制

对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)~f)

判定要点:账户与角色齐备且权限最小化、默认账户已重命名或改口令、无多余/过期/共享账户、管理来源受限制 → 符合;有账户体系但权限未按最小化分配或管理来源未限制 → 部分符合;全员共用超级账户、管理端口对全网开放 → 不符合(高风险)。

取证要求:账户与角色对应表、授权策略截图、管理来源限制(ACL/绑定地址/防火墙策略)截图、多余账户处置记录。

A. 管理与敏感路径限制

核查命令:

grep -R "ConstraintMapping\\|security-constraint" . 2>/dev/null
  • 备注:管理路径、JMX、监控接口应限制来源和角色。
  • 预期证据:路径控制截图、角色配置截图。
示例输出(节选)
grep ConstraintMapping webapps/demo/WEB-INF/web.xml
<security-constraint><web-resource-collection><url-pattern>/admin/*</url-pattern>
<auth-constraint><role-name>admin-role</role-name>
(管理路径强制认证+角色约束,其余路径匿名只读)

B. WebApp 与默认应用

核查命令:

find webapps -maxdepth 1 2>/dev/null
  • 备注:默认应用、测试应用和示例应用应清理或限制。
  • 预期证据:部署目录截图、处置说明。
示例输出(节选)
webapps/
demo.war
ROOT/
(仅部署业务应用与根站点,无自带示例残留)

C. 文件权限

核查命令:

find etc start.d -maxdepth 1 -type f -exec ls -l {} \\
2>/dev/null
  • 备注:配置、日志和部署目录权限应最小化。
  • 预期证据:权限截图、运行用户截图。
示例输出(节选)
-rw-r--r-- 1 jetty jetty start.ini
-rw-r----- 1 jetty jetty etc/jetty-realm.properties
(realm 口令文件权限已收紧为 640)

D. 运行身份与最小权限

核查命令:

ps -o user,pid,cmd -C java
  • 备注:Jetty 不宜以高权限账号运行。
  • 预期证据:运行用户截图、权限说明。
示例输出(节选)
USER PID COMMAND
jetty 8801 java -jar start.jar
(以非特权 jetty 用户运行,未使用 root)

安全审计

对应控制点:GB/T 22239-2019 8.1.4.3 安全审计 a)~d)

判定要点:审计功能启用且覆盖每个用户与重要行为、审计记录字段齐全、审计记录受保护并定期备份、留存不少于 6 个月 → 符合;仅记录部分事件或留存不足 6 个月 → 部分符合;审计未启用或普通用户可删改审计记录 → 不符合(高风险)。

取证要求:审计开关与范围配置截图、审计记录明细样例(含时间、用户、事件类型、结果、来源)、日志外送与轮转配置截图、留存期限证据、非审计账户尝试删改的实测结果。

A. 日志配置

核查命令:

find logs -type f 2>/dev/null
grep -R "RequestLog\\|CustomRequestLog\\|Slf4j" . 2>/dev/null
  • 备注:应核查访问日志、错误日志和管理行为留痕。
  • 预期证据:日志配置截图、日志目录截图。
示例输出(节选)
find logs
logs/jetty.log
logs/2026_08_24.request.log
grep RequestLog etc
etc/jetty-requestlog.xml:<Set name="RequestLog"><Ref refid="RequestLogImpl"/>
(访问日志独立文件,按日滚动)

B. 访问日志与错误日志

核查命令:

tail -n 20 logs/* 2>/dev/null
  • 备注:应能证明访问行为、异常和关键管理操作留痕。
  • 预期证据:日志样例、平台截图。
示例输出(节选)
tail logs/2026_08_24.request.log(节选)
192.168.1.23 - - [24/Aug/2026:10:21:33 +0800] "GET /api/user HTTP/1.1" 200 187
192.168.1.45 - - [24/Aug/2026:10:21:34 +0800] "POST /login HTTP/1.1" 302 0
tail logs/jetty.log
INFO:oejs.Server:main: Started @12345ms

C. 留存与轮转

核查命令:

grep -R "retainDays\\|append\\|roll" . 2>/dev/null
  • 备注:需核实留存和轮转策略。
  • 预期证据:配置截图、制度、访谈记录。
示例输出(节选)
grep retainDays etc
etc/jetty-requestlog.xml:<Set name="retainDays">90</Set>
(请求日志保留 90 天后自动清理)

D. 集中审计

核查命令:

journalctl | grep jetty | tail -n 50
  • 备注:如日志进入平台,应按平台证据确认留存和告警。
  • 预期证据:平台截图、告警截图。
示例输出(节选)
journalctl | grep jetty(节选)
Aug 24 08:59:40 host systemd[1]: Started Jetty 9.4.
Aug 24 09:00:02 host java[8801]: INFO:oejs.AbstractConnector:Started ServerConnector@0.0.0.0:8080
Aug 24 10:14:11 host java[8801]: WARN:oeju.PathWatcher:...

数据完整性

对应控制点:GB/T 22239-2019 8.1.4.7 数据完整性 a)b)

判定要点:配置与关键数据在传输/存储过程中具备校验或完整性保护机制(TLS、签名、校验和、配置版本归档)→ 符合;仅有部分链路具备校验 → 部分符合;无任何完整性校验手段 → 不符合。

取证要求:传输加密配置截图、校验/签名机制说明、配置变更与归档记录、完整性检测工具输出。

A. 配置完整性

核查命令:

java -jar start.jar --list-config 2>/dev/null
  • 备注:配置变更应可追溯。
  • 预期证据:配置截图、变更记录。
示例输出(节选)
java -jar start.jar --list-config(节选)
 jetty.port = 8443
 jetty.sslContext.keyStorePath = /opt/jetty/ssl/keystore.p12
 jetty.base = /opt/jetty-base
(当前生效配置完整可追溯)

B. 传输完整性

核查命令:

grep -R "ssl\\|https\\|SecureRequestCustomizer" . 2>/dev/null
  • 备注:重点核查 HTTPS、代理头和转发完整性。
  • 预期证据:配置截图、证书材料。
示例输出(节选)
grep SecureRequestCustomizer etc
etc/jetty-https.xml:<New id="sslHttpConfig" class="HttpConfiguration">
  <Call name="addCustomizer"><Arg><New class="SecureRequestCustomizer"/></Arg></Call>
etc/jetty.xml: ServerConnector https@0.0.0.0:8443

数据保密性

对应控制点:GB/T 22239-2019 8.1.4.8 数据保密性 a)b)

判定要点:鉴别信息与敏感业务数据在传输和存储时均加密(TLS 1.2 及以上、口令散列存储、密钥不落明文)→ 符合;仅传输加密或仅存储加密 → 部分符合;明文传输鉴别信息或明文存储口令/密钥 → 不符合(高风险)。

取证要求:TLS 配置与证书信息截图、协议与加密套件清单、口令/密钥存储形态截图、抓包验证结果;使用国密算法时注明算法与模块。

A. HTTPS 与证书

核查命令:

grep -R "KeyStore\\|TrustStore\\|SslContextFactory" . 2>/dev/null
  • 备注:管理面和敏感业务面应优先加密。
  • 预期证据:HTTPS 截图、证书配置截图。
示例输出(节选)
grep KeyStore etc(节选)
etc/jetty-ssl-context.xml: KeyStorePath=/opt/jetty/ssl/keystore.p12
TrustStorePath=/opt/jetty/ssl/truststore.p12
(口令经 start.ini 的 jetty.sslContext.keyStorePassword 掩码/OBF 加密)

B. 敏感配置保护

核查命令:

grep -R "password\\|secret\\|credential" . 2>/dev/null
  • 备注:数据源、证书和应用参数中的敏感信息需重点核查。
  • 预期证据:脱敏截图、权限说明。
示例输出(节选)
grep password etc(节选)
start.ini: jetty.sslContext.keyStorePassword=OBF:***
(口令 OBF 混淆存储,未见明文)

备份恢复

对应控制点:GB/T 22239-2019 8.1.4.9 数据备份恢复 a)c)

判定要点:配置与关键数据具备本地备份、备份可恢复且经过演练、具备主备或集群冗余 → 符合;有备份但无恢复演练记录,或仅有冗余无备份 → 部分符合;无任何备份与冗余措施 → 不符合(高风险)。

取证要求:备份策略与备份文件清单截图、恢复演练记录、集群/主备状态截图、备份介质与异地存放说明。

A. 配置备份

核查命令:

find . -type d | grep -i backup
  • 备注:应覆盖配置、证书、WebApp 和脚本。
  • 预期证据:备份目录截图、策略说明。
示例输出(节选)
find . -type d | grep backup
backup-jetty-20260801/
(备份目录存在,最近一次 2026-08-01)

B. 日志与部署备份

核查命令:

find logs webapps -type f 2>/dev/null | head
  • 备注:需说明日志和部署包备份策略。
  • 预期证据:归档截图、访谈记录。
示例输出(节选)
find logs webapps | head
logs/jetty.log
webapps/demo.war
webapps/ROOT/index.jsp
(war 包与日志纳入备份范围)

C. 恢复能力

核查命令:

java -jar start.jar --list-modules 2>/dev/null
  • 备注:可通过配置回滚、WebApp 恢复和容器重建说明恢复能力。
  • 预期证据:恢复手册、演练记录、工单。
示例输出(节选)
java -jar start.jar --list-modules(节选)
ENABLED: http, https, deploy, jsp, logging
(模块清单明确,debug/console 模块未启用)

剩余信息保护

对应控制点:GB/T 22239-2019 8.1.4.10 剩余信息保护 a)b)

判定要点:鉴别信息与敏感数据所在存储空间在释放或清除前得到完全清除(口令散列不可逆、临时文件与旧配置定期清理、介质报废有销毁记录)→ 符合;部分清理但无制度与记录 → 部分符合;明文口令残留、旧配置与备份文件长期堆积在生产目录 → 不符合。

取证要求:清理策略与计划任务截图、残留排查命令输出、介质销毁与设备报废记录、制度文件。

A. 历史部署与临时目录

核查命令:

find . -type d | grep -E "tmp|work|old|backup"
  • 备注:历史部署包、缓存和旧配置应清理。
  • 预期证据:目录截图、清理说明。
示例输出(节选)
find . -type d | grep tmp|work|old|backup
work/  tmp/  old-config-2026/
(work/tmp 目录定期清理,old-config 移出生产目录)

B. 凭据残留

核查命令:

grep -R "password\\|secret\\|token" . 2>/dev/null
  • 备注:配置、日志和脚本中的敏感信息残留需重点核查。
  • 预期证据:脱敏截图、整改说明。
示例输出(节选)
grep password .(节选)
start.ini: keyStorePassword=OBF:***
logs/request.log: POST /login(无敏感明文落盘)

个人信息保护

对应控制点:GB/T 22239-2019 8.1.4.11 个人信息保护 a)b)

判定要点:仅采集和保存业务必需的个人信息、禁止未授权访问与非法使用(日志字段最小化、访问受权限控制、导出有审批)→ 符合;有访问控制但未做字段最小化或无导出管控 → 部分符合;日志或配置中明文记录身份证、手机号、令牌等且无访问控制 → 不符合(高风险)。

取证要求:日志格式与字段清单截图、样例日志(脱敏后)、个人信息访问权限配置、导出审批记录;不涉及个人信息时留存数据流说明作为不适用依据。

A. 日志与应用中的个人信息

核查命令:

grep -R "mobile\\|phone\\|idcard\\|email\\|name" logs webapps 2>/dev/null
  • 备注:需结合部署应用判断个人信息处理情况。
  • 【不适用】若 Jetty 仅作应用运行容器,本体不直接处理个人信息,则该点对 Jetty 本体不适用。
  • 预期证据:日志截图、应用说明。
示例输出(节选)
grep mobile/logs(节选)
logs/2026_08_24.request.log: GET /api/user/info?mobile=138****5678
(URL 参数含脱敏后的手机号,应用侧已完成脱敏改造)

B. 导出与共享控制

核查命令:

find webapps -type f | grep -i "export\\|download" 2>/dev/null
  • 备注:如应用提供导出能力,需转由应用侧核查。
  • 【不适用】若 Jetty 本体不提供个人信息导出、共享或查询功能,则该点不适用。
  • 预期证据:权限截图、访谈记录。
示例输出(节选)
find webapps | grep export|download
webapps/ROOT/export/report.jsp
(导出入口受会话认证与角色约束保护)

入侵防范

对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 a)~h)、8.1.4.5 恶意代码防范

判定要点:遵循最小安装、关闭多余服务与高危端口、管理终端受限、具备数据有效性检验、及时修补漏洞并有加固记录 → 符合;部分项缺失但有等效补偿(WAF/IPS/主机加固)且证据齐全 → 部分符合;存在未修补高危漏洞或高危端口对全网开放且无补偿 → 不符合(高风险)。

取证要求:组件与服务清单、端口扫描结果、管理终端限制配置、漏洞扫描与修补记录、基线加固对照表、攻击告警或阻断记录。

A. 默认应用与管理接口暴露

核查命令:

find webapps -maxdepth 1 2>/dev/null
grep -R "jmx\\|admin\\|debug" . 2>/dev/null
  • 备注:重点核查默认应用、管理接口、JMX 和调试能力暴露情况。
  • 预期证据:部署截图、配置截图、访问测试截图。
示例输出(节选)
find webapps; grep jmx etc
webapps/ROOT  webapps/demo.war
etc/jetty-jmx.xml 存在但 JMX 远程端口未开放
(无自带管理页暴露,jmx 仅本地)

B. 危险配置与执行面

核查命令:

grep -R "PUT\\|DELETE\\|DefaultServlet\\|rewrite" . 2>/dev/null
  • 备注:关注可写目录、危险 HTTP 方法、调试开关和上传执行风险。
  • 预期证据:配置截图、处置说明、访谈记录。
示例输出(节选)
grep PUT/DELETE etc
etc/jetty-deploy.xml: DefaultServlet writeEnabled=false(默认只读)
(未启用写方法,rewrite 规则拦截 TRACE/TRACK)

C. 版本与漏洞风险

核查命令:

java -jar start.jar --version 2>/dev/null
  • 备注:需确认版本和高危漏洞整改情况,尤其是老旧 Jetty 版本。
  • 预期证据:版本截图、补丁或整改记录。
示例输出(节选)
java -jar start.jar --version
9.4.53.v20231009 - org.eclipse.jetty.server.Server
(版本较新,CVE 修复情况见补丁台账)

D. 安全联动防护

核查命令:

tail -n 20 logs/* 2>/dev/null
  • 备注:Jetty 入侵防范通常依赖 WAF、主机防护和日志告警平台联动。
  • 预期证据:平台截图、告警记录、主机防护材料。
示例输出(节选)
tail logs/2026_08_24.request.log(节选)
45.61.x.x - - [24/Aug/2026:03:11:02 +0800] "GET /manager/html HTTP/1.1" 403 -
(扫描请求被拒绝并记录,联动 WAF 封禁与安全平台告警)

参考依据

关联文章