176 lines
8.3 KiB
Markdown
176 lines
8.3 KiB
Markdown
|
|
# 分布式算力矩阵 · 本地 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.分布式矩阵IP(871 万 · 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 端口与难度(1–5) |
|
|||
|
|
| 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 个集合的索引与查询条件。
|