softwacar/soc-monitor
GitHub: softwacar/soc-monitor
一个基于Python和Flask的实时安全运营中心仪表板,通过模拟服务器日志和基于规则的威胁检测引擎,为安全培训和演示提供直观的可视化监控体验。
Stars: 0 | Forks: 0
# ⚡ SOC Monitor — 安全运营中心仪表板




SOC Monitor 是一个实时安全运营中心仪表板,可模拟实时威胁检测、攻击监控和事件响应。它生成逼真的服务器日志,使用基于规则的检测规则识别攻击模式,并在全球攻击热力图上可视化威胁态势。
## 🚀 功能特性
- 📡 **实时事件流** — 包含 AUTH_FAIL、AUTH_SUCCESS、PORT_SCAN、SUSPICIOUS_TIME 事件的实时日志流
- 🚨 **威胁检测引擎** — 自动检测暴力破解和端口扫描
- 🌍 **攻击源热力图** — 带有实时攻击源标记和弹窗的世界地图
- 🚫 **手动 IP 封禁** — 直接从仪表板中封禁或加白 IP
- ✓ **告警确认** — 关闭并确认活动告警
- 👤 **高频被攻击用户名** — 最常受攻击用户名的条形图
- 📊 **成功与失败比例** — 认证结果的实时饼图
- 📋 **会话日志** — 所有登录会话和管理员操作的实时日志
- 📈 **事件时间轴** — 随时间变化的事件频率实时图表
- ⬇ **导出 CSV** — 将 IP 报告和告警日志导出为 CSV
- 🔴 **严重告警闪烁** — CRITICAL 告警时全屏红光闪烁
- 🔊 **声音告警** — 针对 CRITICAL 和 HIGH 告警的区分音效
- 🔔 **浏览器通知** — 即使在标签页未激活时也能接收桌面通知
- 🌙 **暗黑 / 白天模式** — 在主题之间切换
- ⛶ **全屏模式** — 专为 SOC 展示屏幕设计
- ⚡ **每 60 秒攻击计数器** — 实时攻击频率计数器
## 📸 屏幕截图
### 仪表板概览 — 严重威胁级别

### IP 威胁追踪器与会话日志

## 🧠 工作原理
```
Background Engine (runs every 0.8–2s)
↓
Log Generator → Simulates realistic server events
↓
Threat Detection Engine
↓
┌─────────────────────────────────┐
│ Brute Force Detection │ 5+ failed logins from same IP
│ Port Scan Detection │ 8+ requests in 30 seconds
│ Suspicious Time Detection │ Login at unusual hours
└─────────────────────────────────┘
↓
REST API → Frontend Dashboard (updates every 2s)
```
## 🗂️ 项目结构
```
soc-monitor/
│
├── app.py # Flask backend, log generator, threat detection engine
│
├── templates/
│ └── index.html # Dashboard UI
│
├── static/
│ ├── style.css # Styling (Light + Dark mode)
│ └── script.js # Frontend logic, charts, map, real-time updates
│
└── README.md
```
## ⚙️ 安装与设置
```
# Clone 仓库
git clone https://github.com/softwacar/soc-monitor.git
cd soc-monitor
# 创建 virtual environment
python -m venv venv
venv\Scripts\activate # Windows
# 安装 dependencies
pip install flask flask-cors
# 运行 application
python app.py
```
在浏览器中打开 `http://127.0.0.1:5000`
## 🔍 威胁检测规则
| 规则 | 条件 | 严重性 |
|------|-----------|----------|
| 暴力破解 | 同一 IP 5 次以上登录失败 | CRITICAL |
| 端口扫描 | 30 秒内 8 次以上连接尝试 | HIGH |
| 可疑时间 | 在 22:00–06:00 之间登录 | HIGH |
| 认证失败 | 单次登录失败尝试 | MEDIUM |
## 🌍 模拟攻击源
| IP | 国家/地区 | 类型 |
|----|---------|------|
| 185.220.101.45 | 🇷🇺 俄罗斯 | 攻击 |
| 103.21.244.0 | 🇨🇳 中国 | 攻击 |
| 45.33.32.156 | 🇺🇸 美国 | 攻击 |
| 91.108.4.0 | 🇩🇪 德国 | 攻击 |
| 89.248.167.0 | 🇺🇦 乌克兰 | 攻击 |
| 198.51.100.0 | 🇳🇱 荷兰 | 正常 |
| 203.0.113.0 | 🇰🇷 韩国 | 正常 |
## 🛡️ API 端点
| 端点 | 方法 | 描述 |
|----------|--------|-------------|
| `/api/logs` | GET | 实时事件日志 |
| `/api/alerts` | GET | 活动安全告警 |
| `/api/stats` | GET | 仪表板统计数据 |
| `/api/ip-summary` | GET | IP 威胁追踪器数据 |
| `/api/heatmap` | GET | 攻击源坐标 |
| `/api/usernames` | GET | 高频被攻击用户名 |
| `/api/session-log` | GET | 会话活动日志 |
| `/api/block` | POST | 封禁 IP 地址 |
| `/api/whitelist` | POST | 将 IP 地址加入白名单 |
| `/api/acknowledge` | POST | 确认告警 |
| `/api/export/csv` | GET | 将 IP 报告导出为 CSV |
| `/api/export/alerts-csv` | GET | 将告警导出为 CSV |
## 🏗️ 技术栈
- **后端:** Python, Flask, Flask-CORS
- **前端:** HTML5, CSS3, 原生 JavaScript
- **地图:** Leaflet.js (OpenStreetMap + CARTO 图块)
- **图表:** 自定义 Canvas API
- **通知:** Web Notifications API
- **音频:** Web Audio API
## 📄 许可证
MIT License — 可自由使用和修改。
标签:AMSI绕过, Flask, IP封堵, Python, SOC大屏, Syscall, Web开发, 免杀技术, 告警管理, 威胁检测, 安全仪表盘, 安全分析与可视化, 安全态势感知, 安全运营中心, 安全运营工具, 插件系统, 攻击模拟, 攻击溯源, 数据可视化, 无后门, 暴力破解检测, 热力图, 端口扫描检测, 网络安全, 网络安全项目, 网络映射, 自定义脚本, 逆向工具, 隐私保护, 驱动签名利用