UnderDogProfessor/ThreatCommand-Local

GitHub: UnderDogProfessor/ThreatCommand-Local

一个本地优先、零遥测的私有网络安全情报指挥中心,集威胁数据管理、检测工程、证据工作区和防御性学习于一体。

Stars: 0 | Forks: 0

# ThreatCommand 本地 ThreatCommand Local 是一个私有的、本地优先的网络安全指挥中心。当前的构建版本包含本地数据库、API、导入、搜索、计划或手动的 connector 控制、学习检测、检测生命周期记录、本地证据/案例工作区、保留和审计视图、带有完整性清单的本地交接导出、备份以及 Next.js 前端。 ## 隐私承诺 - Web 应用、API 和数据库仅绑定到 `127.0.0.1`。 - 不使用任何分析、遥测、托管数据库、注册、计费或远程日志记录。 - 初始默认为手动同步。每个 connector 最初都被禁用,除非本地用户随后启用它。 - 离线模式会阻止所有 connector 请求。 - 启用 connector 需要确认免责声明;手动同步随后会在发出外部请求之前要求进行第二次确认。 - Ollama 被限制为只能使用本地端点(`localhost` 或 `host.docker.internal`),并且没有云端回退。可选的外部 AI 默认处于禁用状态,需要单独的本地 `.env` 配置、产品内的提供商选择以及每次请求的免责声明。 - 本地语义检索需主动启用。只有当用户明确重建本地索引时,经过审查的知识才会被发送到已配置的本地 Ollama embedding 端点;向量将保留在本地 pgvector 数据库中。 ## 启动本地应用 前置条件:Docker Desktop 必须处于运行状态。Ollama 是可选的,除非您要使用本地 AI Copilot。 ``` cd G:\Projects\Threat--Command-Final .\start-local.bat ``` 首次运行将下载 Docker 基础镜像和应用包。这需要互联网连接,可能会花费几分钟时间。它**不会**同步威胁源或传输您的项目数据。 准备就绪后,请打开: - 应用:http://127.0.0.1:3000 - 本地 API 健康状态:http://127.0.0.1:8000/api/health - 本地 OpenAPI 文档:http://127.0.0.1:8000/docs 验证就绪状态: ``` .\health-check.bat ``` 在保留数据库的同时停止服务: ``` .\stop-local.bat ``` ## 准备公开克隆 该项目已准备好提交到 GitHub 仓库,但 ThreatCommand 本身不会创建或更改任何远程仓库。在发布之前,请选择并添加符合您期望他人使用该项目方式的许可证,替换 `SECURITY.md` 中的安全联系人占位符,并确认 `.env` 以及所有 `data/` 文件夹保持未追踪状态。 任何人克隆已发布的仓库后都应该能够运行: ``` git clone cd Threat--Command-Final .\start-local.bat ``` 首次启动时会将 `.env.example` 复制到 `.env`,并将占位符替换为唯一的本地数据库密码。然后,用户需要在浏览器中创建自己的本地访问保护密码。GitHub 工作流会在每次推送和拉取请求时构建容器、运行后端单元测试、检查依赖项、启动本地技术栈,并检查两个 localhost 健康端点。 ## 本地数据和配置 | 位置 | 内容 | | --- | --- | | `data/` | 本地导入、导出、日志和备份文件 | | `data/postgres/` | PostgreSQL 和 pgvector 数据 | | `.env` | 本地数据库、网络模式和可选的 Ollama 设置 | 启动器会在首次运行时在 `.env` 中创建一个唯一的较长数据库密码;请勿提交 `.env`。现有部署必须保持其配置的密码与本地 PostgreSQL 数据卷一致。如果您手动设置密码,请在首次启动前进行。 首次使用时,ThreatCommand 要求提供本地工作区密码,然后才会通过仪表板或 API 公开情报。它仅在本地数据库中存储一个缓慢的加盐验证器,使用最长八小时的 HTTP-only 浏览器会话,并为本地写入请求添加 CSRF 检查。请将密码保存在您的密码管理器中;仪表板无法恢复该密码。 ### 可选:启用本地语义检索 知识库始终支持 PostgreSQL 关键字搜索。要在不使用云端 embedding 服务的情况下添加语义搜索和有根据的 Copilot 引用: 1. 安装一个返回 **768 维**向量的 Ollama embedding 模型(例如,兼容的 `nomic-embed-text` 模型)。 2. 在未追踪的 `.env` 文件中设置 `OLLAMA_EMBEDDING_MODEL=`。 3. 运行 `.\update-local.bat`,或使用 `.\stop-local.bat` 然后运行 `.\start-local.bat` 重启技术栈。 4. 打开**知识库**,选择**重建本地索引**,并输入 `REINDEX` 进行确认。 索引永远不会自动进行。如果 Ollama 不可用,应用会标记回退状态,并改用本地关键字检索。在添加或删除已审查的知识后重建索引,可以保持语义覆盖的准确性。 ## 当前功能 - PostgreSQL + pgvector 数据库,包含版本化的 SQL 迁移和合成种子数据。 - FastAPI 本地 API 和 OpenAPI 参考。 - 本地威胁、漏洞、行动、检测、知识库、connector 和摘要记录。 - 跨威胁、CVE 和知识条目的全文本地搜索。 - 本地文件导入:`.txt`、`.md`、`.csv`、`.json`、`.stix` 和 `.misp`;导入内容会被哈希处理、暂存,并需要本地审查后才能进行索引。 - 对暂存/已批准的导入、原始源内容和交接导出执行显式的本地删除;每个破坏性操作都需要输入其确认词。 - CISA KEV connector 实现,具有来源溯源和请求日志记录。它默认处于禁用状态。 - 五个用户提供的公共 RSS connector,以及 MITRE ATT&CK STIX,均默认禁用。 - 指挥中心专注于本地同步的 KEV、来源报告的新闻、学习检测、本地证据详情以及可选择开启的外部地图。 - 150 个精选的防御性学习模板:本地部署、云端和事件响应各 50 个。 - 可选择开启的本地语义检索:已审查的知识在本地进行分块,仅通过配置的 localhost Ollama 模型进行 embedding,存储在 pgvector 中,由 Copilot 引用,并随其源条目一同删除。PostgreSQL 关键字检索仍然是明确的回退方案。 - 本地 Ollama 状态和受限的 Copilot 检索端点;所有答案仍为草稿分析,需要进行证据审查。 - 检测工作室支持 Sigma、Microsoft Sentinel KQL 和防御性伪代码草稿。Sigma 使用 pySigma 在本地解析,而 KQL 仍作为非执行的结构性建议。 - 本地 Markdown 摘要生成和加密的数据库备份/恢复脚本,在可用时使用 Windows DPAPI,否则使用受密码保护且经过身份验证的加密回退方案。 - 一次非破坏性的备份验证演练,它将数据恢复到隔离的临时数据库中,验证 schema 和关键记录计数,并在不改变实时工作区的情况下移除该临时数据库。 ## 网络和 connector 工作流 1. 当不允许任何网络活动时,请保持启用**离线模式**。 2. 在**手动同步模式**下,查看 Feed 源页面上的源 URL、目标、数据类型和提供商披露信息。 3. 只有在接受披露信息后才启用 connector。 4. 使用**立即同步**并确认确切的外部请求,或者在“设置”中为已启用且支持解析器的源显式启用计划同步。 5. 查看本地请求日志、源健康状况以及添加/更新的记录。 Feed 提供商可以观察到检索其数据的公共 IP 地址。请尊重提供商的条款、许可、速率限制和访问限制。请勿启用您无权使用的源。外部攻击地图在加载时,是一个单独的浏览器直接请求,在离线模式下不可用。 ## 备份和恢复 创建受 Windows 用户保护的本地 PostgreSQL 备份和完整性清单。特意排除了机密信息: ``` .\backup-local.bat ``` 备份保存在 `data\backups` 下。请将加密副本保存在您控制的外部驱动器上。恢复操作具有破坏性,需要明确的确认: ``` .\restore-local.bat data\backups\threatcommand-YYYYMMDD-HHMMSS.dump.dpapi ``` ## 更新 `update-local.bat` 可能会下载更新后的容器镜像和包。在执行此操作之前,它会要求您进行确认。请先查看变更并进行备份。 ## 故障排除 - **Docker Desktop 未就绪:** 打开 Docker Desktop 并等待,直到它报告引擎正在运行。 - **端口 3000、5432 或 8000 被占用:** 停止冲突的本地程序,然后再次运行 `start-local.bat`。 - **API 健康检查失败:** 在此文件夹中运行 `docker compose ps`,然后运行 `docker compose logs api`。 - **Ollama 不可用:** Copilot 保持禁用状态;应用程序的其余部分仍可正常运行。当您准备好时,在本地启动 Ollama,并在 `.env` 中设置已安装的模型名称。 - **完全不需要网络连接:** 在启用任何源之前,请在“设置”中使用“离线模式”。初始演示数据集在离线状态下仍可使用。 有关操作详细信息,请参阅 [ARCHITECTURE.md](ARCHITECTURE.md)、[PRIVACY.md](PRIVACY.md)、[CONNECTORS.md](CONNECTORS.md) 和 [BACKUP-RESTORE.md](BACKUP-RESTORE.md)。
标签:AI风险缓解, Docker, Shodan, 威胁情报, 安全防御评估, 已泄露账号检查, 开发者工具, 本地化部署, 测试用例, 网络安全, 请求拦截, 逆向工具, 防御态势, 隐私保护