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, 构建工具, 网络安全, 自定义脚本, 自定义脚本, 规则引擎, 越狱检测, 隐私保护