d3vhex/Sentora
GitHub: d3vhex/Sentora
Sentora 是一款开源自托管 AI 驱动的 SIEM/EDR/SOAR 一体化安全运营平台,帮助无专门 SOC 的中小型团队以单命令部署实现端点遥测收集、本地 LLM 威胁分析、日志检索与自动化响应。
Stars: 4 | Forks: 0
# Sentora 社区版
[](https://www.gnu.org/licenses/agpl-3.0)
[](https://www.python.org/)
[](https://sanic.dev/)
适用于没有专门 SOC 的中小型团队的自托管安全防护体系。在每个端点上投放一个 agent,将它们指向服务器,您就可以获得 SIEM 日志、文件完整性、软件包漏洞、由 OpenSearch 驱动的日志浏览器、自主 AI 分类以及 SOAR playbook 引擎,所有这些只需一个 `docker compose up` 即可完成。
“AI”部分是在本地运行的 Ollama 模型(默认为 `llama3.2:3b`)。日志永远不会离开设备;没有 OpenAI 密钥,没有 Anthropic 密钥,也没有任何回传通信。如果您想要一个更智能的模型并且有足够的内存,可以在 `.env` 中替换它。

## 它的实际功能
- **收集遥测数据**,通过单个 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、自动化规则)以及管理。
。默认登录凭证是 `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, 安全运营, 安全防御评估, 扫描框架, 本地大模型, 脆弱性评估, 请求拦截, 逆向工具