d3vhex/Sentora

GitHub: d3vhex/Sentora

Sentora 是一款开源自托管 AI 驱动的 SIEM/EDR/SOAR 一体化安全运营平台,帮助无专门 SOC 的中小型团队以单命令部署实现端点遥测收集、本地 LLM 威胁分析、日志检索与自动化响应。

Stars: 4 | Forks: 0

# Sentora 社区版 [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/) [![Built with Sanic](https://img.shields.io/badge/built%20with-Sanic-FF7600)](https://sanic.dev/) 适用于没有专门 SOC 的中小型团队的自托管安全防护体系。在每个端点上投放一个 agent,将它们指向服务器,您就可以获得 SIEM 日志、文件完整性、软件包漏洞、由 OpenSearch 驱动的日志浏览器、自主 AI 分类以及 SOAR playbook 引擎,所有这些只需一个 `docker compose up` 即可完成。 “AI”部分是在本地运行的 Ollama 模型(默认为 `llama3.2:3b`)。日志永远不会离开设备;没有 OpenAI 密钥,没有 Anthropic 密钥,也没有任何回传通信。如果您想要一个更智能的模型并且有足够的内存,可以在 `.env` 中替换它。 ![Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/cas/8a/8a24dc3ff2ef3f7bcab45abb3c10714705296435ce66341e7928afa42a6bae96.jpg) ## 它的实际功能 - **收集遥测数据**,通过单个 TCP 通道从 Windows 和 Linux agent 获取。包括 SIEM 事件、警报、FIM、软件包、网络连接、开放端口、Docker 活动、屏幕帧。 - **使用本地 LLM 对每个事件进行分类。** 三个 worker 并行运行:一个实时监控每个传入事件,一个执行由操作员驱动的深度扫描,还有一个决定是否采取防御行动(`BLOCK_IP`、`ISOLATE_HOST`、`KILL_PROCESS` 等)。 - **防御性 worker 的影子模式。** 开启 `AI_SHADOW_MODE=1` 后,每个自主判定都会被暂存在 SOAR Hub 中等待人工批准,而不会直接派发执行。这在让模型自主行动之前,根据真实流量对其进行调优非常有用。 - **将所有内容索引到 OpenSearch 中**,这样您就可以从一个地方使用模糊/精确/匹配开头等查询方式来检索您的节点群。 - **运行 SOAR playbook**,这些 playbook 在一个小型可视化编辑器中构建,具有多步骤、单节点结果跟踪功能,可由人工或 AI 判定触发。 - **漏洞扫描**,针对 OSV(在线或通过内部镜像)扫描每个 agent 上已安装的软件包。 - **内置远程桌面**,通过 WebSocket JPEG 流实现,端点上无需单独安装 VNC。 ## 界面展示 侧边栏将所有内容分为三个部分:遥测(仪表板、agent、警报、资产、FIM、日志、AI)、自动化响应(防御行动、playbook、自动化规则)以及管理。

Sidebar navigation

### 单个 Agent 视图 每个注册的 agent 都有自己的页面,包含十二个标签页。概览页面显示了实时资源使用量表、最近的 SIEM 日志、agent 元数据和威胁摘要: ![Agent overview](https://static.pigsec.cn/wp-content/uploads/repos/cas/e6/e607b2fe4fa487e06159bd0746492b7df20009437b96582a95fef25cc2405c21.jpg) 警报是指 agent 自身关联规则已标记的所有内容。按严重程度着色,支持过滤和搜索: ![Agent alerts](https://static.pigsec.cn/wp-content/uploads/repos/cas/6f/6f3d767ce1a2ca5a6b95d7a97bb0b42b7fd05e344c3646f4ef5d9bb3d4ef463b.jpg) AI 分析标签页是本地 LLM 面向操作员的一侧。手动和自动扫描的结果都会汇集于此。每条分析见解都包含一个判定标签、置信度、MITRE 指标(当模型返回时)、IOC、后续步骤,以及一个“查看来源”按钮,点击后会打开 AI 查看的精确日志行: ![AI analysis](https://static.pigsec.cn/wp-content/uploads/repos/cas/95/953d7a2b4b8888e3556cc85abf34e903e7bfe45632b377b514bf0e4f1e4b2586.jpg) ### 资产清单 每个 agent 的硬件、软件和网络套接字。硬件选项卡列出每个 PnP 设备,软件选项卡列出已安装的软件包,网络选项卡列出每个 TCP/UDP 套接字及其所属进程: ![Asset inventory: hardware](https://static.pigsec.cn/wp-content/uploads/repos/cas/14/14ed6faba2977d3fa2c011bac84976bb8b2ec14bf76f45438877228c87daa8f3.jpg) ![Asset inventory: network](https://static.pigsec.cn/wp-content/uploads/repos/cas/20/20ba5f3db1284cf414b3a782c06ae7a79c86026a59456b8ac1d53b56fa9d4bf5.jpg) ### 日志浏览器 由 OpenSearch 提供支持的跨 agent 搜索。选择一个 agent,选择一个数据集(SIEM 事件、安全警报、进程事件、网络、FIM、审计日志),然后进行搜索。还为高级用户提供了一个打开 OpenSearch Dashboards(Kibana 分支)的按钮: ![Log Explorer](https://static.pigsec.cn/wp-content/uploads/repos/cas/45/458f0e1231cad9680de2f37f3f6d6d5f1d4f7b6f05ca3d95e096c851c549dd77.jpg) ### 审计日志 记录针对平台本身的每一次登录尝试,包括本地和 LDAP 登录,以及结果、源 IP 和时间戳。当有人想知道“谁在什么时候登录过”时非常有用: ![Audit logs](https://static.pigsec.cn/wp-content/uploads/repos/cas/d4/d46b1d4b3d7287774f498724cd9a4b97fb6398cc08586fda28a718c8654d4c56.jpg) ## 快速开始 您需要在主机上安装 Docker 24+ 和 Compose v2,以及 Python 3.10+(仅用于一次性的 agent 构建步骤)。完整技术栈需要约 16 GB 内存,请参阅下方的[系统要求](#system-requirements)。 ``` git clone https://github.com/0giv/Sentora-Community-Edition.git cd Sentora-Community-Edition # .env 保存着你的本地 secrets。切勿提交它。 cp .env.example .env # 编辑 .env:至少修改 DB_PASSWORD。 # 构建一次 agent binary。server 通过 # /api/agent/download/{linux,windows} 提供它;跳过此步骤意味着 agents 无法被 # 部署,因为 download endpoint 会返回 404。 cd Sentora ./build_agent.sh # on Linux/macOS/WSL # .\build_agent.ps1 # 在 Windows 上 cd .. docker compose up --build -d ``` 打开 。默认登录凭证是 `admin` / `admin123`。请立即在**用户与角色**下进行修改。 Ollama 会在首次启动时自动拉取 `llama3.2:3b`。可以通过以下命令进行验证: ``` docker exec sentora-ollama ollama list ``` 部署 agent:在**部署 agent**页面,复制适用于您所需操作系统的单行命令。在目标机器上(管理员 shell 中),粘贴该命令。安装程序会下载二进制文件,放置配置文件,向服务器注册,并将其自身注册为计划任务 / systemd unit。 ## Compose 中的服务 | 服务 | 端口 | 用途 | | :--- | :--- | :--- | | `app` | `:8000` | REST API + React UI | | `ingest` | `:5001` | TCP 日志收集器(agent 发送至此) | | `db` | `:3307` | MySQL 8.0(主机端口;网络内部为 3306) | | `rabbitmq` | `:5672` / `:15672` | 作业队列 + 管理 UI | | `ollama` | `:11434` | 本地 LLM 运行时 | | `opensearch` | `:9200` | 全文日志搜索 | | `opensearch-dashboards` | `:5601` | 可选的 Kibana 风格浏览器 | | `ai-worker-{automation,manual,defensive}` | | LLM 分析 worker | ## 系统要求 | 配置 | CPU | 内存 | 硬盘 | 备注 | | :--- | :--- | :--- | :--- | :--- | | 实验室(≤ 5 个 agent) | 4 核 | 12 GB | 40 GB SSD | `llama3.2:3b`,OpenSearch 堆内存为 1 GB | | 小型团队(10–50 个 agent) | 8 核 | 16 GB | 100 GB SSD | Compose 默认设置即可 | | 生产环境(50+ 个 agent) | 16+ 核 | 32 GB+ | 250 GB+ NVMe | 将 OpenSearch 和 Ollama 移至它们各自的主机 | 空闲时的资源占用: - Ollama (`llama3.2:3b`):约 3 GB,在推理时会占用更多 - OpenSearch:默认堆内存约 2 GB,磁盘占用随保留时间增加 - MySQL:500 MB – 1 GB - RabbitMQ:约 300 MB - Sanic + ingest + 3 个 AI worker:合计约 1 GB 如果内存吃紧,可以换成 `qwen2.5:1.5b` 或其他小型 Ollama 模型,并缩小 OpenSearch 堆内存。不强制要求使用 GPU,但如果存在,Ollama 会自动使用它。 ## 防御性 AI 自动操作 当防御性 worker 的判定为 `ACT`,且置信度 ≥ `AI_AUTO_ACT_CONF`(默认为 `0.75`),并且建议的操作在以下安全名单中时,该 worker 会将操作直接放入 agent 的 `automations` 表中: ``` BLOCK_IP KILL_PROCESS RESTART_SERVICE ISOLATE_HOST DISABLE_USER QUARANTINE_FILE SUSPEND_PROCESS LOGOFF_USER CONTAINER_ISOLATE CONTAINER_STOP CONTAINER_KILL ``` 任何不在此列表中的操作(任意的 `RUN_CMD`、`DELETE_FILE` 等)都会被降级为建议性提示。操作员必须从 SOAR Hub 手动派发。自动派发的操作在 UI 中会显示红色的 AUTO 标签。 要完全禁用自主操作,请在 `.env` 中设置 `AI_AUTO_ACT_CONF=1.0`。要禁用周期性的防御性扫描,请设置 `AI_DEFENSIVE_SWEEP_ENABLED=0`。 ### 影子模式 在 `.env` 中设置 `AI_SHADOW_MODE=1`,防御性 worker 将停止触发真实操作。原本会触发自主响应的判定将被保存为**提案**,其 `source_file = AI_DEFENSIVE_SHADOW` 且 `shadow_status = pending`。操作员可以从 **SOAR Hub > 影子队列** 中逐一审核,并执行以下操作: - **批准** > 真实的 SOAR 操作(`call_agent_soar`)将被触发,提案被标记为 `approved`(附带时间戳 + 操作员姓名)。 - **拒绝** > 提案将被标记为 `rejected`,可附注备注。不会采取任何行动。 提案永不过期;没有任何东西会替您做决定。这适用于在让模型针对生产环境遥测数据运行时,先建立对其判定结果的信心,然后再释放真实的 `BLOCK_IP` / `ISOLATE_HOST` 等操作。 ## 安全说明 ### 默认密钥 `.env.example` 附带占位符。真正的 `.env` 已被 git 忽略。在将平台暴露给 `localhost` 以外的任何环境之前,请轮换以下内容: - `DB_PASSWORD` - `admin / admin123` UI 登录凭证 - `AGENT_SHARED_SECRET`(agent 认证回退)。如果未设置,将在首次启动时自动生成。 ### 自签名证书 `certs/` 附带了自签名的开发证书,以便该技术栈在 `localhost` 上开箱即用。它们是公开的,不提供任何信任。对于非个人笔记本电脑的任何环境,请重新生成: ``` cd certs && python generate_certs.py ``` 或者提供您自己机构的 CA。 ### 本地 Fernet 密钥 服务器使用两个 Fernet 密钥,均在首次启动时自动生成: | 密钥 | 位置 | 保护对象 | | :--- | :--- | :--- | | Agent 密钥 | `data/fernet.key`(或 `FERNET_KEY_PATH`) | Agent 遥测数据;通过 `/api/agents/bootstrap` 分发 | | 服务器密钥 | `.env` `FERNET_KEY` | 服务器内部静态存储字段(例如密码列) | 对两者执行 `chmod 600`。妥善备份它们。丢失其中任何一个都会导致相应的加密数据无法读取。目前还没有原位轮换功能。 ### 威胁情报密钥 `OTX_API_KEY` 和 `VT_API_KEY` 是可选的。如果不设置 -> 充实操作将变为空操作,不会进行任何外部 API 调用。这保持了技术栈对物理隔离环境的友好性。 ### 物理隔离模式 ``` OSV_MODE=mirror OSV_MIRROR_URL=http://osv.internal ``` 内置字体,本地 Ollama,无外部 CDN。完全在离线状态下工作。 ## 架构概览 ``` Agent (Win / Linux) │ TCP frames + REST polling ▼ ingest (:5001) ──► RabbitMQ ──► AI worker fleet (3 modes) │ │ ▼ ▼ MySQL (per-agent _db) ai_analysis_results │ ▼ app (Sanic :8000) ──► React UI + REST + WebSocket screen proxy ``` 更深入的版本(按模块划分的布局、schema、AI pipeline、SOAR 自主性、物理隔离接口)位于 [docs/Sentora_Architecture.md](docs/Sentora_Architecture.md) 中。 ## 开发环境设置 ``` # 1. Database mysql -u root -p < init_userdb.sql mysql -u root -p < init.sql # 2. Backend pip install -r requirements.txt python app.py # 3. Ingest(单独的终端) python server.py # 4. Frontend dev server cd frontend npm install npm run dev ``` ### 手动运行 AI worker 相同的脚本,三种角色: ``` WORKER_TYPE=automation python ai_worker.py WORKER_TYPE=manual python ai_worker.py WORKER_TYPE=defensive python ai_worker.py ``` 生产环境:让 `docker-compose.yaml` 来完成。 ## 项目布局 ``` . ├── app.py # Sanic API + React SPA host ├── server.py # TCP ingest ├── ai_worker.py # AI worker fleet (3 modes) ├── ai/ │ ├── utils.py # LLM helpers, AI cache, SOAR queueing │ └── intel.py # OTX / VT enrichment (opt-in) ├── core/ │ ├── mq.py # RabbitMQ publisher │ └── opensearch.py # OpenSearch index/search ├── scanners/ │ └── vuln.py # Server-side OSV scanner ├── frontend/ # React 18 + TS SPA ├── Sentora/ # Cross-platform agent ├── certs/ # Self-signed dev certs ├── docs/ # Architecture + screenshots └── docker-compose.yaml ``` ## 许可证 AGPL-3.0。详情请见 [LICENSE](LICENSE)。 允许使用、修改、再分发。AGPL 在常规 GPL 基础上增加的内容是:如果您在网络服务器上运行修改后的版本,且其他用户与其进行交互,您也必须根据 AGPL 发布修改内容。 - 用于内部的自托管 -> 无需承担开源披露义务。 - 在修改后的 Sentora 基础上提供面向公众的 SaaS -> 您必须发布修改内容。 - 想要发布闭源的衍生作品或跳过网络版左条款?我们提供商业许可豁免。请联系作者。 “Sentora”名称和徽标属于项目作者的商标,不受 AGPL 覆盖。您可以自由分叉,但如果作为您自己的产品重新分发,请重命名。 ## 社区版中未包含的内容 社区版没有任何人为限制:没有 agent 数量限制,没有保留期限制,核心功能也没有任何门槛限制。只要您的硬件允许,您可以尽情扩展运行。 付费的 Pro / Enterprise 发行版增加了企业级整合功能(SAML/SCIM SSO、多租户、合规报告、HA、WORM 审计、签名的物理隔离更新包、4 眼 SOAR 审批、高级票务/SIEM 转发器)。但核心检测能力永远不会移到那堵付费墙之后。 如果这些功能对您的部署至关重要,请[联系我们](mailto:oguzhanbayarslan@gmail.com)。
标签:AI风险缓解, Docker, EDR, SOAR, x64dbg, 安全运营, 安全防御评估, 扫描框架, 本地大模型, 脆弱性评估, 请求拦截, 逆向工具