crastatelvin/sentinel-ai
GitHub: crastatelvin/sentinel-ai
一个基于AI驱动的实时威胁情报日志分析平台,解决日志关联检测、攻击溯源与响应剧本生成问题。
Stars: 0 | Forks: 0
# 🛡️ SENTINEL AI
### 实时 AI 驱动的威胁情报与日志分析平台
[](https://www.python.org/)
[](https://fastapi.tiangolo.com/)
[](https://react.dev/)
[](https://vitejs.dev/)
[](https://ai.google.dev/)
[](https://www.sqlite.org/)
[](LICENSE)
   
## 📋 目录
- [Overview](#-overview)
- [Features](#-features)
- [Architecture](#-architecture)
- [Tech Stack](#-tech-stack)
- [Threat Detection Engine](#-threat-detection-engine)
- [AI Analysis Pipeline](#-ai-analysis-pipeline)
- [Dashboard Components](#-dashboard-components)
- [Database Models](#-database-models)
- [Project Structure](#-project-structure)
- [Installation](#-installation)
- [Usage](#-usage)
- [WebSocket Live Feed](#-websocket-live-feed)
- [Sample Logs](#-sample-logs)
- [Configuration](#-configuration)
- [Security Notes](#-security-notes)
- [Contributing](#-contributing)
## 🧠 概述
SENTINEL AI 模拟一个实时安全运营中心(SOC),任何开发者或安全研究人员都可以在本地运行。系统摄取原始服务器日志文件并运行多阶段自动化分析流水线:
1. **日志解析** — 通过正则表达式自动检测 Apache、Nginx 和 Auth 日志格式
2. **威胁检测** — 使用正则匹配扫描每条日志条目,检测 7 种威胁模式库
3. **IP 地理定位** — 通过 `ip-api.com` API 并发地理定位所有唯一攻击者 IP
4. **攻击链重建** — 按源 IP 分组威胁并识别升级模式(例如:侦察 → 暴力破解 → RCE)
5. **预测性告警** — 基于检测到的类别组合进行规则驱动的下一次攻击预测
6. **Gemini AI 深度分析** — 生成包含四个部分的结构化安全报告:执行简报、攻击叙事、风险评估,以及包含确切终端命令的 5 步修复剧本
在此流水线中,每一步都会通过 **WebSocket** 将实时状态更新广播到前端,创建真实的 SOC 终端体验。
## 🖥️ 应用预览
   
## ✨ 功能 | Feature | Description | |---|---| | 🔍 **7-Category Threat Detection** | 暴力破解、SQL 注入、XSS、路径遍历、侦察、命令注入、DDoS — 全部通过正则模式匹配实现 | | 🌍 **3D Attack Globe** | `react-globe.gl` 渲染夜间模式地球,地理定位的攻击源点按攻击次数缩放并按严重性着色 | | ⛓ **Attack Chain Analysis** | 为每个 IP 重构多阶段攻击序列 — 识别侦察→暴力破解、暴力破解→RCE 以及多向量 APT 模式 | | 🧠 **Gemini AI Briefing** | 4 部分 AI 报告:执行摘要 · 攻击叙事 · 风险评估 · 修复剧本(含终端命令) | | 🛡️ **Remediation Playbook** | AI 生成的 5 步操作计划,每条命令支持一键复制到剪贴板 | | ◎ **Threat Radar** | Recharts `RadarChart` 同时可视化所有 7 类攻击量 | | ⟳ **Attack Timeline** | Recharts `AreaChart` 显示日志时间窗口内总威胁与关键威胁密度随时间的变化 | | ▶ **Live Terminal Feed** | 滚动终端风格威胁日志,按严重性着色(JetBrains Mono 字体) | | 📡 **WebSocket Status Bar** | 前后端实时推送流水线进度 | | 🔐 **JWT Auth System** | bcrypt 密码哈希 + python-jose JWT 令牌(24 小时过期) | | 🗃️ **SQLite Persistence** | SQLAlchemy ORM 模型用于用户、威胁和分析记录 | | 📊 **Threat Intelligence Table** | 分页表格,包含严重性徽章、置信度进度条、国家和描述 | ## 🏗️ 架构 ``` ┌──────────────────────────────────────────────────────────────┐ │ Browser / React + Vite App │ │ │ │ ┌────────────┐ ┌────────────────────────────────────────┐ │ │ │ UploadPage │ │ DashboardPage │ │ │ │ drag-drop │ │ StatusBar (WebSocket live messages) │ │ │ │ log upload │ │ │ │ │ └─────┬──────┘ │ ThreatCounter │ GlobeMap │ ThreatRadar│ │ │ │ │ TerminalFeed │ TimelineChart │ │ │ │ │ ThreatTable │ │ │ │ │ AIBriefing │ RemediationPanel │ │ │ │ │ AttackChain │ │ │ │ └────────────────────────────────────────┘ │ └────────┼──────────────────────────┬──────────────────────────┘ │ POST /upload │ WebSocket /ws │ GET /threats │ (live pipeline events) │ GET /chains │ │ GET /ai-analysis │ │ GET /map-data │ ┌────────▼──────────────────────────▼───────────────────────────┐ │ FastAPI Backend (main.py) │ │ │ │ ┌─────────────────┐ ┌──────────────────────────────────┐ │ │ │ log_parser.py │ │ threat_detector.py │ │ │ │ Auto-detect: │ │ 7 pattern libs · regex match │ │ │ │ Apache/Nginx/ │ │ Severity scoring · confidence │ │ │ │ Auth/CSV │ └──────────────────────────────────┘ │ │ └─────────────────┘ │ │ │ │ ┌──────────────────────┐ ┌───────────────────────────┐ │ │ │ threat_enricher.py │ │ attack_chain.py │ │ │ │ httpx async geo- │ │ Group by IP · detect │ │ │ │ location · ip-api │ │ escalation patterns │ │ │ └──────────────────────┘ └───────────────────────────┘ │ │ │ │ ┌───────────────────────────────────────────────────────┐ │ │ │ gemini_service.py │ │ │ │ analyze_threats() → 4-section structured report │ │ │ │ predict_next_attack() → rule-based prediction │ │ │ │ parse_ai_response() → structured dict parser │ │ │ └───────────────────────────────────────────────────────┘ │ │ │ │ ┌────────────────┐ ┌──────────────┐ ┌────────────────┐ │ │ │ models.py │ │ auth.py │ │ database.py │ │ │ │ User/Threat/ │ │ JWT · bcrypt│ │ SQLite via │ │ │ │ Analysis ORM │ │ OAuth2 │ │ SQLAlchemy │ │ │ └───────┬────────┘ └──────────────┘ └───────┬────────┘ │ │ └──────────── SQLAlchemy ORM ──────────┘ │ │ sentinel.db │ └────────────────────────────────────────────────────────────── ┘ ``` ## 🛠️ 技术栈 | Layer | Technology | |---|---| | **Frontend** | React 19, Vite 8, Tailwind CSS 4, Framer Motion, Recharts, react-globe.gl, react-markdown, Axios | | **Backend** | FastAPI, Uvicorn, Python 3.11+ | | **AI / LLM** | Google Gemini Flash (`gemini-flash-latest`) via `google-genai` SDK | | **Database** | SQLite via SQLAlchemy ORM | | **Auth** | python-jose (JWT), passlib (bcrypt), OAuth2PasswordBearer | | **Geolocation** | ip-api.com 通过异步 `httpx` | | **Real-time** | WebSocket(FastAPI 原生 + 浏览器 WebSocket API) | | **Log Formats** | Apache 组合日志、Nginx 访问日志、Linux Auth/syslog、CSV | ## 🔬 威胁检测引擎 `threat_detector.py` 对每条解析后的日志条目扫描 7 个威胁类别,每个类别包含多个正则模式。 | Category | Severity | Patterns Detected | |---|---|---| | **Brute Force** | 🔴 Critical | `Failed password`, `authentication failure`, `BREAK-IN ATTEMPT`, `Invalid user` | | **SQL Injection** | 🔴 Critical | `UNION SELECT`, `OR 1=1`, `DROP TABLE`, `sleep()`, `benchmark()` | | **Command Injection** | 🔴 Critical | `;ls`, `\|whoami`, `$(...)`, `/bin/bash`, `netcat` | | **XSS Attack** | 🟠 High | `