RabbitMQ 的暴露面
RabbitMQ 是常用的 AMQP 消息代理,业务系统用它传递任务指令、事件与异步结果。它自带 Web 管理插件,开启后可从浏览器查看队列、连接与消息内容。常见暴露点是管理界面直接对外可达、账号沿用默认值或多人共用一个高权账号。消息面权限过宽时,读到的不只是队列统计,还有业务数据本身。
基本信息
| 协议端口 | AMQP 5672、TLS 版 5671 |
|---|---|
| 管理插件 | 默认 15672,可查看队列、连接与消息 |
| 集群通信 | 25672 用于节点间通信,不应对外暴露 |
| 账号体系 | 用户、虚拟主机与权限三元组,权限可细分到读写配置 |
| 默认账号 | 内置账号通常仅允许本机访问,需要确认实际配置 |
典型使用场景
- 内网服务盘点:确认消息中间件的管理面暴露范围
- 账号治理核查:找出共用账号与权限过宽的账号
- 虚拟主机隔离核查:确认不同业务的隔离是否真的生效
- 变更前评估:管理面开放范围调整前先核对现有使用方
- 与其他中间件统一评估:消息类组件通常成组出现,一起看更省事
检查要点
检查要点
# 只读确认管理界面可达性与响应状态,不提交任何凭据
curl -s -o /dev/null -w '%{http_code}' http://10.0.20.8:15672/
# 授权范围内用专用账号查看账号与权限清单
rabbitmqctl list_users
rabbitmqctl list_permissions
# 记录:管理面可达范围、账号归属、权限粒度与收敛建议端口与用途读法
| 端口 | 用途 | 暴露要求 |
|---|---|---|
| 5672 | AMQP 客户端通信 | 仅业务网段可达 |
| 15672 | Web 管理界面 | 仅运维网段,配置认证 |
| 25672 | 集群节点间通信 | 禁止对外暴露 |
| 61613 等 | 其他协议插件端口 | 未使用的插件应关闭 |
消息队列常承载任务指令:消息面权限过宽不仅影响数据机密性,还会影响业务完整性,例如伪造指令或删除队列。
不要用测试消息验证投递能力:往生产队列投测试消息会污染业务数据流,通常以配置与权限核查替代。