bioonahnuu-design/sentinel-soc-dashboard-nahnu

GitHub: bioonahnuu-design/sentinel-soc-dashboard-nahnu

一个全栈 SOC 监控仪表板,通过分析认证日志、检测可疑登录并管理安全告警,实现简化的 SIEM 工作流。

Stars: 0 | Forks: 0

# Sentinel SOC 仪表板 ![Python](https://img.shields.io/badge/Python-3.12-3776AB?logo=python&logoColor=white) ![FastAPI](https://img.shields.io/badge/FastAPI-Backend-009688?logo=fastapi&logoColor=white) ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-Database-4169E1?logo=postgresql&logoColor=white) ![Docker](https://img.shields.io/badge/Docker-Containerized-2496ED?logo=docker&logoColor=white) ![Tests](https://img.shields.io/badge/Tests-7%20Passed-22C55E) ![Status](https://img.shields.io/badge/Status-Active-22C55E) 一个全栈的安全运营中心(SOC)仪表板,用于接入身份验证日志、检测可疑登录活动、管理安全告警以及可视化安全遥测数据。 该项目展示了一个简化的 SIEM 工作流: **日志 → 检测引擎 → 安全告警 → 分析师调查** ## 仪表板预览 ![Sentinel SOC Dashboard threat overview](https://static.pigsec.cn/wp-content/uploads/repos/cas/65/65ab94360af6a6a4e2cba7066f0593d62d0515ac9ff06040c982b85ad74a0955.jpg) 仪表板展示了身份验证活动、登录失败尝试、活跃告警、唯一源 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, 安全运营, 扫描框架, 无后门, 测试用例, 红队行动, 请求拦截, 逆向工具