GP7846/threat-intelligence-platform
GitHub: GP7846/threat-intelligence-platform
面向金融银行业的自动化威胁情报平台,持续聚合多源 OSINT 数据并基于风险评分通过 iptables 自动执行封禁策略。
Stars: 0 | Forks: 0
# 🛡️ 高级威胁情报平台 (TIP) v2.0
### 金融与银行业网络安全 — 动态策略执行器
一个构建于 Ubuntu Linux 之上的企业级、自动化威胁情报平台。
该系统持续从多个威胁情报源聚合 OSINT,在 MongoDB 中进行标准化和风险评分,并通过 `iptables` 自动执行内核级防火墙策略 —— 无需任何人工干预。
## 架构
```
┌─────────────────────────────────────────────────────────────┐
│ OSINT FEEDS │
│ FeodoTracker │ Abuse.ch SSLBL │ AlienVault OTX │
└───────────────────────┬─────────────────────────────────────┘
│ raw indicators
▼
┌─────────────────────────────────────────────────────────────┐
│ VALIDATION & NORMALISATION │
│ IP/Domain validation │ Deduplication │ Risk Scoring │
└───────────────────────┬─────────────────────────────────────┘
│ clean documents
▼
┌───────────────────────────────────┐
│ MongoDB │
│ indicators collection │
│ • risk_score (0–100) │
│ • is_blocked flag │
│ • multi-source tracking │
└───────────┬──────────┬────────────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────────────────────────────┐
│ Elasticsearch│ │ DYNAMIC POLICY ENFORCER │
│ (Kibana) │ │ Reads high-risk unblocked IPs │
│ optional │ │ → iptables -A INPUT -s -j DROP │
└──────────────┘ │ → Updates DB is_blocked = True │
│ → Discord / Slack alert │
└──────────────────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ FLASK DASHBOARD (port 5000) │
│ Stat cards │ Charts │ Live table │
│ Emergency rollback UI │
└──────────────────────────────────────┘
```
## 技术栈
| 组件 | 技术 | 用途 |
|-----------|-----------|---------|
| 情报源收集 | Python (Requests) | 抓取 OSINT API 和 CSV 数据源 |
| 数据存储 | MongoDB + PyMongo | 具有去重功能的 NoSQL 存储 |
| 风险评分 | 自定义算法 | 多源加权评分 |
| 防火墙执行 | Linux iptables + subprocess | 内核级 IP 封禁 |
| SIEM 同步 | Elasticsearch 8 + Bulk API | 可搜索的威胁全景 |
| 仪表板 | Flask + Chart.js + DataTables | 实时 SOC 可观测性 |
| 告警 | Discord 和 Slack Webhooks | 封禁事件推送通知 |
| 测试 | pytest + unittest | 单元 + 集成 + 冒烟测试 |
## 安装说明
```
# Clone 仓库
git clone https://github.com/YOUR_USERNAME/threat-intelligence-platform.git
cd threat-intelligence-platform
# 创建并激活虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
cp .env.example .env
nano .env # Fill in your API keys and webhook URLs
# 确保 MongoDB 正在运行
sudo systemctl start mongod
# (可选)确保 Elasticsearch 正在运行以进行 ELK sync
sudo systemctl start elasticsearch
```
## 运行平台
### 启动主守护进程(运行 iptables 需要 root 权限)
```
sudo ./venv/bin/python3 main.py
```
守护进程每 **5 分钟** 运行一次完整的 pipeline 周期:
1. 从所有 OSINT 情报源收集数据
2. 验证并对指标进行去重
3. 结合风险评分存储/更新至 MongoDB
4. 自动封禁风险评分 ≥ BLOCK_THRESHOLD 的 IP(默认:70)
5. 同步至 Elasticsearch(如果可用)
### 启动 SOC 仪表板
```
python3 dashboard/app.py
# 自动在 http://localhost:5000 打开
```
### 紧急 IP 回滚(SOC 分析师)
```
# 解封单个 IP
sudo python3 -m enforcer.rollback 185.220.101.45
# 解封所有 TIP-managed 规则(完全回滚)
sudo python3 -m enforcer.rollback --all
```
### API 回滚(通过仪表板 UI)
仪表板内置了一个回滚表单。输入 IP 并点击 **INITIATE ROLLBACK**。
这将使用 `{"ip": "x.x.x.x"}` 调用 `POST /api/rollback`。
## REST API 端点
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| GET | `/` | SOC 主仪表板 |
| GET | `/api/threats` | 所有指标的 JSON 列表 |
| GET | `/api/stats` | 聚合的平台统计数据 |
| GET | `/api/blocked` | 所有当前被封禁的 IP |
| POST | `/api/rollback` | 解封 IP(请求体:`{"ip":"..."}`) |
## 风险评分算法
| 报告来源数量 | 基础分数 |
|-------------------|-----------|
| 1 个来源 | 40 |
| 2 个来源 | 65 |
| 3 个及以上来源 | 85 |
**+10 额外加分**(如果威胁类型匹配):`ransomware`, `apt`, `botnet`, `qakbot`,
`banking-trojan`, `malicious_ssl`, `emotet`, `trickbot`, `cobalt-strike`
**最高分:100**
当评分 ≥ `BLOCK_THRESHOLD`(默认 70,可通过 `.env` 配置)时触发自动封禁。
## 运行测试
```
# 所有测试(unit + integration + smoke)
python3 -m pytest tests/ -v
# 不使用 pytest 快速运行
python3 tests/test_feeds.py
```
测试覆盖范围:
- IP / 域名验证器(单元测试)
- 风险评分算法(单元测试)
- Feodo Tracker 情报源 schema 验证(实时)
- SSL Blacklist 情报源解析(实时)
- 端到端 pipeline 冒烟测试(需要 MongoDB)
## OSINT 情报源
| 情报源 | 类型 | 是否需要 API Key |
|------|------|-----------------|
| [Feodo Tracker](https://feodotracker.abuse.ch) | 僵尸网络 C2 IP (JSON) | 否 |
| [Abuse.ch SSLBL](https://sslbl.abuse.ch) | 恶意 SSL IP (CSV) | 否 |
| [AlienVault OTX](https://otx.alienvault.com) | IP 和域名 (JSON API) | 是(免费) |
## 合规与日志记录
所有操作均记录在 `logs/` 目录中:
| 日志文件 | 内容 |
|----------|----------|
| `system.log` | 主守护进程 pipeline 事件 |
| `feeds.log` | 各情报源的收集结果 |
| `firewall.log` | iptables 封禁 / 回滚审计追踪 |
| `alerts.log` | Discord / Slack webhook 发送记录 |
| `dashboard.log` | 仪表板和 API 访问日志 |
这些日志可作为 PCI-DSS 合规报告的**不可变审计记录**。
## 用户角色
| 角色 | 主要用途 |
|---------|-------------|
| **SOC 分析师** | 监控仪表板,审查威胁表格,发起回滚 |
| **安全工程师** | 审查防火墙日志,调整 BLOCK_THRESHOLD,添加新的情报源 |
| **合规专员** | 导出日志作为 PCI-DSS 审计证据 |
*专为金融与银行业务的自主 SOC 运营而构建。*
标签:ESC4, iptables, MongoDB, OSINT, 威胁情报, 安全规则引擎, 开发者工具, 逆向工具, 防火墙策略