RabbitMQ 的两类入口
RabbitMQ 管理插件默认监听 15672,AMQP 协议默认 5672,集群通信使用 25672;内置账号 guest 的口令同为 guest,且默认仅允许从本机登录。风险集中在两处:为了远程管理放开 guest 的登录限制,以及保留默认口令或使用弱口令。消息队列失守意味着业务消息可被读取、伪造消息可被投递,队列中传递的凭据同样会暴露,管理界面还能直接创建账号与修改策略。
基本信息
| 组件 | RabbitMQ,含管理插件 rabbitmq_management |
|---|---|
| 默认端口 | 15672 管理界面,5672 AMQP,25672 集群通信 |
| 内置账号 | guest/guest,默认仅允许本机登录 |
| 主要风险 | 放开 guest 远程登录、弱口令、管理界面暴露公网 |
| 加固要点 | 禁用 guest、最小权限业务账号、来源限制、启用 TLS |
| 检查方式 | rabbitmqctl 系列命令与防火墙规则核对 |
核查项与期望
| 核查项 | 检查方式 | 期望状态 |
|---|---|---|
| 账号列表 | rabbitmqctl list_users | 无 guest 或已禁用,账号来源可追溯 |
| 权限分配 | rabbitmqctl list_permissions | 业务账号只在所需 vhost 授权 |
| 虚拟主机 | rabbitmqctl list_vhosts | 无多余测试 vhost |
| 节点状态 | rabbitmqctl status | 版本与监听地址符合基线 |
| 来源限制 | 防火墙或安全组规则 | 15672 仅管理网段可访问 |
| 审计记录 | 管理界面操作日志 | 异常登录与策略变更可追溯 |
加固要点
加固要点
1. 删除或禁用 guest,创建最小权限业务账号(按 vhost 授权)
2. 15672 与 5672 限制来源网段,管理界面不对公网开放
3. 启用 TLS 加密 AMQP 通信与管理界面
4. 开启管理操作审计,监控异常登录与策略变更
5. 定期轮换口令,接入统一身份认证后同步清理本地账号常用核查命令
常用核查命令
rabbitmqctl list_users # 列出账号与角色
rabbitmqctl list_permissions # 查看权限分配
rabbitmqctl list_vhosts # 查看虚拟主机列表
rabbitmqctl status | head # 查看节点与监听信息
rabbitmqctl list_queues name messages consumers # 关注异常队列与消费者典型使用场景
- 消息队列上线前的账号与暴露面核查
- 季度巡检中的默认口令专项排查
- 应急时确认是否有人新增了账号或改了权限
- 迁移到托管消息服务前的现状对照
- 审计举证:给出账号清单与权限归属
- 口令轮换后核对客户端配置是否同步更新
guest 的「仅本机可用」是官方的保护机制。修改 loopback 限制前先评估风险;确需远程管理时,改用独立业务账号并叠加来源限制。
为方便远程管理放开 guest 远程登录,等于把默认口令组合直接暴露出去,会在很短时间内被自动化尝试命中。