Files
suanli-juzhen/02_账号密码管理/references/MongoDB_分布式算力矩阵_数据库结构说明.md
2026-02-15 23:43:01 +08:00

176 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 分布式算力矩阵 · 本地 MongoDB 数据库结构说明
> 连接:`mongodb://admin:admin123@localhost:27017/?authSource=admin`
> 容器:`datacenter_mongodb`mongo:6.0
> 本文档列出**与项目相关的**数据库与集合、作用、结构及优化建议。
---
## 一、数据库总览
| 数据库 | 简介 | 本项目角色 |
|--------|------|------------|
| **KR** | 算力矩阵主库。存放 IP 弹药库、扫描结果、验证结果、登录结果,为扫描/破解/部署提供数据。 | 读写主库 |
| **KR_KR** | 历史业务用户库(木蚂蚁、房产网等),含注册/登录 IP。 | 只读源库 |
| **KR_卡若私域** | 老坑爹论坛/商店、黑科技付款邮箱等私域用户与交易 IP。 | 只读源库 |
| **KR_商城** | 小米等商城用户数据,含 IP。 | 只读源库 |
| **KR_国外** | 卡塔卡银行用户档案与审计日志,含登录/请求 IP。 | 只读源库 |
---
## 二、主库 KR — 集合清单
### 2.1 集合一览
| 集合名 | 作用 | 文档量级 | 写入方 | 读取方 |
|--------|------|----------|--------|--------|
| 分布式矩阵IP | IP 弹药库主表:多源用户+IP 去重、RFM/地区/手机/QQ供扫描目标与智能破解。 | ~871 万 | extract_ip_users_rfm.py | 扫描、暴力破解、增强 |
| 分布式矩阵IP_已扫描 | 端口扫描结果 + 每 IP 关联用户链;供协议验证与暴力破解。 | 可变 | kr_full_scan / import_scan_results / full_dimension_scan | verified_scan、mongo_smart_brute、enhance_scan_table |
| 分布式矩阵IP_已验证 | 两阶段协议验证后的真实存活 IP含 SSH/RDP 等)。 | 可变 | verified_scan | full_dimension_scan |
| 分布式矩阵IP_已登录 | 暴力破解成功 SSH 登录的 IP 及凭证。 | 可变 | mongo_smart_brute | enhance_logged_ips |
### 2.2 数据流(人类可读)
```
[源库] KR_KR / KR_卡若私域 / KR_商城 / KR_国外8 个集合)
│ extract_ip_users_rfm.py提取 + RFM + 地区 + 手机/QQ
KR.分布式矩阵IP871 万 · IP 弹药库)
│ 扫描目标选取 → kr_full_scan / import_scan_results / full_dimension_scan
KR.分布式矩阵IP_已扫描端口 + 用户链)
├─→ verified_scan.py协议验证──→ KR.分布式矩阵IP_已验证
└─→ mongo_smart_brute.py智能破解──→ KR.分布式矩阵IP_已登录
```
---
## 三、主库 KR — 各集合结构及优化
### 3.1 分布式矩阵IP
**作用**:统一 IP 用户资产表,每条 = 一个「用户+IP」组合带 RFM、地区、手机、QQ供扫描目标与智能破解匹配凭证。
**主要字段**
| 字段 | 类型 | 说明 |
|------|------|------|
| ip | string | 唯一 IP公网/内网) |
| ip_public | bool | 是否公网 IP |
| username, email, password, salt | string | 账号信息 |
| region, country, province, city | string | GeoIP 地区 |
| phone, qq | string | 提取的手机/QQ |
| source_db, source_col | string | 来源库/集合 |
| R_score, F_score, M_score, RFM_total | number | RFM 分值 |
| value_level, user_type | string | 价值等级/用户类型 |
| extracted_at | datetime | 入库时间 |
**推荐索引(已按 extract_ip_users_rfm.py 创建)**
- 单字段ip, ip_public, source_db, source_col, RFM_total, value_level, username, email, region, province, city, phone, qq
- 复合:(ip, source_col) 用于去重与按 IP+来源查询
**优化建议**
1. 仅需公网 IP 时,查询加 `ip_public: true`,保证 `ip_public` 索引被用。
2. 按地区做扫描任务时,用 `province` / `city` 索引。
3. 大批量按 IP 查用户时,用 (ip, source_col) 复合索引。
---
### 3.2 分布式矩阵IP_已扫描
**作用**:每个文档 = 一个被扫描过的 IP含端口开放情况、SSH 难度、可部署评分、关联用户列表(来自 分布式矩阵IP供协议验证与暴力破解。
**主要字段**
| 字段 | 类型 | 说明 |
|------|------|------|
| ip | string | 扫描目标 IP |
| ssh_open, rdp_open, vnc_open, telnet_open, baota_open | bool | 端口/服务是否开放 |
| ssh_port, ssh_difficulty | number | SSH 端口与难度(15) |
| deploy_score, deploy_ready | number/bool | 可部署评分与是否可部署 |
| os_guess, port_count, user_count | string/number | 系统猜测、端口数、关联用户数 |
| users | array | 该 IP 在 分布式矩阵IP 中的用户记录(供破解匹配) |
| primary_source, source_col | string | 主要来源集合 |
**推荐索引**(与 import_scan_results / enhance_scan_table 一致):
- 单字段ip, ssh_open, rdp_open, ssh_difficulty, deploy_score, deploy_ready, source_col, os_guess, user_count, port_count
- 复合:(ssh_open, ssh_difficulty)、(deploy_ready, deploy_score)、(ssh_open, deploy_score)
**优化建议**
1. 扫描任务优先取 `deploy_ready: true``deploy_score` 高的文档,复合索引 (deploy_ready, deploy_score) 必建。
2. 暴力破解只查 `ssh_open: true`,用 (ssh_open, ssh_difficulty) 排序。
3. 按 IP 去重/查重时用 `ip` 唯一索引(若业务允许多次扫描同一 IP 可不用唯一)。
---
### 3.3 分布式矩阵IP_已验证
**作用**:两阶段协议验证后确认「真实存活」的 IP含 SSH/RDP 等开放状态与质量标签,减少假阳性。
**主要字段**:与「已扫描」类似,增加协议级验证结果(如 connection_quality、is_honeypot 等,以 verified_scan 实际写入为准)。
**推荐索引**ip, ssh_open, deploy_score, is_honeypot, connection_quality, source_col与 verified_scan.py 一致)。
**优化建议**:仅从该集合取「可部署」目标时,对 deploy_score 降序、ssh_open=true 建复合索引。
---
### 3.4 分布式矩阵IP_已登录
**作用**:暴力破解成功 SSH 登录的 IP 及所用凭证,供后续部署与运维分析。
**主要字段**ip, 端口, 所用 username/password、登录时间等以 mongo_smart_brute / enhance_logged_ips 写入为准)。
**优化建议**:按 IP 或按登录时间查询时建 ip、login_time 等索引;若需按成功凭证统计,可对 username 建索引。
---
## 四、源库集合(只读)
以下集合仅被 **extract_ip_users_rfm.py** 读取并汇总进 **KR.分布式矩阵IP**,项目内不直接写。
| 数据库 | 集合 | 作用 | IP 字段 | 文档量级 |
|--------|------|------|---------|----------|
| KR_KR | 木蚂蚁munayi_com | 木蚂蚁论坛用户 | regip, lastip | 11.5 万 |
| KR_KR | 房产网 | 房产网用户 | regip | 11.9 万 |
| KR_卡若私域 | 老坑爹论坛www.lkdie.com 会员 | 老坑爹论坛会员 | regip | 8.9 万 |
| KR_卡若私域 | 老坑爹商店 shop.lkdie.com | 商店用户 | loginIp, createdIp | 662 |
| KR_卡若私域 | 黑科技www.quwanzhi.com 付款邮箱 | 付款邮箱/交易 | ip | 5,108 |
| KR_商城 | 小米 xiaomi_com | 小米用户 | ip | 828 万 |
| KR_国外 | 卡塔卡银行_用户档案 | 银行用户档案 | LAST_LOGIN_IP | 10.6 万 |
| KR_国外 | 卡塔卡银行_审计主表 | 审计日志 | LOGON_IP, REQUEST_IP | 28 |
**源库优化建议**:仅做批量读取时,在对应 IP 字段上建单字段索引可加速提取(若当前无索引可酌情添加)。
---
## 五、索引优化执行
项目已有多处脚本在写入后创建索引;为统一维护,可在本目录使用「索引优化脚本」做一次性补齐与检查:
- 脚本路径:`02_账号密码管理/scripts/ensure_matrix_indexes.py`
- 作用:对 KR 下 4 个集合按上表推荐创建/补齐索引,避免遗漏。
- 执行:`python 02_账号密码管理/scripts/ensure_matrix_indexes.py`(需本机 MongoDB 可连)。
---
## 六、小结
| 库 | 集合数(项目相关) | 一句话 |
|----|--------------------|--------|
| KR | 4 | 主库IP 弹药库 + 已扫描/已验证/已登录,全链路读写。 |
| KR_KR | 2 | 木蚂蚁、房产网用户 IP只读源。 |
| KR_卡若私域 | 3 | 老坑爹论坛/商店、黑科技付款邮箱,只读源。 |
| KR_商城 | 1 | 小米用户 IP只读源。 |
| KR_国外 | 2 | 卡塔卡银行用户与审计 IP只读源。 |
数据流:**源库 8 集合 → KR.分布式矩阵IP → 已扫描 → 已验证 / 已登录**;优化重点在 KR 主库 4 个集合的索引与查询条件。