prasannashrestha24/soc-threat-detection-system
GitHub: prasannashrestha24/soc-threat-detection-system
基于 Python/Django 构建的 SOC 威胁检测系统,通过解析多种安全日志并运行检测规则,在仪表盘上实时展示和管理安全告警。
Stars: 0 | Forks: 0
# 🛡 SOC 威胁检测系统
一个基于 Python/Django 的安全日志监控系统,用于摄取、解析和分析 auth、firewall 及 web server 日志,以检测可疑活动并生成安全警报。
本项目作为作品集构建,旨在展示核心 SOC/SIEM 概念。
## 仪表盘截图

## 功能
- **日志摄取** — 解析 Linux auth 日志、firewall 日志以及 Apache/Nginx web 日志
- **检测规则引擎** — 包含 4 条涵盖真实攻击模式的规则:
- 暴力破解攻击检测(SSH 登录失败)
- 非工作时间登录检测
- 端口扫描检测
- 撞库攻击检测
- **安全仪表盘** — 带有严重程度分类的实时告警展示
- **告警管理** — Open/investigating/resolved/false positive 状态跟踪
- **分析师备注** — 记录针对每个告警的事件响应操作
- **告警过滤** — 按严重程度、状态和规则类型进行过滤
- **统计图表** — 用于严重程度、规则和状态细分可视化的柱状图和环形图
- **CSV 导出** — 使用自动生成的时间戳文件名下载所有告警
- **逼真的日志生成器** — 模拟 4000+ 条包含真实攻击场景日志行的 Python 脚本
## 技术栈
- Python 3, Django, SQLite
- Chart.js(统计可视化)
- 自定义日志解析器(基于 regex)
- 用于日志摄取的 Django management commands
- HTML/CSS 仪表盘(暗色 SOC 主题)
## 快速开始
```
git clone https://github.com/prasannashrestha24/soc-threat-detection-system
cd soc-threat-detection-system
pip install django
python manage.py migrate
python generate_logs.py
python manage.py ingest_logs sample_logs/generated_auth.log
python manage.py ingest_logs sample_logs/generated_firewall.log
python manage.py ingest_logs sample_logs/generated_web.log
python manage.py runserver
```
访问 http://127.0.0.1:8000 查看仪表盘。
## 检测规则
| 规则 | 触发条件 | 严重程度 |
|------|---------|----------|
| 暴力破解 | 同一 IP 在 5 分钟内出现 5 次以上登录失败 | Critical |
| 非工作时间登录 | 在 08:00–18:00 之外成功登录 | Medium |
| 端口扫描 | 同一 IP 在 2 分钟内有 10 次以上被阻止的连接 | High |
| 撞库 | 同一用户名在 1 小时内在 3 个以上 IP 登录失败 | High |
## 项目结构
```
soc-threat-detection-system/
├── logs/
│ ├── models.py # LogEntry model
│ ├── parsers.py # Auth/firewall/web log parsers
│ └── management/commands/ingest_logs.py
├── alerts/
│ ├── models.py # Alert model
│ ├── rules.py # Detection rules engine
│ └── views.py # Dashboard + all views
├── templates/dashboard/ # Dashboard UI with Chart.js
├── sample_logs/ # Test log files
└── generate_logs.py # Realistic log generator script
```
## 开发日志
### 第 1-2 周 — 项目搭建与初始部署
构建了核心 Django 项目结构,包含两个应用 — `logs` 用于摄取和解析安全日志文件,`alerts` 用于存储和显示安全告警。使用 regex 实现自定义日志解析器,处理三种日志格式:Linux auth 日志、firewall 日志和 Apache/Nginx web server 日志。创建了四条自动化检测规则,涵盖暴力破解攻击、端口扫描、撞库和非工作时间登录。构建了一个暗色主题的 SOC 仪表盘,用于展示带有严重程度分类的实时告警。
### 第 3-4 周 — 告警管理与报告
在 SOC 仪表盘中添加了分析师工作流。安全告警现在可以通过四个阶段进行状态更新 — Open、Investigating、Resolved 和 False Positive — 映射真实的 SOC 分流流程。添加了一键 CSV 导出功能,可使用自动生成的时间戳文件名下载所有当前告警,从而实现事件报告和审计跟踪记录。
### 第 5-6 周 — 逼真的数据集与日志生成器
构建了一个 Python 日志生成器脚本(`generate_logs.py`),用于模拟逼真的安全攻击场景。该脚本可生成跨越三种日志类型的 4000+ 条日志行。模拟了五种攻击场景:SSH 暴力破解攻击、来自多个 IP 的撞库、非工作时间登录、端口扫描侦察以及 Web 应用程序探测。其中混入了 60-75% 的正常合法流量,以使数据集更加逼真。
### 第 7-8 周 — 优化与作品集准备
在 README 中添加了仪表盘截图。使用规范的 `.gitignore` 清理了代码库。项目已完全准备好作为作品集展示,具有清晰的提交记录和详尽的文档。
### 扩展功能 — 分析师工具与可视化
添加了三项额外功能:用于记录每个告警事件响应操作的分析师备注、按严重程度/状态/规则类型进行告警过滤,以及使用 Chart.js 实现的统计图表(严重程度柱状图、规则柱状图、状态环形图)。
## 作者
Prasanna Shrestha — ICT 安全专家候选人 | CIHE 堪培拉
GitHub: github.com/prasannashrestha24
标签:Django, Python, 安全告警, 插件系统, 无后门, 调试辅助