RabbitMQ 消息中间件测评

RabbitMQ 三级等保现场测评取证命令单:按控制点组织 rabbitmqctl 用户与权限、管理插件、审计日志核查命令、判定要点与取证要求。

定位:RabbitMQ 三级等保现场测评取证命令单,按 GB/T 22239-2019 安全计算环境控制点分节组织核查命令、判定要点与取证要求。 适用范围:RabbitMQ 3.x 单机、镜像队列、集群和管理插件场景。 配套文章:22、高风险判定指引与加固对照表、16、安全评估加固记录表3.0、21、Web中间件安全加固。

使用说明:

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

不适用标识说明:

  • 使用 【不适用】 明确标记现场可判定为不适用的控制点。
  • 判定依据采用 GB/T 28448-2019 的对象边界原则;RabbitMQ 属于消息中间件,业务型控制点需结合消息内容和管理插件启用情况判定。

基础信息

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

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

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

核查命令:

rabbitmqctl version
rabbitmq-diagnostics server_version
ps -ef | grep beam
find / -name rabbitmq.conf 2>/dev/null
  • 备注:确认版本、节点、集群、端口、配置目录、数据目录、日志目录和管理插件。
  • 预期证据:版本截图、节点截图、配置路径截图、端口截图。
示例输出(节选)
rabbitmqctl version
3.12.12
rabbitmq-diagnostics server_version
3.12.12
ps -ef | grep beam
rabbitmq 3301 beam.smp -K true -A 128 -- root
/etc/rabbitmq/rabbitmq.conf

身份鉴别

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

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

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

A. 管理控制台登录

核查命令:

rabbitmq-plugins list | grep management
  • 备注:核查管理插件是否启用、控制台地址、认证方式和来源限制。
  • 预期证据:插件截图、登录页截图、地址截图。
示例输出(节选)
rabbitmq-plugins list | grep management
[E*] rabbitmq_management
(管理插件已启用,15672 端口经内网+堡垒机访问)

B. 用户与虚拟主机

核查命令:

rabbitmqctl list_users
rabbitmqctl list_permissions -p /
  • 备注:核查默认账户、共享管理员、用户权限和虚拟主机隔离。
  • 预期证据:用户截图、权限截图、访谈记录。
示例输出(节选)
rabbitmqctl list_users
Listing users ...
user    tags
admin   [administrator]
demo-app []
guest   [](guest 应删除或禁用)
rabbitmqctl list_permissions -p /
user     configure write read
admin    .* .* .*
demo-app ^demo- ^demo- ^demo-

C. 口令与失败处理

核查命令:

grep -R "auth_mechanisms\\|management.load_definitions\\|loopback_users" /etc/rabbitmq 2>/dev/null
  • 备注:锁定能力较弱,通常依赖前置认证、来源限制和管理策略综合判断。
  • 预期证据:配置截图、平台材料。
示例输出(节选)
/etc/rabbitmq/rabbitmq.conf: auth_mechanisms.1 = EXTERNAL
/etc/rabbitmq/conf.d/10-auth.conf: loopback_users.guest = false
(生产接入经 TLS 客户端证书 EXTERNAL 认证;loopback 限制策略见备注)

D. 会话与远程管理

核查命令:

grep -R "ssl_options\\|management.ssl" /etc/rabbitmq 2>/dev/null
  • 备注:管理插件应关注 HTTPS、来源限制和运维链路保护。
  • 预期证据:HTTPS 截图、配置截图、制度。
示例输出(节选)
grep rabbitmq.conf
listeners.ssl.default = 5671
management.ssl.port   = 15671
ssl_options.cacertfile = /etc/rabbitmq/ssl/ca.pem
ssl_options.certfile   = /etc/rabbitmq/ssl/demo-node.pem
ssl_options.verify     = verify_peer

访问控制

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

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

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

A. 用户权限与虚拟主机隔离

核查命令:

rabbitmqctl list_permissions -p /
rabbitmqctl list_vhosts
  • 备注:应区分不同用户对 Exchange、Queue、Topic 的权限。
  • 预期证据:权限截图、架构说明。
示例输出(节选)
rabbitmqctl list_permissions -p /
admin    .* .* .*
demo-app ^demo- ^demo- ^demo-
rabbitmqctl list_vhosts
Listing vhosts ...
name
demo-vhost
(vhost 级最小授权,demo-app 仅限 demo-vhost 内 ^demo- 前缀资源)

B. 管理插件与来源限制

核查命令:

grep -R "management.tcp\\|management.ssl\\|loopback_users" /etc/rabbitmq 2>/dev/null
  • 备注:管理控制台应限制来源地址,默认用户不得对外开放。
  • 预期证据:配置截图、网络 ACL 材料。
示例输出(节选)
/etc/rabbitmq/rabbitmq.conf: management.tcp.port = 15672
/etc/rabbitmq/rabbitmq.conf: management.ssl.port = 15671
/etc/rabbitmq/conf.d/: loopback_users.admin = (空)
(管理端口默认不限来源,需依赖防火墙/安全组限制)

C. 默认账户与测试对象

核查命令:

rabbitmqctl list_users
  • 备注:默认 guest 用户、测试用户、测试虚拟主机应清理或限制。
  • 预期证据:用户截图、处置说明。
示例输出(节选)
rabbitmqctl list_users
Listing users ...
user    tags
admin   [administrator]
demo-app []
(无 guest 账户残留,账户实名对应运维人员)

D. 文件与进程权限

核查命令:

ps -o user,pid,cmd -C beam.smp
ls -l /etc/rabbitmq/rabbitmq.conf 2>/dev/null
  • 备注:运行用户、配置和 cookie 文件权限应最小化。
  • 预期证据:权限截图、运行用户截图。
示例输出(节选)
USER   PID  COMMAND
rabbitmq 3301 beam.smp
-rw-r----- 1 rabbitmq rabbitmq 2140 /etc/rabbitmq/rabbitmq.conf

安全审计

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

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

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

A. 日志配置

核查命令:

rabbitmq-diagnostics log_location
find /var/log/rabbitmq -type f 2>/dev/null
  • 备注:核查 Broker 日志、管理日志、认证失败和审计留痕。
  • 预期证据:日志配置截图、日志目录截图。
示例输出(节选)
rabbitmq-diagnostics log_location
logfiles:
  log: /var/log/rabbitmq/log/crash.log
  sasl: /var/log/rabbitmq/log/erlang.log
find /var/log/rabbitmq
log/
upgrade.log

B. 日志样例

核查命令:

tail -n 30 /var/log/rabbitmq/* 2>/dev/null
  • 备注:应证明认证、连接、异常和管理操作留痕。
  • 预期证据:日志样例、平台截图。
示例输出(节选)
tail /var/log/rabbitmq/log/erlang.log(节选)
2026-08-24 09:00:01.001 [info] <0.44.0> Server startup complete; 3 plugins started.
2026-08-24 10:12:44.220 [info] <0.981.0> accepting AMQP connection <0.981.0> (192.168.1.23:51234 -> 192.168.10.31:5671)
2026-08-24 10:12:44.355 [warning] <0.985.0> closing AMQP connection (login refused: unknown user 'test')

C. 留存与轮转

核查命令:

grep -R rabbitmq /etc/logrotate* 2>/dev/null
  • 备注:需核实留存、轮转和归档策略。
  • 预期证据:配置截图、制度、访谈记录。
示例输出(节选)
grep rabbitmq /etc/logrotate.d/*
/etc/logrotate.d/rabbitmq-server:/var/log/rabbitmq/log/*.log {
/etc/logrotate.d/rabbitmq-server: daily rotate 30 compress

D. 集中审计

核查命令:

journalctl | grep rabbitmq | tail -n 50
  • 备注:如日志进入平台,应补平台证据。
  • 预期证据:平台截图、告警截图。
示例输出(节选)
journalctl | grep rabbitmq(节选)
Aug 24 08:58:40 host systemd[1]: Starting RabbitMQ broker...
Aug 24 08:59:02 host rabbitmq-server[3301]: completed with 3 plugins.
Aug 24 10:12:44 host rabbitmq-server[3301]: login refused: unknown user 'test'

数据完整性

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

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

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

A. 集群与镜像同步

核查命令:

rabbitmqctl cluster_status
rabbitmqctl list_queues name durable messages
  • 备注:重点看集群节点状态、队列持久化和镜像/仲裁队列情况。
  • 预期证据:集群状态截图、队列截图。
示例输出(节选)
rabbitmqctl cluster_status(节选)
Runtime: node rabbit@mq-node1
Alarms: none
Running nodes: [rabbit@mq-node1 rabbit@mq-node2 rabbit@mq-node3]
rabbitmqctl list_queues name durable messages
demo-order.queue true 1204
(队列 durable=true,集群三节点镜像/仲裁队列保障完整性)

B. 传输完整性

核查命令:

grep -R "listeners.ssl\\|ssl_options" /etc/rabbitmq 2>/dev/null
  • 备注:客户端接入和节点间通信如使用 TLS,应明确其作用。
  • 预期证据:SSL 配置截图、证书材料。
示例输出(节选)
/etc/rabbitmq/rabbitmq.conf: listeners.ssl.default = 5671
/etc/rabbitmq/conf.d/10-tls.conf: ssl_options.fail_if_no_peer_cert = true

数据保密性

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

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

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

A. TLS 与证书

核查命令:

grep -R "ssl_options\\|cacertfile\\|certfile\\|keyfile" /etc/rabbitmq 2>/dev/null
  • 备注:管理面和敏感消息接入应优先启用 TLS。
  • 预期证据:HTTPS/TLS 截图、证书截图。
示例输出(节选)
/etc/rabbitmq/rabbitmq.conf: ssl_options.cacertfile = /etc/rabbitmq/ssl/ca.pem
ssl_options.certfile   = /etc/rabbitmq/ssl/demo-node.pem
ssl_options.keyfile    = /etc/rabbitmq/ssl/demo-node.key
ssl_options.verify     = verify_peer

B. 敏感配置保护

核查命令:

grep -R "default_user\\|default_pass\\|password" /etc/rabbitmq 2>/dev/null
  • 备注:默认账户、cookie、定义文件和敏感配置需重点核查。
  • 预期证据:脱敏截图、权限说明。
示例输出(节选)
grep default_user/password /etc/rabbitmq
rabbitmq.conf: default_user 未出现(禁用内置默认用户)
definitions.json: "password_hash":"..."(哈希存储)
(未见明文口令)

备份恢复

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

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

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

A. 配置备份

核查命令:

find /etc/rabbitmq -type f 2>/dev/null
  • 备注:应覆盖配置、定义文件、证书和 Erlang cookie。
  • 预期证据:备份截图、策略说明。
示例输出(节选)
/etc/rabbitmq/rabbitmq.conf
/etc/rabbitmq/conf.d/10-auth.conf
/etc/rabbitmq/conf.d/10-tls.conf
/etc/rabbitmq/definitions.json

B. 数据与日志备份

核查命令:

find /var/lib/rabbitmq /var/log/rabbitmq -type f 2>/dev/null | head
  • 备注:需说明 Mnesia 数据、日志和定义文件备份策略。
  • 预期证据:目录截图、备份说明。
示例输出(节选)
find /var/lib/rabbitmq /var/log/rabbitmq -type f | head
/var/lib/rabbitmq/mnesia/rabbit@mq-node1/queues.idx
/var/log/rabbitmq/log/erlang.log
/var/backup/rabbitmq/definitions-20260823.json

C. 恢复能力

核查命令:

rabbitmqctl cluster_status
  • 备注:应通过节点恢复、定义导入和集群重建说明恢复能力。
  • 预期证据:恢复手册、演练记录、工单。
示例输出(节选)
rabbitmqctl cluster_status(节选)
Running nodes: [rabbit@mq-node1 rabbit@mq-node2 rabbit@mq-node3]
Alarms: none
Partitions: none
(三节点仲裁队列,节点故障可自动恢复)

剩余信息保护

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

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

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

A. 历史节点与旧定义文件

核查命令:

find /etc/rabbitmq /var/lib/rabbitmq -type f | grep -E "bak|old|backup|definitions" 2>/dev/null
  • 备注:旧定义文件、停用节点数据和备份文件应清理。
  • 预期证据:目录截图、清理说明。
示例输出(节选)
find ... | grep bak|old|backup|definitions
/var/backup/rabbitmq/definitions-20260823.json
/var/lib/rabbitmq/mnesia/rabbit@mq-node1/queues.idx.old
(旧 mnesia 文件应定期清理,定义导出每日备份)

B. 凭据残留

核查命令:

grep -R "password\\|secret\\|cookie" /etc/rabbitmq /var/log/rabbitmq 2>/dev/null
  • 备注:配置和日志中的敏感信息残留应重点核查。
  • 预期证据:脱敏截图、整改说明。
示例输出(节选)
grep password/secret/cookie /etc/rabbitmq /var/log/rabbitmq
/var/lib/rabbitmq/.erlang.cookie: COOKIEVALUE***(权限 400)
definitions.json: password_hash 存储为哈希
(cookie 文件权限合规,日志中无 cookie 泄露)

个人信息保护

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

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

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

A. 队列消息中的个人信息

核查命令:

rabbitmqctl list_queues name messages
  • 备注:不建议现场直接查看敏感消息正文,应结合业务访谈确认是否承载个人信息。
  • 【不适用】若 RabbitMQ 承载的仅为系统通知、非个人信息业务消息,则该点可判定不适用。
  • 预期证据:队列清单截图、业务访谈记录。
示例输出(节选)
rabbitmqctl list_queues name messages
demo-order.queue  1204
demo-payment.queue 87
(消息内容不落盘于日志,个人信息由应用侧加密)

B. 导出与共享控制

核查命令:

rabbitmqctl export_definitions /tmp/rabbitmq-definitions.json 2>/dev/null
  • 备注:定义导出、消息消费工具和转发链路需关注个人信息扩散风险。
  • 【不适用】若消息不含个人信息,且未启用相关导出共享能力,则该点不适用。
  • 预期证据:权限说明、制度、访谈记录。
示例输出(节选)
rabbitmqctl export_definitions /tmp/rabbitmq-definitions.json
Exported definitions to file "/tmp/rabbitmq-definitions.json".
(导出文件含用户哈希口令,应及时删除或加密存放)

入侵防范

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

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

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

A. 管理插件与端口暴露

核查命令:

rabbitmq-plugins list | grep management
ss -lntp | grep 15672
  • 备注:重点核查管理插件、AMQP 端口和集群端口是否暴露到无关网络。
  • 预期证据:端口截图、配置截图、网络材料。
示例输出(节选)
rabbitmq-plugins list | grep management
[E*] rabbitmq_management
ss -lntp | grep 15672
LISTEN 0 128 127.0.0.1:15672
(管理端口仅本机监听,外部经 Nginx 反代+SSO 访问)

B. 默认账户与危险配置

核查命令:

rabbitmqctl list_users
grep -R "loopback_users\\|default_user\\|default_pass" /etc/rabbitmq 2>/dev/null
  • 备注:默认 guest 用户、弱口令、过度开放虚拟主机和测试用户是高频风险点。
  • 预期证据:用户截图、配置截图、处置说明。
示例输出(节选)
rabbitmqctl list_users
admin   [administrator]
demo-app []
grep loopback_users/default_user /etc/rabbitmq
conf.d/10-auth.conf: loopback_users.admin =
(无默认用户,管理员账户经堡垒机二次认证使用)

C. 版本与漏洞风险

核查命令:

rabbitmqctl version
  • 备注:需确认版本、插件版本和高危漏洞整改情况。
  • 预期证据:版本截图、补丁或整改记录。
示例输出(节选)
rabbitmqctl version
3.12.12
(版本较新,CVE 修复情况见补丁台账)

D. 防护与告警联动

核查命令:

tail -n 30 /var/log/rabbitmq/* 2>/dev/null
  • 备注:RabbitMQ 入侵防范通常依赖网络隔离、主机防护、日志平台和消息安全监控联动。
  • 预期证据:平台截图、告警记录、主机防护材料。
示例输出(节选)
tail /var/log/rabbitmq/log/erlang.log(节选)
2026-08-24 10:12:44.355 [warning] closing AMQP connection (login refused: unknown user 'test')
2026-08-24 10:13:02.101 [error] <0.991.0> access refused for user 'test' from 192.168.8.66
(登录失败日志完整,联动 WAF/防火墙封禁并告警)

参考依据

关联文章