Cassandra JMX 与 7199 端口
7199 是 Apache Cassandra 默认的 JMX 监控端口。nodetool 命令行、JConsole 与各类监控采集器都通过它读取集群运行时指标并执行管理操作(状态查询、触发 flush 或 repair)。Cassandra 的 JMX 默认不启用认证,而 JMX/RMI 在历史上出现过大量反序列化与远程加载攻击,7199 因此长期是自动化扫描的重点目标。
基本信息
| 服务 | Cassandra JMX(JMX/RMI) |
|---|---|
| 端口/协议 | TCP 7199,RMI 另开动态端口 |
| 访问工具 | nodetool -p 7199、JConsole、监控采集器 |
| 关键配置 | cassandra-env.sh 中 JMX_PORT 与 jmxremote 相关参数 |
| 权限要求 | 系统管理员,运维操作需集群权限 |
| 安全等级 | 仅管理网段,必须启用认证或只绑回环 |
典型使用场景
- 运维管理:用 nodetool 查看集群与节点状态
- 指标采集:JMX exporter 或自带采集器抓取运行时指标
- 容量与性能分析:看线程池积压、表统计与压缩状态
- 执行维护操作:flush、compact、repair 等,需谨慎操作
- 故障排查:JConsole 连接观察堆内存与 GC 行为
连接与加固
连接与加固
nodetool -p 7199 info # 查看节点信息与负载
nodetool -h 10.0.1.30 -p 7199 status # 查看集群节点状态
ss -lntp | grep -E ':(7199|7000|9042) ' # 核对 JMX 与节点通信端口
# 加固方向(cassandra-env.sh):JMX_PORT=7199 并只绑定回环
# -Dcom.sun.management.jmxremote.local.only=true
# 远程采集时启用认证与 SSL:authenticate=true 并配置密码与访问文件Cassandra 端口分工
| 端口 | 用途 | 安全要求 |
|---|---|---|
| 7199 | JMX 管理与监控 | 仅管理网段,须认证 |
| 7000 | 节点间内部通信(gossip) | 仅集群网段 |
| 9042 | 客户端 CQL 原生协议 | 业务网段,注意权限控制 |
| 9160 | 旧的 Thrift 接口 | 新版本已废弃,直接关闭 |
运维注意事项
- 采集与 nodetool 走内网管理网,JMX 端口不与业务端口共用暴露策略
- 扩容或变更前先用 nodetool status 确认所有节点处于正常状态
- 远程采集失败时先验证本机 nodetool 可用,再排查防火墙与 RMI 端口
- 版本升级后复查 cassandra-env.sh,自定义加固项可能被覆盖回默认值
- repair、cleanup、compact 等影响数据的操作纳入变更流程并留窗口
cassandra-env.sh 里的 JMX 参数在不同版本间写法有差异,远程连不上时先用本机 nodetool 验证服务正常,再检查 RMI 主机名与额外端口是否被放行。
JMX 未认证又暴露在内网时,攻击者可借助反序列化链或管理操作影响整个集群。生产环境务必限制来源、启用认证,并优先采用只允许本机连接的方式。