8161 是什么
ActiveMQ 的 Web 控制台由内置 Jetty 承载,默认监听 8161,用来看队列积压、消费者数量、主题订阅状态与连接明细。它和承载消息流量的 61616(OpenWire)是两个端口:前者面向运维人员,后者面向业务客户端。控制台默认账号是 admin/admin,出厂配置人人皆知。
为什么它是重点风险口
历史上暴露在公网的 ActiveMQ 控制台被 CVE-2016-3088 利用:先通过管理接口上传文件,再借助默认目录的可写性放置 JSP,最终获得服务器权限。即便不打这个漏洞,未改口令的控制台也允许攻击者查看队列名与消息内容,直接造成业务数据泄露。
基本信息
| 服务 | ActiveMQ Web Console(Jetty) |
|---|---|
| 协议 | TCP/HTTP 8161 |
| 业务端口 | 61616(OpenWire 客户端接入) |
| 默认口令 | admin/admin,部署后必须修改 |
| 安全等级 | 仅管理网段,不得暴露公网 |
典型使用场景
- 日常巡检队列积压量与消费者在线情况
- 排查消息堆积时确认 broker 状态、连接数与慢消费者
- 查看主题持久订阅与待确认消息数量
- 排查客户端连接被拒时对照连接明细与认证配置
- 安全核查时确认管理控制台是否暴露到非受信网段
端口与控制台核查
端口与控制台核查
ss -lntp | grep -E '8161|61616' # 确认管理面与业务面监听
curl -sI http://activemq:8161/admin/ | head -5 # 探测控制台是否可达
grep -n -E 'port|admin' /opt/activemq/conf/jetty.xml | head # 端口与账号配置
grep -v '^#' /opt/activemq/conf/jetty-realm.properties # 查看控制台账号加固要点
加固要点
# conf/jetty.xml:把控制台绑定到内网地址
# <property name="host" value="127.0.0.1"/>
# jetty-realm.properties:替换 admin,口令用强随机串
# 边界侧:仅放行管理网段访问 8161,业务网段只放 61616
systemctl restart activemq管理面与业务面
| 端口 | 面向 | 说明 |
|---|---|---|
| 8161 | 管理与监控 | Web 控制台、REST 管理接口 |
| 61616 | 业务客户端 | JMS 客户端与 broker 组网连接 |
| 61613 | 业务客户端 | STOMP 协议接入,出厂默认启用 |
61616 是业务接入面,8161 是管理面,两者都要限制来源;管理面尤其不能暴露公网,并必须替换默认的 admin/admin。
控制台看到的队列积压不一定是故障:消费者暂停或流量突增都会造成堆积,判断前先对比历史水位与消费者数量,避免误重启 broker 把内存中的非持久消息丢掉。