Adi820-cyber/SentinelAI
GitHub: Adi820-cyber/SentinelAI
企业级 AI 驱动防火墙,用于实时检测和分类 LLM Prompt 注入、越狱尝试等对抗性攻击,支持本地 AI 模型与多通道告警。
Stars: 0 | Forks: 0
# SentinelAI v2.0 — AI 驱动的 Prompt 防火墙
企业级实时防火墙,用于对 LLM Prompt 进行分类,检测越狱尝试、Prompt 注入、数据泄露以及 20 多种对抗性攻击类别。结合了 188 模式规则引擎与 AI 分类、结构化日志、多通道告警、身份验证/RBAC 和 SIEM 集成。
## 架构
```
sentinelai/
├── backend/
│ ├── core/ # Core engine modules
│ │ ├── logger.js # Structured JSON logging, daily rotation
│ │ ├── detectionPipeline.js # Modular detection orchestrator
│ │ ├── alertManager.js # Multi-channel alerting (Slack, email, SIEM)
│ │ ├── featureExtractor.js # Statistical feature extraction (19 features)
│ │ └── scoring.js # Composite threat scoring & anomaly detection
│ ├── middleware/
│ │ ├── auth.js # API key + session auth, RBAC (3 roles)
│ │ └── inputValidator.js # Input validation & sanitization
│ ├── routes/
│ │ ├── analyze.js # POST /api/analyze — main classification
│ │ ├── history.js # GET /api/history — paginated scan log
│ │ ├── stats.js # GET /api/stats — aggregate statistics
│ │ ├── threatIntel.js # GET /api/threat-intel/* — pattern database
│ │ ├── auth.js # POST /api/auth/login, logout, me, status
│ │ └── alerts.js # GET /api/alerts — alert history & stats
│ ├── lib/
│ │ └── preAnalyzer.js # 188-pattern rule engine (20 categories)
│ ├── db/
│ │ └── database.js # JSON file store with atomic writes
│ ├── tests/
│ │ ├── test_detection.js # 53 detection & scoring tests
│ │ └── test_data_pipeline.js# 34 database, alerting & logging tests
│ ├── logs/ # Auto-created: daily logs + SIEM exports
│ └── server.js # Express app with security middleware
├── frontend/
│ └── src/
│ ├── components/
│ │ ├── Dashboard.jsx # Tab container
│ │ ├── PromptAnalyzer.jsx # Prompt input + result display
│ │ ├── ThreatHistory.jsx # Paginated scan history
│ │ ├── StatisticsPanel.jsx # Pie + bar charts
│ │ ├── ThreatIntelPanel.jsx# Threat intelligence browser
│ │ └── SeverityBadge.jsx # Risk level badges
│ └── api.js # API client (auto-detects local/deployed)
├── .env.example # Full configuration reference
├── vercel.json # Vercel deployment config
└── render.yaml # Render deployment config
```
## 快速开始
### 前置条件
- **Node.js 18+** — [nodejs.org](https://nodejs.org)
- **Ollama** — [ollama.com](https://ollama.com) (用于本地模式)
```
# 拉取 AI 模型(一次性下载约 2 GB)
ollama pull llama3.2
ollama serve
```
### 安装与运行
```
npm install
cd backend && npm install && cd ..
cd frontend && npm install && cd ..
# 启动 backend (:5000) + frontend (:5173)
npm run dev
```
打开 **http://localhost:5173**。
## 功能特性
### 检测引擎
- **188 个正则表达式模式**,覆盖 20 个攻击类别(越狱、Prompt 注入、Prompt 泄露、代码执行、数据泄露、社会工程学、SQL 注入、XSS、编码/混淆等)
- **AI 分类** 通过 Ollama (本地) 或 Groq (云端) — 4 级分类:Safe (安全) / Suspicious (可疑) / Injection (注入) / Jailbreak (越狱)
- **混合评分** — 60% 规则引擎 + 40% AI 置信度,当规则检测到 AI 遗漏的威胁时自动升级
- **特征提取** — 19 个统计特征(香农熵、字符比例、重复评分、祈使动词等)
- **异常检测** — 针对异常输入的基线偏差评分
### 安全与运维
- **身份验证** — API Key 和基于会话的身份验证(默认禁用以用于开发)
- **RBAC** — 3 种角色:admin、analyst、viewer,具有细粒度权限
- **速率限制** — analyze 端点 20 请求/分钟,read 端点 60 请求/分钟
- **输入验证** — Prompt 长度限制、类型检查、原型污染防护
- **安全标头** — X-Content-Type-Options、X-Frame-Options、CSP 相关键
- **结构化日志** — JSON 格式,每日轮换,可配置日志级别
- **多通道告警** — Slack/Discord/Teams Webhooks、电子邮件 (SMTP)、SIEM (CEF + JSON)
### 前端
- **Prompt 分析器** — 实时分类,显示威胁评分、风险等级、匹配模式
- **威胁历史** — 分页扫描日志,带严重性徽章
- **统计仪表板** — 饼图 + 条形图 (Recharts)
- **威胁情报面板** — 按类别和严重性浏览所有 188 个模式
- **暗色玻璃拟态 UI** — 现代美学与响应式设计
## API 参考
| Method | Endpoint | Auth | Description |
|--------|----------|------|-------------|
| GET | `/api/health` | No | 健康检查 (版本, 认证状态) |
| POST | `/api/analyze` | Yes* | 分类 Prompt `{ "prompt": "..." }` |
| GET | `/api/history?page=1&limit=20` | Yes* | 分页扫描历史 |
| GET | `/api/stats` | Yes* | 聚合分类统计 |
| GET | `/api/threat-intel/summary` | Yes* | 威胁模式数据库摘要 |
| GET | `/api/threat-intel/category/:name` | Yes* | 按类别列出模式 |
| POST | `/api/auth/login` | No | `{ "username", "password" }` → token |
| POST | `/api/auth/logout` | Yes | 使会话失效 |
| GET | `/api/auth/me` | Yes | 当前用户信息 |
| GET | `/api/auth/status` | No | 认证启用/禁用状态 |
| GET | `/api/alerts` | Yes | 告警历史 (admin/analyst) |
| GET | `/api/alerts/stats` | Yes | 按严重性统计的告警 |
| GET | `/api/alerts/config` | Yes | 告警配置 (admin) |
\* 仅当 `AUTH_ENABLED=true` 时需要认证。默认:禁用。
## 运行测试
```
cd backend
# 运行所有测试(共 87 个)
npm test
# 单独运行
npm run test:detection # 53 tests — patterns, scoring, pipeline
npm run test:pipeline # 34 tests — database, alerts, logging
```
## 配置
所有选项均通过环境变量设置。有关完整参考,请参见 `.env.example`。
### AI 提供商 (选择其一)
| Variable | Default | Description |
|----------|---------|-------------|
| `OLLAMA_MODEL` | `llama3.2` | 本地 Ollama 模型名称 |
| `OLLAMA_HOST` | `http://localhost:11434` | Ollama 服务器 URL |
| `GROQ_API_KEY` | — | Groq 云端 API Key (覆盖 Ollama) |
| `GROQ_MODEL` | `llama-3.1-8b-instant` | Groq 模型名称 |
| `AI_TIMEOUT_MS` | `30000` | AI 请求超时时间 |
### 身份验证
| Variable | Default | Description |
|----------|---------|-------------|
| `AUTH_ENABLED` | `false` | 启用身份验证 |
| `AUTH_ADMIN_USER` | `admin` | 管理员用户名 |
| `AUTH_ADMIN_PASS` | — | 管理员密码 (启用认证时必填) |
| `AUTH_API_KEYS` | — | API Keys: `key1:role,key2:role` |
| `AUTH_USERS` | — | 额外用户: `user:pass:role,...` |
| `AUTH_SESSION_SECRET` | 自动生成 | 会话令牌密钥 |
### 告警
| Variable | Default | Description |
|----------|---------|-------------|
| `ALERT_MIN_SEVERITY` | `High` | 触发告警的最低严重级别 |
| `ALERT_WEBHOOK_URL` | — | Slack/Discord/Teams Webhook URL |
| `ALERT_EMAIL_ENABLED` | `false` | 启用邮件告警 |
| `ALERT_EMAIL_HOST` | — | SMTP 主机 |
| `ALERT_EMAIL_PORT` | `587` | SMTP 端口 |
| `ALERT_EMAIL_USER` | — | SMTP 用户名 |
| `ALERT_EMAIL_PASS` | — | SMTP 密码 |
| `ALERT_EMAIL_TO` | — | 收件人邮箱 |
| `ALERT_SIEM_ENABLED` | `false` | 启用 SIEM CEF/JSON 导出 |
### 通用
| Variable | Default | Description |
|----------|---------|-------------|
| `PORT` | `5000` | 后端服务器端口 |
| `LOG_LEVEL` | `INFO` | 日志级别: ERROR, WARN, INFO, DEBUG |
| `NODE_ENV` | `development` | 环境 (production 会隐藏错误详情) |
| `FRONTEND_URL` | — | 允许的 CORS 来源 (逗号分隔) |
## 技术栈
| Layer | Technology |
|-------|-----------|
| Backend | Node.js + Express |
| AI Engine | Ollama (本地) 或 Groq (云端) |
| Detection | 188 模式规则引擎 + AI 分类 |
| Storage | JSON 文件存储 (原子写入) |
| Auth | API Keys + 会话令牌, RBAC |
| Alerting | Webhooks, SMTP 邮件, SIEM (CEF + JSON) |
| Logging | 结构化 JSON, 每日轮换 |
| Frontend | React 18 + Vite 5 |
| Charts | Recharts |
| Styling | 暗色玻璃拟态 CSS |
| Testing | 自定义测试运行器 (87 个测试) |
| Dev | concurrently + nodemon |
| Deployment | Vercel (前端) + Render (后端) |
标签:AI安全, AI风险缓解, API安全, Chat Copilot, CISA项目, Homebrew安装, JSON输出, LLM评估, LLM防火墙, MITM代理, Ollama, RBAC, SIEM集成, 云计算, 企业级安全, 大模型安全, 威胁情报, 子域枚举, 实时威胁分类, 对抗攻击防御, 开发者工具, 异常检测, 本地AI, 构建工具, 网络安全, 自定义脚本, 自定义脚本, 规则引擎, 越狱检测, 隐私保护