manishjnv/IntelPulse

GitHub: manishjnv/IntelPulse

一个自托管的企业级威胁情报聚合与分析平台,整合多源外部情报数据并提供AI增强的IOC检索与分析能力。

Stars: 0 | Forks: 0

# IntelPulse — TI 平台 一个生产级、自托管的威胁情报聚合与分析平台,基于 **FastAPI**、**Next.js 14**、**PostgreSQL/TimescaleDB**、**OpenSearch** 和 **Redis** 构建。 ![Stack](https://img.shields.io/badge/FastAPI-009688?style=flat&logo=fastapi&logoColor=white) ![Stack](https://img.shields.io/badge/Next.js_14-000000?style=flat&logo=next.js&logoColor=white) ![Stack](https://img.shields.io/badge/PostgreSQL-4169E1?style=flat&logo=postgresql&logoColor=white) ![Stack](https://img.shields.io/badge/TimescaleDB-FDB515?style=flat&logo=timescale&logoColor=black) ![Stack](https://img.shields.io/badge/OpenSearch-005EB8?style=flat&logo=opensearch&logoColor=white) ![Stack](https://img.shields.io/badge/Redis-DC382D?style=flat&logo=redis&logoColor=white) ![Stack](https://img.shields.io/badge/Docker-2496ED?style=flat&logo=docker&logoColor=white) ## 目录 - [架构](#architecture) - [页面与功能](#pages--features) - [快速开始](#quick-start) - [环境变量](#environment-variables) - [API 参考](#api-reference) - [登录与认证](#-login--authentication) - [文档索引](#-documentation-index) ## 架构 **7 个 Docker 服务:** UI、API、Worker、Scheduler、PostgreSQL+TimescaleDB、Redis、OpenSearch | 服务 | 技术 | 端口 | |---------|------|------| | Frontend | Next.js 14, TypeScript, Tailwind CSS, Recharts, Zustand | 3000 | | Backend API | FastAPI, async SQLAlchemy, Pydantic v2 | 8000 | | Database | PostgreSQL 16 + TimescaleDB | 5432 | | Search | OpenSearch 2.x | 9200 | | Cache/Queue | Redis 7 | 6379 | | Worker | Python RQ (Redis Queue) | — | | Scheduler | Python APScheduler | — | ## 页面与功能 | 页面 | 路由 | 描述 | |------|-------|-------------| | **Login** | `/login` | IntelPulse 品牌登录页 — SSO 重定向或开发者绕过 | | **Dashboard** | `/dashboard` | KPI 统计卡片、威胁等级条、严重性/类别环形图、首要风险表、Feed 状态 | | **Threat Feed** | `/threats` | 严重性过滤标签、按风险排序的威胁列表、资产类型细分 | | **Cyber News** | `/news` | 结构化情报网络新闻源 — 类别小部件、AI 增强、相关性评分 | | **Intel Items** | `/intel` | 带过滤器的分页情报浏览器,详情下钻 | | **IOC Search** | `/search` | 全文 IOC 搜索,含类型/严重性/日期过滤器,实时互联网查询(12+ 源),结构化 AI 分析 | | **IOC Database** | `/iocs` | 浏览所有 IOC,含类型过滤标签、复制到剪贴板、类型分布环形图 | | **Analytics** | `/analytics` | 严重性条形图、类别环形图、地理/行业排名、来源可靠性 | | **Geo View** | `/geo` | 地理威胁分布、区域下钻、特定区域威胁列表 | | **Feed Status** | `/feeds` | Feed 健康监控,含状态徽章、错误显示、条目计数 | | **Settings** | `/settings` | 通用、安全、通知、外观、数据与存储、API Keys、平台设置 | **共享组件:** AuthGuard, StatCard, ThreatLevelBar, StructuredIntelCards (统一情报显示), DonutChart, TrendLineChart, HorizontalBarChart, RankedDataList, FeedStatusPanel, Sidebar (4 区导航), Header bar (搜索、通知、用户菜单)。 ## 快速开始 ### 前置条件 - **Docker Desktop** (包含 Docker Compose v2) - *(可选)* Python 3.12, Node.js 20 用于在 Docker 外部运行 ### 1. 克隆与配置 ``` git clone https://github.com/manishjnv/IntelPulse.git cd IntelPulse cp .env.example .env # 编辑 .env — 设置 GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, SECRET_KEY ``` ### 2. 启动所有服务 ``` # Production mode docker compose up -d --build # Development mode (hot reload — 推荐用于本地开发) docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build ``` ### 3. 验证 ``` curl -s http://localhost:8000/api/v1/health | jq . # 预期: {"status":"ok","postgres":true,"redis":true,"opensearch":true} open http://localhost:3000 # UI — redirects to login ``` ## 环境变量 | 变量 | 必填 | 描述 | |----------|----------|-------------| | `ENVIRONMENT` | No | `development` 或 `production` (默认: `development`) | | `SECRET_KEY` | **Yes** | 应用密钥 — 使用 `openssl rand -hex 32` | | `LOG_LEVEL` | No | `DEBUG`, `INFO`, `WARNING`, `ERROR` (默认: `INFO`) | | `DOMAIN` | Prod | 基础域名 (默认: `localhost`) | | `DOMAIN_UI` | Prod | UI URL (默认: `http://localhost:3000`) | | `DOMAIN_API` | Prod | API URL (默认: `http://localhost:8000`) | | `POSTGRES_HOST` | Yes | 数据库主机 (默认: `postgres`) | | `POSTGRES_PORT` | Yes | 数据库端口 (默认: `5432`) | | `POSTGRES_DB` | Yes | 数据库名称 (默认: `ti_platform`) | | `POSTGRES_USER` | Yes | 数据库用户 | | `POSTGRES_PASSWORD` | **Yes** | 数据库密码 — **生产环境中请修改** | | `REDIS_URL` | Yes | Redis 连接 (默认: `redis://redis:6379/0`) | | `OPENSEARCH_URL` | Yes | OpenSearch 端点 | | `GOOGLE_CLIENT_ID` | **Yes** | Google OAuth 2.0 Client ID | | `GOOGLE_CLIENT_SECRET` | **Yes** | Google OAuth 2.0 Client Secret | | `JWT_EXPIRE_MINUTES` | No | 会话时长(分钟) (默认: `480`) | | `SMTP_HOST` | OTP | SMTP 服务器主机 (例如 `smtp.gmail.com`) | | `SMTP_PORT` | OTP | SMTP 端口 (默认: `587`) | | `SMTP_USER` | OTP | SMTP 用户名 | | `SMTP_PASSWORD` | OTP | SMTP 密码 | | `SMTP_FROM_EMAIL` | OTP | 发件人邮箱 (默认: `noreply@IntelPulse.in`) | | `EMAIL_OTP_ENABLED` | No | 启用邮箱 OTP 登录 (默认: `false`) | | `NVD_API_KEY` | No | NVD API key (更高速率限制) | | `ABUSEIPDB_API_KEY` | No | AbuseIPDB API key (该 Feed 必需) | | `OTX_API_KEY` | No | AlienVault OTX API key | | `VIRUSTOTAL_API_KEY` | No | VirusTotal API key (免费版) | | `SHODAN_API_KEY` | No | Shodan API key (免费开发者版) | | `AI_API_URL` | No | AI 摘要端点 | | `AI_API_KEY` | No | AI API key | | `AI_MODEL` | No | AI 模型名称 (默认: `llama3`) | | `NEXT_PUBLIC_API_URL` | Yes | 前端 API URL (默认: `http://localhost:8000`) | ## API 参考 Base URL: `http://localhost:8000/api/v1` | 方法 | 端点 | 认证 | 描述 | |--------|----------|------|-------------| | `GET` | `/health` | No | 服务健康检查 | | `GET` | `/auth/config` | No | 认证方式配置 | | `GET` | `/auth/google/url` | No | 获取 Google OAuth 重定向 URL | | `GET` | `/auth/google/callback` | No | Google OAuth 回调 (从 Google 重定向) | | `POST` | `/auth/otp/send` | No | 发送邮箱 OTP 验证码 | | `POST` | `/auth/otp/verify` | No | 验证 OTP 并创建会话 | | `POST` | `/auth/logout` | No | 登出 — 撤销会话 | | `GET` | `/auth/session` | Cookie | 检查会话有效性,返回用户信息 | | `GET` | `/me` | Session | 当前用户信息 | | `GET` | `/dashboard` | Viewer | 仪表盘统计、严重性分布、首要风险 | | `GET` | `/intel` | Viewer | 带过滤器的分页情报条目 | | `GET` | `/intel/{id}` | Viewer | 单个情报条目详情 | | `GET` | `/search` | Viewer | 全文 IOC 搜索 | | `GET` | `/feeds/status` | Viewer | Feed 连接器状态 | | `POST` | `/feeds/{name}/trigger` | Admin | 触发手动 Feed 获取 | | `POST` | `/feeds/trigger-all` | Admin | 触发所有 Feed 获取 | | `GET` | `/setup/config` | Admin | 平台域名与部署配置 | | `GET` | `/setup/status` | Admin | 平台设置检查清单 | 所有列表端点均支持 `page`、`page_size`、`severity`、`feed_type`、`date_from`、`date_to` 查询参数。 ## 🔐 登录与认证 | 模式 | 时机 | 方式 | |------|------|-----| | **Google OAuth** | 设置了 `GOOGLE_CLIENT_ID` + `GOOGLE_CLIENT_SECRET` | 点击“Sign in with Google” → Google 同意授权 → 重定向回调 → 创建会话 | | **Email OTP** | `EMAIL_OTP_ENABLED=true` + 已配置 SMTP | 输入邮箱 → 接收 6 位验证码 → 验证 → 创建会话 | ``` Browser → /login → GET /api/v1/auth/config → determine available auth methods ├── Google: GET /auth/google/url → redirect to Google → callback → set cookie → /dashboard └── OTP: POST /auth/otp/send → enter code → POST /auth/otp/verify → set cookie → /dashboard Protected routes: AuthGuard → GET /auth/session → valid? → render : redirect /login Logout: POST /auth/logout → revoke Redis session → clear cookie → /login ``` - **Cookie:** `iw_session` — HttpOnly, Secure, SameSite=Lax, 8 小时 TTL - **Session store:** Redis (服务端可撤销) - **Reverse proxy:** Caddy (通过 Let's Encrypt 自动 HTTPS) - **Protected routes:** 所有 `(app)/*` 页面均封装在 `AuthGuard` 中 ## 📚 文档索引 所有详细文档位于 `docs/`。每份都是随平台演进而更新的**活文档**。 | 文档 | 描述 | |----------|-------------| | [README.md](README.md) | 项目概览、快速开始、API 参考(本文件) | | [docs/Instruction.md](docs/Instruction.md) | **必读** 工程与开发标准 | | [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | 系统架构、服务拓扑、数据模型、安全层 | | [docs/TECHNOLOGY.md](docs/TECHNOLOGY.md) | 完整技术栈、库选择理由、版本矩阵 | | [docs/INTEGRATION.md](docs/INTEGRATION.md) | Feed 与集成要求 — 所有计划的数据源 | | [docs/WORKFLOW.md](docs/WORKFLOW.md) | 运维指南 — 本地开发、部署、CI/CD、Caddy | | [docs/ROADMAP.md](docs/ROADMAP.md) | 多阶段功能路线图与进度跟踪 | ## 许可证 私有 — 保留所有权利。
标签:AV绕过, AWS Bedrock, Docker, Docker Compose, FastAPI, HTTP/HTTPS抓包, masscan, Next.js 14, nuclei, Open Source, PostgreSQL, Pydantic, Python, Recharts, Redis, SQLAlchemy, Tailwind CSS, TimescaleDB, TIP, TypeScript, Zustand, 企业级安全, 全文搜索, 威胁分析, 威胁情报平台, 安全插件, 安全运营, 安全防御评估, 异步任务队列, 态势感知, 情报聚合, 扫描框架, 搜索引擎查询, 无后门, 测试用例, 网络安全, 自动化侦查工具, 自动化攻击, 自托管, 请求拦截, 逆向工具, 隐私保护