61616 是什么
61616 是 Apache ActiveMQ Classic 的默认主端口,承载 OpenWire 协议:业务系统的 JMS 客户端通过它收发消息,broker 之间组网也走这个端口。管理控制台单独开在 8161,两者职责分明——61616 是否可通,直接决定业务能不能发消息。
为什么它长期排在风险清单前列
CVE-2023-46604 让这个端口广为人知:OpenWire 在反序列化阶段可被构造的类加载请求利用,直接执行任意代码,且不需要有效账号,只要 TCP 可达即可尝试。未升级的实例因此几乎等于公开的代码执行入口,被勒索团伙与扫描器持续针对。
基本信息
| 服务 | ActiveMQ OpenWire(默认 61616) |
|---|---|
| 协议 | TCP |
| 管理端口 | 8161(Web 控制台) |
| 认证 | 出厂可匿名连接,需显式配置 |
| 安全等级 | 仅应用网段,严格限制来源 |
典型使用场景
- 业务系统通过 JMS 向队列发送与消费消息
- broker 之间配置网络连接器组网,实现跨节点转发
- 排查消息不通时确认客户端能否连上 61616、是否被鉴权拒绝
- 升级前核对版本线,确认是否受 OpenWire 反序列化漏洞影响
- 安全核查时确认该端口是否只对应用网段开放
版本与监听核对
版本与监听核对
ss -lntp | grep 61616 # 确认监听与绑定地址
bin/activemq --version # 查看版本并与修复版本线对照
curl -s http://localhost:8161/api/jolokia/version | head -c 200 # 从管理面看版本加固要点
加固要点
<!-- conf/activemq.xml -->
<!-- <transportConnector name="openwire" uri="tcp://127.0.0.1:61616"/> -->
<!-- <plugins><simpleAuthenticationPlugin> -->
<!-- <users><user username="app" password="<口令>" groups="users"/></users> -->
<!-- </simpleAuthenticationPlugin></plugins> -->接入入口对照
| 端口 | 协议 | 说明 |
|---|---|---|
| 61616 | OpenWire | JMS 客户端主入口,默认开启 |
| 61613 | STOMP | 文本协议接入,出厂默认开启 |
| 8161 | HTTP | 管理控制台,面向运维 |
CVE-2023-46604 的利用不需要账号,只要求 TCP 可达;受影响版本必须升级到修复版本,改端口或加口令都不能规避这个漏洞。
排查消息不通的建议顺序:先确认客户端到 61616 的连通性,再看 broker 日志里的认证失败记录,最后核对目标队列是否存在、消费端是否在线。三个环节对应完全不同的处置动作,跳步排查容易误判方向。