bioonahnuu-design/sentinel-soc-dashboard-nahnu
GitHub: bioonahnuu-design/sentinel-soc-dashboard-nahnu
一个全栈 SOC 监控仪表板,通过分析认证日志、检测可疑登录并管理安全告警,实现简化的 SIEM 工作流。
Stars: 0 | Forks: 0
# Sentinel SOC 仪表板






一个全栈的安全运营中心(SOC)仪表板,用于接入身份验证日志、检测可疑登录活动、管理安全告警以及可视化安全遥测数据。
该项目展示了一个简化的 SIEM 工作流:
**日志 → 检测引擎 → 安全告警 → 分析师调查**
## 仪表板预览

仪表板展示了身份验证活动、登录失败尝试、活跃告警、唯一源 IP、可疑来源以及需要分析师审查的事件。
## 核心功能
- 通过 FastAPI REST API 接入身份验证日志
- 使用 PostgreSQL 存储安全事件和告警
- 基于重复登录失败尝试的暴力破解检测
- 可疑位置登录检测
- 分析师身份验证和会话过期管理
- 登录速率限制
- 支持按源 IP 地址或用户名搜索
- 时间范围过滤
- 按严重程度和状态过滤告警
- 告警确认(认领)工作流
- 包含原始源日志的事件详情弹窗
- 事件报告导出
- 支持 CSV 和 JSON 批量日志导入
- 仪表板指标和事件时间线
- Top 登录失败来源可视化
- 本地 Chart.js 依赖,不依赖 CDN
- 加载状态、重试连接和后端离线警告
- 应用和数据库健康检查
- 基于 Docker 的开发环境
- 自动化的 API 和检测测试
## 架构
```
flowchart TD
A["Authentication Logs"] --> B["FastAPI Ingestion API"]
B --> C["PostgreSQL"]
B --> D["Detection Engine"]
D --> E["Security Alerts"]
C --> F["SOC Dashboard"]
E --> F
```
## 技术栈
| 层级 | 技术栈 |
| ---------------- | ------------------------------- |
| 前端 | HTML, CSS, JavaScript, Chart.js |
| 后端 | Python, FastAPI |
| 数据库 | PostgreSQL |
| ORM | SQLAlchemy |
| 数据验证 | Pydantic |
| 测试 | Pytest |
| 容器化 | Docker 和 Docker Compose |
| API 文档 | OpenAPI 和 Swagger UI |
## 项目结构
```
sentinel-soc-dashboard/
├── app/
│ ├── api.py
│ ├── auth.py
│ ├── config.py
│ ├── database.py
│ ├── detection.py
│ ├── main.py
│ ├── models.py
│ └── schemas.py
├── docs/
│ └── images/
│ └── dashboard-overview.jpeg
├── frontend/
│ ├── vendor/
│ │ └── chart.umd.js
│ ├── app.js
│ ├── index.html
│ ├── login.css
│ ├── login.html
│ ├── login.js
│ └── styles.css
├── samples/
│ ├── security_logs.csv
│ └── security_logs.json
├── scripts/
│ └── generate_demo_logs.py
├── tests/
│ ├── test_api.py
│ └── test_detection.py
├── .env.example
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── README.md
```
## 本地运行
### 前置要求
- Docker Desktop
- Docker Compose
- Git
### 1. 克隆仓库
```
git clone https://github.com/bioonahnuu-design/sentinel-soc-dashboard-nahnu.git
cd sentinel-soc-dashboard-nahnu
```
### 2. 创建环境变量文件
Linux 或 macOS:
```
cp .env.example .env
```
Windows PowerShell:
```
Copy-Item .env.example .env
```
打开 `.env` 并替换所有的 `CHANGE_ME` 和 `REPLACE_WITH...` 占位符。
切勿提交已填写的 `.env` 文件。
### 3. 启动应用
```
docker compose up --build -d
```
检查容器:
```
docker compose ps
```
预期的服务:
```
db Up (healthy)
web Up (healthy)
```
### 4. 打开仪表板
```
http://localhost:8000
```
交互式 API 文档:
```
http://localhost:8000/docs
```
### 5. 生成演示安全事件
```
docker compose exec web python scripts/generate_demo_logs.py
```
刷新仪表板以显示生成的事件和告警。
### 6. 停止应用
```
docker compose down
```
## 健康检查
| Endpoint | 用途 |
| --------------- | ---------------------------------------------------- |
| `/health/live` | 确认应用程序进程正在运行 |
| `/health/ready` | 确认应用程序和数据库已准备就绪 |
| `/docs` | 打开交互式 FastAPI 文档 |
健康的响应示例:
```
{
"status": "alive"
}
```
```
{
"status": "healthy",
"database": "connected"
}
```
## API endpoints
| Method | Endpoint | 用途 |
| ------- | ------------------------------ | ----------------------------------------------- |
| `POST` | `/api/logs` | 接入安全事件并运行检测规则 |
| `POST` | `/api/logs/upload` | 导入 CSV 或 JSON 安全日志 |
| `GET` | `/api/logs` | 获取最近的安全事件 |
| `GET` | `/api/alerts` | 列出并过滤安全告警 |
| `GET` | `/api/alerts/{id}` | 获取事件详情 |
| `GET` | `/api/alerts/{id}/report` | 导出事件报告 |
| `PATCH` | `/api/alerts/{id}/acknowledge` | 确认(认领)事件 |
| `GET` | `/api/stats/overview` | 获取仪表板指标 |
| `GET` | `/api/stats/timeline` | 获取事件时间线 |
| `GET` | `/api/stats/top-ips` | 获取登录失败次数 Top 源 |
受保护的 API endpoints 需要经过身份验证的分析师会话。
## 检测规则
### 暴力破解登录检测
当一个源 IP 在十分钟内产生至少五次登录失败尝试时创建告警。
### 可疑位置登录检测
当成功的登录源自被标记或意外的位置时创建告警。
## 测试
在 Docker 内运行自动化测试:
```
docker compose run --rm \
-e APP_ENV=local \
-e AUTH_SECRET=local-development-secret-change-before-hosting \
-v "./:/app" \
web python -m pytest -q /app/tests
```
预期结果:
```
7 passed
```
测试涵盖:
- 日志接入
- API 响应
- 告警生成
- 检测逻辑
- 身份验证行为
- 生产配置防护
- 数据库支持的操作
## 安全设计
- 基于环境变量的密钥管理
- PBKDF2 密码哈希
- 分析师身份验证
- 会话过期机制
- 登录速率限制
- 暴力破解检测
- 生产配置验证
- 生产环境强制使用安全 Cookie
- 生产环境强制 PostgreSQL SSL
- 数据库就绪情况监控
- 告警确认工作流
- 通过 `.gitignore` 排除密钥
## 生产环境检查清单
部署前:
- 生成新的生产环境密码
- 生成一个长的随机 `AUTH_SECRET`
- 将密钥存储在托管平台的环境变量中
- 设置 `APP_ENV=production`
- 设置 `AUTH_SECURE_COOKIE=true`
- 启用 HTTPS
- 使用带有 `sslmode=require` 的 PostgreSQL 连接
- 切勿在生产环境中使用测试凭据
- 切勿提交 `.env`
## 路线图
- Azure 托管的应用程序和 PostgreSQL 基础设施
- 具有分析师和管理员角色的 JWT 身份验证
- GeoIP 富化
- IP 信誉查询
- 基于 WebSocket 的实时告警推送
- 兼容 Sigma 的检测规则
- 基于 Webhook 的日志收集器
- Alembic 数据库迁移
- 自动化的 GitHub Actions 测试
- Microsoft Sentinel 集成概念
## 免责声明
本项目仅用于网络安全教育、防御性监控和作品集展示。
所有包含的事件和 IP 地址均为合成的、私有的或保留用于文档说明的。未经授权,请勿使用此项目监控系统。
## 作者
**Nahnu Rohmania**
Universitas 17 Agustus 1945 Surabaya 计算机信息工程(Informatics Engineering)专业学生,对网络安全、安全监控、网络、Python 和云安全充满兴趣。
标签:AV绕过, FastAPI, Python, 安全运营, 扫描框架, 无后门, 测试用例, 红队行动, 请求拦截, 逆向工具