Apache RocketMQ 消息中间件测评
Categories:
5 分钟阅读
定位:Apache RocketMQ 三级等保现场测评取证命令单,按 GB/T 22239-2019 安全计算环境控制点分节组织核查命令、判定要点与取证要求。 适用范围:Apache RocketMQ 4.x/5.x NameServer、Broker、Proxy、Dashboard 场景。 配套文章:22、高风险判定指引与加固对照表、16、安全评估加固记录表3.0、21、Web中间件安全加固。
使用说明:
- 本文所有命令均为只读取证命令,不修改配置、不重启服务、不执行清除类操作;确需变更由被测单位运维方在授权下实施。
- 每个控制点小节按「对应控制点 → 判定要点 → 取证要求 → 核查命令 → 备注 → 预期证据」编排;命令回显本身即证据,须连同命令行一起截图。
- 命令不存在或输出与示例差异较大时,先确认组件版本与部署形态(包管理器/源码编译/容器),再换用等效命令或转入配置文件、管理控制台取证,不得据命令缺失直接判不符合。
- 示例输出中的地址、账户、路径均为演示值,现场须替换为真实取证结果并对涉及个人信息与内网管理地址的内容脱敏后再入报告。
不适用标识说明:
- 使用
【不适用】明确标记现场可判定为不适用的控制点。- 判定依据采用 GB/T 28448-2019 的对象边界原则;需先区分 NameServer、Broker 和 Dashboard 的控制边界。
基础信息
对应控制点:非独立控制点(测评对象与资产确认);部署形态与冗余情况佐证 8.1.2.1 网络架构 e) 关键设备硬件冗余
判定要点:版本、部署路径、运行账户、监听端口、集群角色五项均可取证且与实际架构一致 → 符合;版本或路径无法确认、依赖口头说明 → 部分符合。
取证要求:版本命令回显截图、配置路径截图、进程与运行账户截图、端口监听截图;集群部署补节点清单与角色截图。
核查命令:
mqbroker -v 2>/dev/null
mqnamesrv -v 2>/dev/null
ps -ef | grep rocketmq
find . -name broker.conf -o -name logback_*.xml
- 备注:确认版本、角色、监听端口、集群、存储目录、日志目录和 Dashboard。
- 预期证据:版本截图、进程截图、配置目录截图、端口截图。
示例输出(节选)
mqbroker -v
RocketMQ Broker 5.1.4
mqnamesrv -v
RocketMQ NameServer 5.1.4
ps -ef | grep rocketmq
rocketmq 6601 NamesrvStartup rocketmq 6620 BrokerStartup
conf/broker.conf conf/logback_broker.xml
身份鉴别
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)~d)
判定要点:管理账户唯一且非默认口令、鉴别信息复杂度与有效期均已配置、远程管理走加密通道、失败处理与会话超时已启用 → 符合;仅满足其中一部分(如有口令但无复杂度/无锁定/无超时)→ 部分符合;管理入口无鉴别或沿用出厂口令 → 不符合(高风险)。
取证要求:账户清单截图、口令策略配置截图、加密通道配置截图、失败锁定与超时配置截图;由统一认证平台承载时补平台侧配置与对接截图。
消息中间件默认无认证或允许匿名接入(Kafka PLAINTEXT 无 SASL、RabbitMQ 保留 guest 远程可登、EMQX 允许匿名连接、RocketMQ aclEnable=false),按《高风险判定指引》(2025版)直接判高风险;plain_acl.yml、JAAS 配置中出现明文 secretKey/password 同样计入。
判定口径详见 联盟团标-网络安全等级保护测评高风险判定指引(2025版)(对应 2025 版判例 6.4.1.1、6.4.5.2)。
A. Dashboard 与管理接口登录
核查命令:
find . -type f | grep -i "dashboard\\|auth\\|login"
- 备注:核查是否启用 Dashboard、地址和认证方式。
- 预期证据:控制台截图、配置截图。
示例输出(节选)
find . | grep dashboard|auth|login
(未部署 console/dashboard 组件;管理操作经 CLI+堡垒机完成并留痕)
B. 用户与 ACL
核查命令:
grep -R "aclEnable\\|accessKey\\|secretKey" conf 2>/dev/null
- 备注:核查 ACL、账号、默认凭据和共享账户。
- 预期证据:ACL 配置截图、账号说明。
示例输出(节选)
grep aclEnable/accessKey conf
conf/plain_acl.yml:
accessKey: rocketmq-demo
secretKey: ***
(ACL 文件权限 600,口令掩码展示)
C. 口令与失败处理
核查命令:
grep -R "aclEnable\\|plain_acl" conf 2>/dev/null
- 备注:RocketMQ 的锁定能力有限,应结合来源限制和平台控制综合判断。
- 预期证据:配置截图、平台材料。
示例输出(节选)
grep aclEnable/plain_acl conf
broker.conf: aclEnable=true
conf/plain_acl.yml 存在且生效
(ACL 已启用,未授权主体拒绝接入)
D. 会话与远程管理
核查命令:
grep -R "tls\\|ssl" conf 2>/dev/null
- 备注:管理和客户端接入应关注 TLS 和运维链路保护。
- 预期证据:TLS 截图、证书材料。
示例输出(节选)
grep tls/ssl conf
broker.conf: tlsEnable=true
rmq-proxy.json: tlsEnable=true
(客户端与服务端间启用 TLS)
访问控制
对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)~f)
判定要点:账户与角色齐备且权限最小化、默认账户已重命名或改口令、无多余/过期/共享账户、管理来源受限制 → 符合;有账户体系但权限未按最小化分配或管理来源未限制 → 部分符合;全员共用超级账户、管理端口对全网开放 → 不符合(高风险)。
取证要求:账户与角色对应表、授权策略截图、管理来源限制(ACL/绑定地址/防火墙策略)截图、多余账户处置记录。
未启用 ACL 授权(Kafka allow.everyone.if.no.acl.found=true、RabbitMQ 全账户 .* .* .*、EMQX 授权链为空即放行)、超级用户被业务账户共用、Topic/队列权限未按生产消费分离,均判高风险;管理端口(9093/15672/18083/8080)对全网开放的一并记录。
判定口径详见 联盟团标-网络安全等级保护测评高风险判定指引(2025版)(对应 2025 版判例 6.4.1.1、6.4.2.2、6.4.3.1)。
A. Topic 与组权限
核查命令:
grep -R "globalWhiteRemoteAddresses\\|accounts" conf/plain_acl.yml 2>/dev/null
- 备注:应核查生产、消费和管理权限是否分离。
- 预期证据:ACL 截图、权限说明。
示例输出(节选)
grep plain_acl.yml
globalWhiteRemoteAddresses:
- 192.168.1.*
accounts:
- accessKey: rocketmq-demo
whiteRemoteAddress: 192.168.1.%
admin: false
B. 管理接口来源限制
核查命令:
grep -R "listenPort\\|brokerIP1\\|namesrvAddr" conf 2>/dev/null
- 备注:Dashboard、Broker 管理和 NameServer 访问应限制来源。
- 预期证据:配置截图、网络材料。
示例输出(节选)
grep listenPort conf
namesrv.properties: listenPort=9876
broker.conf: listenPort=10911 brokerIP1=192.168.10.61
namesrvAddr=192.168.10.60:9876
C. 默认账户与测试 Topic
核查命令:
grep -R "rocketmq" conf 2>/dev/null
- 备注:默认配置、测试 Topic 和示例账号应清理或限制。
- 预期证据:配置截图、处置说明。
示例输出(节选)
grep rocketmq conf(节选)
broker.conf: brokerClusterName=demo-cluster
broker.conf: brokerName=broker-a
plain_acl.yml: accessKey=rocketmq-demo
(配置中无个人敏感信息字段)
D. 文件权限
核查命令:
find conf -maxdepth 1 -type f -exec ls -l {} \\
2>/dev/null
- 备注:配置、日志和存储目录权限应最小化。
- 预期证据:权限截图、运行用户截图。
示例输出(节选)
-rw-r----- 1 rocketmq rocketmq 2100 broker.conf
-rw------- 1 rocketmq rocketmq 480 plain_acl.yml
-rw-r----- 1 rocketmq rocketmq 920 namesrv.properties
(配置文件权限合规)
安全审计
对应控制点:GB/T 22239-2019 8.1.4.3 安全审计 a)~d)
判定要点:审计功能启用且覆盖每个用户与重要行为、审计记录字段齐全、审计记录受保护并定期备份、留存不少于 6 个月 → 符合;仅记录部分事件或留存不足 6 个月 → 部分符合;审计未启用或普通用户可删改审计记录 → 不符合(高风险)。
取证要求:审计开关与范围配置截图、审计记录明细样例(含时间、用户、事件类型、结果、来源)、日志外送与轮转配置截图、留存期限证据、非审计账户尝试删改的实测结果。
未开启认证/授权事件日志、日志中无客户端标识与来源地址、审计记录留存不足 6 个月且未外送日志平台,判高风险;仅有 broker 运行日志而无鉴权拒绝记录的,按部分符合处理并要求补证。 判定口径详见 联盟团标-网络安全等级保护测评高风险判定指引(2025版)(对应 2025 版判例 6.5.1.2)。
A. 日志配置
核查命令:
find logs -type f 2>/dev/null
find conf -type f | grep logback
- 备注:核查 Broker、NameServer、认证和异常日志。
- 预期证据:日志配置截图、日志目录截图。
示例输出(节选)
find logs -type f
logs/rocketmqlogs/broker.log
logs/rocketmqlogs/namesrv.log
logs/rocketmqlogs/client.log
find conf | grep logback
conf/logback_broker.xml conf/logback_namesrv.xml
B. 日志样例
核查命令:
tail -n 20 logs/* 2>/dev/null
- 备注:需证明连接、认证、异常和管理操作留痕。
- 预期证据:日志样例、平台截图。
示例输出(节选)
tail logs/rocketmqlogs/broker.log(节选)
2026-08-24 09:00:01 INFO BrokerControllerScheduledThread - dispatchBehindBytes=0
2026-08-24 10:12:44 WARN NettyEventExecutor - REMOTING RPC exception: /192.168.8.66 acl not permission
2026-08-24 10:13:01 INFO BrokerControllerScheduledThread - slave fall behind commit log 偏移已追平
C. 留存与轮转
核查命令:
grep -R "RollingFileAppender\\|maxHistory" conf 2>/dev/null
- 备注:需核实日志留存和轮转策略。
- 预期证据:配置截图、制度、访谈记录。
示例输出(节选)
grep RollingFileAppender conf
conf/logback_broker.xml: class="ch.qos.logback.core.rolling.RollingFileAppender"
conf/logback_broker.xml: <MaxHistory>30</MaxHistory>
(按日轮转保留 30 天)
D. 集中审计
核查命令:
journalctl | grep rocketmq | tail -n 50
- 备注:如日志进入平台,应补平台证据。
- 预期证据:平台截图、告警截图。
示例输出(节选)
journalctl | grep rocketmq(节选)
Aug 24 08:59:55 host systemd[1]: Started rocketmq-namesrv.
Aug 24 09:00:10 host java[6601]: The broker[broker-a, 192.168.10.61:10911] boot success.
Aug 24 10:12:44 host java[6620]: acl not permission for /192.168.8.66
数据完整性
对应控制点:GB/T 22239-2019 8.1.4.7 数据完整性 a)b)
判定要点:配置与关键数据在传输/存储过程中具备校验或完整性保护机制(TLS、签名、校验和、配置版本归档)→ 符合;仅有部分链路具备校验 → 部分符合;无任何完整性校验手段 → 不符合。
取证要求:传输加密配置截图、校验/签名机制说明、配置变更与归档记录、完整性检测工具输出。
A. 消息与主从复制完整性
核查命令:
grep -R "brokerRole\\|flushDiskType\\|enableDLegerCommitLog" conf/broker.conf 2>/dev/null
- 备注:重点核查同步刷盘、主从复制、DLeger 和 Broker 状态。
- 预期证据:配置截图、架构说明。
示例输出(节选)
grep brokerRole conf/broker.conf
brokerRole=SYNC_MASTER
flushDiskType=SYNC_FLUSH
enableDLegerCommitLog=false
(同步复制+同步刷盘,保障消息不丢失)
B. 传输完整性
核查命令:
grep -R "tlsEnable\\|useTLS" conf 2>/dev/null
- 备注:客户端和管理链路如使用 TLS,应明确完整性保护作用。
- 预期证据:TLS 配置截图、证书材料。
示例输出(节选)
grep tlsEnable/useTLS conf
broker.conf: tlsEnable=true
(客户端与服务端间启用 TLS,明文端口关闭)
数据保密性
对应控制点:GB/T 22239-2019 8.1.4.8 数据保密性 a)b)
判定要点:鉴别信息与敏感业务数据在传输和存储时均加密(TLS 1.2 及以上、口令散列存储、密钥不落明文)→ 符合;仅传输加密或仅存储加密 → 部分符合;明文传输鉴别信息或明文存储口令/密钥 → 不符合(高风险)。
取证要求:TLS 配置与证书信息截图、协议与加密套件清单、口令/密钥存储形态截图、抓包验证结果;使用国密算法时注明算法与模块。
A. TLS 与证书
核查命令:
grep -R "tls\\|ssl" conf 2>/dev/null
- 备注:敏感业务消息和管理面应优先加密。
- 预期证据:TLS 截图、证书截图。
示例输出(节选)
grep tls/ssl conf
broker.conf: tlsEnable=true
tls-server.need.client.auth=true
(双向 TLS:服务端校验客户端证书)
B. 敏感配置保护
核查命令:
grep -R "accessKey\\|secretKey\\|password" conf 2>/dev/null
- 备注:AK/SK、证书和密钥保护需重点核查。
- 预期证据:脱敏截图、权限说明。
示例输出(节选)
grep accessKey/secretKey/password conf(节选)
plain_acl.yml: secretKey: ***
broker.conf: (无明文口令项)
(凭据经 KMS 加密下发至 ACL 文件)
备份恢复
对应控制点:GB/T 22239-2019 8.1.4.9 数据备份恢复 a)c)
判定要点:配置与关键数据具备本地备份、备份可恢复且经过演练、具备主备或集群冗余 → 符合;有备份但无恢复演练记录,或仅有冗余无备份 → 部分符合;无任何备份与冗余措施 → 不符合(高风险)。
取证要求:备份策略与备份文件清单截图、恢复演练记录、集群/主备状态截图、备份介质与异地存放说明。
A. 配置备份
核查命令:
find conf -type f 2>/dev/null
- 备注:应覆盖 Broker、NameServer、ACL、日志配置和证书。
- 预期证据:备份目录截图、策略说明。
示例输出(节选)
find conf -type f
broker.conf namesrv.properties plain_acl.yml
logback_broker.xml logback_namesrv.xml tools.yml
B. 存储与日志备份
核查命令:
find store logs -type f 2>/dev/null | head
- 备注:需说明 CommitLog、ConsumeQueue、IndexFile 等目录备份策略。
- 预期证据:目录截图、备份说明。
示例输出(节选)
find store logs | head
store/commitlog/00000000000000000000
store/consumequeue/demo-topic/0/000000...
logs/rocketmqlogs/broker.log
(commitlog 与消费队列文件完整,纳入备份策略)
C. 恢复能力
核查命令:
grep -R "brokerRole" conf/broker.conf 2>/dev/null
- 备注:可通过主从切换、日志恢复和集群重建说明恢复能力。
- 预期证据:恢复手册、演练记录、工单。
示例输出(节选)
grep brokerRole conf/broker.conf
brokerRole=SYNC_MASTER
(主从同步复制,从节点可用于恢复切换;另有每日配置与 commitlog 备份)
剩余信息保护
对应控制点:GB/T 22239-2019 8.1.4.10 剩余信息保护 a)b)
判定要点:鉴别信息与敏感数据所在存储空间在释放或清除前得到完全清除(口令散列不可逆、临时文件与旧配置定期清理、介质报废有销毁记录)→ 符合;部分清理但无制度与记录 → 部分符合;明文口令残留、旧配置与备份文件长期堆积在生产目录 → 不符合。
取证要求:清理策略与计划任务截图、残留排查命令输出、介质销毁与设备报废记录、制度文件。
A. 历史 Topic 与旧日志
核查命令:
find . -type f | grep -E "bak|old|backup"
- 备注:旧日志、旧配置、测试 Topic 相关文件应清理。
- 预期证据:目录截图、清理说明。
示例输出(节选)
find . | grep bak|old|backup
backup-conf-20260801/
store/checkpoint.bak
(旧配置备份纳入台账,定期清理过期文件)
B. 凭据残留
核查命令:
grep -R "secretKey\\|accessKey\\|password\\|token" . 2>/dev/null
- 备注:配置、日志和脚本中的敏感信息残留应重点核查。
- 预期证据:脱敏截图、整改说明。
示例输出(节选)
grep secretKey/accessKey/token .(节选)
conf/plain_acl.yml: secretKey: ***
logs/rocketmqlogs/broker.log: acl not permission(日志无敏感明文)
个人信息保护
对应控制点:GB/T 22239-2019 8.1.4.11 个人信息保护 a)b)
判定要点:仅采集和保存业务必需的个人信息、禁止未授权访问与非法使用(日志字段最小化、访问受权限控制、导出有审批)→ 符合;有访问控制但未做字段最小化或无导出管控 → 部分符合;日志或配置中明文记录身份证、手机号、令牌等且无访问控制 → 不符合(高风险)。
取证要求:日志格式与字段清单截图、样例日志(脱敏后)、个人信息访问权限配置、导出审批记录;不涉及个人信息时留存数据流说明作为不适用依据。
A. 消息主题中的个人信息
核查命令:
grep -R "topic" conf 2>/dev/null
- 备注:不建议现场直接查看敏感消息正文,应结合业务访谈判断。
- 【不适用】若 RocketMQ 消息不涉及个人信息,则该点不适用。
- 预期证据:业务说明、Topic 清单、访谈记录。
示例输出(节选)
grep topic conf(节选)
tools.yml: topicName=demo-topic
broker.conf: (topic 由运维经 mqadmin 创建,命名不含个人信息字段)
B. 导出与共享控制
核查命令:
find . -type f | grep -i "export\\|consumer\\|tool" 2>/dev/null
- 备注:消息消费工具、管理控制台和转储脚本需关注个人信息扩散风险。
- 【不适用】若不承载个人信息,且无相关导出共享能力,则该点不适用。
- 预期证据:权限说明、制度、访谈记录。
示例输出(节选)
find . | grep export|consumer|tool
bin/mqadmin bin/mqconsumer bin/play.sh
(CLI 工具使用需堡垒机授权并留痕)
入侵防范
对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 a)~h)、8.1.4.5 恶意代码防范
判定要点:遵循最小安装、关闭多余服务与高危端口、管理终端受限、具备数据有效性检验、及时修补漏洞并有加固记录 → 符合;部分项缺失但有等效补偿(WAF/IPS/主机加固)且证据齐全 → 部分符合;存在未修补高危漏洞或高危端口对全网开放且无补偿 → 不符合(高风险)。
取证要求:组件与服务清单、端口扫描结果、管理终端限制配置、漏洞扫描与修补记录、基线加固对照表、攻击告警或阻断记录。
存在未修补的高危漏洞(消息队列历史上多次出现未授权访问导致远程代码执行)、监听端口对公网或全网段开放、集群节点间通信未加密未认证,直接判高风险;super.users/admin:true 账户过多的一并记录。
判定口径详见 联盟团标-网络安全等级保护测评高风险判定指引(2025版)(对应 2025 版判例 6.4.2.2、6.4.3.1、6.4.3.2)。
A. 管理面与服务端口暴露
核查命令:
grep -R "listenPort\\|namesrvAddr" conf 2>/dev/null
ps -ef | grep rocketmq
- 备注:重点核查 NameServer、Broker、Dashboard 和 Proxy 端口暴露情况。
- 预期证据:端口截图、配置截图、网络材料。
示例输出(节选)
grep listenPort/namesrvAddr conf
broker.conf: listenPort=10911 namesrvAddr=192.168.10.60:9876
ps -ef | grep rocketmq
rocketmq 6601 NamesrvStartup rocketmq 6620 BrokerStartup
B. ACL 与默认配置风险
核查命令:
grep -R "aclEnable\\|accessKey\\|secretKey" conf 2>/dev/null
- 备注:关注未启用 ACL、测试账号、白名单过宽和默认配置风险。
- 预期证据:ACL 截图、配置截图、处置说明。
示例输出(节选)
grep aclEnable/accessKey conf
broker.conf: aclEnable=true
plain_acl.yml: accounts 按账户配置权限与来源白名单
(未授权主体默认拒绝,符合基线要求)
C. 版本与漏洞风险
核查命令:
mqbroker -v 2>/dev/null
mqnamesrv -v 2>/dev/null
- 备注:需确认版本、组件版本和高危漏洞整改情况。
- 预期证据:版本截图、补丁或整改记录。
示例输出(节选)
mqbroker -v
RocketMQ Broker 5.1.4
mqnamesrv -v
RocketMQ NameServer 5.1.4
D. 防护与告警联动
核查命令:
tail -n 20 logs/* 2>/dev/null
- 备注:RocketMQ 入侵防范通常依赖网络隔离、主机防护、日志平台和安全告警联动。
- 预期证据:平台截图、告警记录、主机防护材料。
示例输出(节选)
tail logs/rocketmqlogs/broker.log(节选)
2026-08-24 10:12:44 WARN REMOTING RPC exception: /192.168.8.66 acl not permission
2026-08-24 10:12:45 INFO closeChannel: close the connection to remote address[/192.168.8.66:51234]
(非法接入被拒绝并记录,联动安全平台封禁告警)
参考依据
- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》(8.1.4 安全计算环境):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》(单元测评的测评实施与结果判定:符合/部分符合/不符合/不适用):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C
- GB/T 25070-2019《信息安全技术 网络安全等级保护安全设计技术要求》,可在全国标准信息公共服务平台检索:http://openstd.samr.gov.cn/bzgk/gb/
- Apache RocketMQ 官方 ACL 最佳实践(
plain_acl.yml、aclEnable、ACL 2.0):https://rocketmq.apache.org/docs/bestPractice/06acl/ - Apache RocketMQ 运维工具参考(
mqadmin clusterList、updateAclConfig、listAcl):https://rocketmq.apache.org/docs/operation/03tools/ - 《网络安全等级保护测评高风险判定指引》(中关村信息安全测评联盟团体标准),站内对照表:22、高风险判定指引与加固对照表
- 命令核验说明:本文命令已于 2026-09 对照 rocketmq.apache.org 官方 ACL 最佳实践与运维工具文档(
mqadmin clusterList -n、mqadmin updateAclConfig、plain_acl.yml字段)抽样核验;ACL 1.0(plain_acl.yml)自 RocketMQ 5.3.3 起不再支持,5.x 应使用 ACL 2.0(mqadmin listAcl/getAcl,基于 gRPC 代理),现场须先确认版本再选口径。
关联文章
- Web 服务器与代理:Nginx 中间件测评、Apache HTTP Server 中间件测评、Microsoft IIS 中间件测评
- Java 应用服务器:Apache Tomcat 中间件测评、Oracle WebLogic Server 中间件测评、IBM WebSphere Application Server 中间件测评、JBoss / WildFly 中间件测评、Eclipse Jetty 中间件测评、东方通 TongWeb 中间件测评、金蝶 Apusic 应用服务器测评
- 消息队列与物联网接入:Apache Kafka 消息中间件测评、RabbitMQ 消息中间件测评、Apache ActiveMQ / Artemis 消息中间件测评、EMQX MQTT 消息服务器测评
- 缓存与协调服务:Redis 缓存数据库测评、Apache ZooKeeper 协调服务测评
- 容器运行平台:Docker 容器运行平台测评
- 现场指引:不适用控制点审阅结论、现场使用总指引(中间件与容器)、现场判定话术(不适用控制点)
- 板块目录:中间件与容器
- 配套加固:21、Web中间件安全加固、17、加固方案总纲
- 取证记录:16、安全评估加固记录表3.0
- 高风险口径:22、高风险判定指引与加固对照表