hefaistos-platform/hefaistos-pro
GitHub: hefaistos-platform/hefaistos-pro
HEFAISTOS 是一个企业级检测工程与威胁情报平台,提供从威胁假设到检测规则全生命周期管理及 MITRE ATT&CK 覆盖追踪。
Stars: 0 | Forks: 0
# Hefaistos
" \
-H "Content-Type: application/json" \
-d '{"query": "{ me { id username role } }"}'
```
### 关键查询
```
# 获取当前用户
query {
me {
id
username
email
role
organization { name }
}
}
# 列出 playbook 图
query {
allPlaybookGraphs {
id
title
status
author { username }
}
}
# 搜索规则
query {
rulesConnection(search: "mimikatz", first: 10) {
edges {
node {
id
title
format
rawContent
}
}
totalCount
}
}
# 获取 MITRE 技术建议
query {
detectionSuggestions(techniqueId: "T1003") {
technique {
id
name
}
strategies {
id
name
analytics {
name
description
}
}
}
}
```
### 关键 Mutation
```
# 创建 playbook 图
mutation {
createPlaybookGraph(title: "New Detection") {
graph { id }
}
}
# 生成 AI 规则
mutation {
startGenerateRuleTask(outputFormat: "KQL") {
taskId
}
}
# 提交审核
mutation {
requestReview(graphId: "uuid") {
success
message
}
}
# 批准审核
mutation {
approveReview(reviewId: "uuid") {
success
}
}
```
## 🧪 开发
### 本地开发设置
1. **后端:**
```
cd backend
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
```
2. **前端:**
```
cd frontend
npm install
npm start
```
3. **服务 (Docker):**
```
docker compose up -d db rabbitmq elasticsearch
```
### 运行测试
```
# Backend 测试
docker compose exec backend python manage.py test
# Frontend 测试
docker compose exec frontend npm test
# 覆盖率报告
cd backend && coverage run --source='.' manage.py test && coverage report
```
### 数据库迁移
```
# 创建新 migration
cd backend && python manage.py makemigrations app_name
# 应用 migrations
python manage.py migrate
# 检查 migration 状态
python manage.py showmigrations
```
### GraphQL 调试
交互式 GraphQL playground:
- 通过 NGINX 代理:`http://localhost/graphql` 或 `https://localhost/graphql`
- 直接后端(运行 `manage.py runserver` 时):`http://localhost:8000/graphql`
有关详细的查询示例,请参阅 [DEBUG_GRAPHQL.md](Docs/DEBUG_GRAPHQL.md)。
### 代码风格
- **后端:** Black、isort、flake8
- **前端:** ESLint、Prettier
## 📁 项目结构
```
hefaistos/
├── backend/ # Django backend
│ ├── core/ # Core settings, schema, middleware
│ ├── identity/ # User auth, profiles, RBAC
│ ├── organizations/ # Multi-tenant organization management
│ ├── playbooks/ # Detection playbooks and graphs
│ ├── rules/ # Detection rule management
│ ├── ach/ # Analysis of Competing Hypotheses
│ ├── ai_assistant/ # AI integration engine
│ ├── platform_data/ # MITRE ATT&CK data
│ ├── knowledge/ # Knowledge base
│ ├── data_catalog/ # Data source catalog
│ ├── log_catalog/ # Log source management
│ ├── review/ # Peer review workflow
│ ├── notifications/ # Notification system
│ ├── news/ # Announcements
│ ├── tags/ # Tagging system
│ └── services/ # Event listener service
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components (incl. CapabilityAbstractionMapNode, TechniqueRootNode, CoverageGapNode, CapabilityAbstractionLayerBands)
│ │ ├── pages/ # Page components
│ │ ├── context/ # React context providers
│ │ └── utils/ # Utility functions (incl. capabilityAbstractionUtils)
│ └── public/ # Static assets
├── hefaistos-sdk/ # Python SDK for connectors
├── rule_connector/ # Git rule sync connector
├── notification_connector/ # Notification connector
├── threat_intel_connector/ # MISP integration connector
├── git_push_connector/ # Git export connector
├── deploy_connector/ # Deployment connector
├── nginx/ # Nginx configuration
├── scripts/ # Utility scripts
├── attack-navigator/ # MITRE Navigator static build
├── Docs/ # Additional documentation
├── docker-compose.yml # Docker orchestration
└── README.md # This file
```
## ⚙️ 维护与运营
### 备份与恢复
备份可手动运行,也可选择通过 cron 定期执行:
```
# 手动备份到默认的 ./backups
./scripts/backup-hefaistos.sh
# 备份到外部挂载的媒体(由管理员管理)
./scripts/backup-hefaistos.sh --backup-dir /mnt/backup-drive/hefaistos --retention-days 30
# 从备份存档恢复
./scripts/backup-hefaistos.sh --restore /path/to/hefaistos-backup-YYYYmmdd_HHMMSS.tar.gz
```
备份内容包括:
- PostgreSQL 数据库转储(gzip 压缩)
- 运行时媒体和 navigator 数据卷
- 配置文件和机密
- 完整性校验和
- 自动轮换并保留 30 天(可配置)
Elasticsearch 快照特意未包含在此备份脚本中。如果在恢复后需要:
```
docker compose exec backend python manage.py search_index --rebuild -f
```
**参阅:** [scripts/backup-hefaistos.sh](scripts/backup-hefaistos.sh)
### 卸载与回滚
要安全地移除 HEFAISTOS:
```
# 带选项的交互式卸载
./scripts/uninstall-hefaistos.sh
# 保留数据和备份(支持回滚)
./scripts/uninstall-hefaistos.sh --keep-data --keep-backups
# 完全清理(谨慎使用)
./scripts/uninstall-hefaistos.sh --full-cleanup
```
**参阅:** [scripts/uninstall-hefaistos.sh](scripts/uninstall-hefaistos.sh)
### 防火墙配置
配置 UFW 防火墙:
```
# 交互式防火墙设置
./scripts/setup-firewall.sh
# 查看防火墙规则
sudo ufw status verbose
# 手动规则示例(NGINX 公共端口)
sudo ufw allow from 192.168.0.0/16 to any port 443
sudo ufw allow from 192.168.0.0/16 to any port 80
```
**参阅:** [scripts/setup-firewall.sh](scripts/setup-firewall.sh)
### 服务管理
```
# 启动所有服务
docker compose up -d
# 停止所有服务
docker compose stop
# 重启特定服务
docker compose restart backend
# 查看 backend 日志
docker compose logs -f backend
# 访问 backend shell
docker compose exec backend bash
```
## 🔒 安全考虑
- **身份验证:** 具有可配置过期时间的 JWT token
- **授权:** 基于角色的访问控制 (RBAC)
- **加密:** 对敏感字段(API 密钥、token)进行 Fernet 加密
- **机密:** 用于生产凭据的 Docker secrets
- **网络:** 内部 Docker 网络隔离
- **HTTPS:** 在 Nginx 反向代理处进行 TLS 终止
- **CORS:** 可配置的允许源
## 🤝 贡献
1. Fork 该仓库
2. 创建功能分支 (`git checkout -b feature/amazing-feature`)
3. 提交您的更改 (`git commit -m 'Add amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 发起 Pull Request
### 依赖许可证合规性(PR 门禁)
为了降低 SaaS/商业部署的法律风险,此仓库使用 GitHub 的 Dependency Review Action 在 Pull Request 上强制执行依赖项许可证检查。
- 工作流:`.github/workflows/dependency-review.yml`
- 策略配置:`.github/dependency-review-config.yml`
- 状态检查名称:`dependency-review`
当 PR 引入了带有被禁止的许可证(目前包括)的依赖项(运行时或开发范围)时,检查将失败:
- `AGPL-1.0-only`
- `AGPL-1.0-or-later`
- `AGPL-3.0-only`
- `AGPL-3.0-or-later`
- `SSPL-1.0`
- `OSL-3.0`
- `CC-BY-NC-4.0`
#### 如果您的 PR 未通过许可证策略检查
1. 识别被 `dependency-review` 检查标记的包。
2. 将其替换为具有允许许可证的替代包。
3. 如果无法替换,请提交一个 issue 描述:
- 包名称和版本
- 使用位置
- 为什么不存在合适的替代方案
- 法律/合规影响
4. 在请求任何策略例外之前,等待维护者批准。
当 `dependency-review` 被配置为必需的状态检查时,不允许在受保护的分支上直接绕过。
## 📄 许可证
该项目在 **GNU Affero General Public License v3.0** (`AGPL-3.0-only`) 下授权。
有关全文,请参阅 [LICENSE](./LICENSE)。
### 商业用途与 SaaS
- 允许商业用途。
- 第三方可以 fork 并将其作为服务运行/销售。
- 如果他们修改了软件并通过网络提供,AGPL 要求他们向该服务的用户提供这些修改的相应源代码。
如果需要专有例外情况,维护者可以提供单独的商业条款。
## 📞 支持
如需支持和咨询:
- 在 GitHub 仓库中提交一个 issue
- 联系 HEFAISTOS 团队

**企业级检测工程与威胁情报平台**
[](./LICENSE)
[](./VERSION)
[](https://python.org)
[](https://djangoproject.com)
[](https://reactjs.org)
[](https://typescriptlang.org)
[](https://docker.com)
## 🎯 概述
HEFAISTOS 是一个专为安全运营团队设计的综合**检测工程平台**。它提供了从威胁假设开发到检测规则创建、测试、部署以及 MITRE ATT&CK 覆盖率追踪的端到端工作流。
### 核心能力
- 🔬 **检测工作台** - 可视化、基于图谱的检测开发环境,具备高级能力抽象图(从库中自动生成、分层条带、鲁棒性编码、缺口检测)
- 🤖 **AI 驱动的规则生成** - 支持多服务商 AI(OpenAI、Gemini、Claude)
- 📊 **MITRE ATT&CK 集成** - 完整的覆盖映射和技术追踪
- 🕵️ **威胁情报** - 集成 MISP 自动创建工作台
- 🔄 **Git 仓库同步** - 双向 KQL/SPL/WAZUH 规则同步
- 📋 **ACH 分析** - 结构化竞争性假设分析
- 👥 **协作工作流** - 同行评审与审批流程
- 🏢 **多租户** - 基于组织和实体的隔离(支持 MSSP)
## 🏗️ 架构
```
┌─────────────────────────────────────────────────────────────────────────┐
│ NGINX (Reverse Proxy) │
│ Ports: 80 (HTTP) / 443 (HTTPS) │
└─────────────────────────────────────────────────────────────────────────┘
│ │
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────────┐
│ Frontend │ │ Backend │
│ React 19 + TypeScript │ │ Django 6.0 + GraphQL │
│ TailwindCSS + Ant Design │ │ Gunicorn + WebSocket │
│ React Flow (Graphs) │ │ JWT Authentication │
└─────────────────────────────┘ └─────────────────────────────────┘
│
┌───────────────────────────────────┼───────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────────┐ ┌─────────────────────┐ ┌──────────────┐
│ PostgreSQL │ │ RabbitMQ │ │ Elasticsearch│
│ (Database) │ │ (Event Messaging) │ │ (Search) │
└───────────────────┘ └─────────────────────┘ └──────────────┘
║
┌───────────────────────────────┴───────────────────────────┐
│ Event Connectors │
├─────────────┬─────────────┬─────────────┬───────────────-─┤
│ Rule │ Notification│ Threat Intel│ Git Push │
│ Connector │ Connector │ Connector │ Connector │
│ (Git Sync) │ (Alerts) │ (MISP) │ (Export Rules) │
└─────────────┴─────────────┴─────────────┴────────────────-┘
```
## ✨ 功能
### 🔬 检测工作台
可视化工作台提供了完整的检测工程环境:
- **能力抽象图** - 从能力抽象库中自动生成的可视化图谱;分层条带背景、鲁棒性颜色编码、规避注释、覆盖缺口节点,以及图谱与库面板之间的双向点击高亮同步
- **能力抽象库** - 结构化、针对特定技术的知识库(共享基线 + 组织自定义条目),将 AI 生成立足于具体的检测层(工具 → API → COM/IPC → 注册表 → 协议 → 进程行为 → 网络行为)
- **图谱可视化** - 基于 React Flow 的能力抽象图,支持自动(从库中派生)和手动模式
- **检测策略** - MITRE ATT&CK 技术和策略选择
- **深度剖析部分** - 目标、技术上下文、盲点、误报
- **测试指南** - 测试场景和预期输出
- **SOAR 配置** - 告警触发器、富化、遏制、通知
- **同行评审** - 内置的评审请求和审批工作流
- **活动追踪** - 每个工作台包含持久的 markdown 调查笔记(包含格式化工具栏)和活动日志;笔记清理仅限于工作台作者/管理员
- **自适应工作区布局** - 右侧的元数据/笔记面板可折叠和拖动(最多可达页面宽度的三分之一),并且多平台编辑器可全屏打开以获得最大的编辑空间
- **检测编辑器多格式操作** - `GENERATE ALL` 支持所有注册格式,对于非空目标默认跳过,并提供可选的 **Overwrite all content** 开关;模态框中还提供针对特定格式的 `SAVE {FORMAT}` 和 `SAVE ALL`
### 🤖 AI 驱动的检测工程
用于智能规则生成的多服务商 AI 集成:
| 服务商 | 模型选择 |
|----------|-----------------|
| **OpenAI** | 输入任何有效的模型标识符(例如 `GPT-5.5`) |
| **Google Gemini** | 输入任何有效的 Gemini 模型标识符(例如 `GEMINI-3.5-FLASH`) |
| **Anthropic Claude** | 输入任何有效的 Claude 模型标识符(例如 `CLAUDE-SONNET-4.6`) |
| **自托管/Ollama** | 输入您的 Ollama 模型名称(例如 `llama3.1`、`mistral`) |
现在,在用户和组织设置中,模型选择为**自由文本**输入,因此当服务商发布新模型名称时,无需重新部署前端。
**AI 能力:**
- **逻辑解构** - 5 步分析(能力、原子操作、规避)
- **规则生成** - 从工作台上下文创建 KQL、SPL 或 Wazuh 规则
- **改进建议** - AI 驱动的规则优化建议
- **ACH 生成** - 从场景生成假设和证据
- **偏见检测** - 分析 ACH 矩阵以发现认知偏见
### 📊 MITRE ATT&CK 集成
与 MITRE ATT&CK 框架的全面集成:
- **覆盖图** - 交互式 ATT&CK Navigator,展示检测覆盖率
- **技术映射** - 将检测链接到 Enterprise、ICS 和 Mobile 技术
- **检测策略** - 导入 MITRE 检测策略和分析
- **数据组件** - 将所需数据源映射到技术
### 🔄 规则仓库管理
与 Git 仓库的双向同步:
**入站 (Git → HEFAISTOS):**
- 自动/定期的仓库拉取
- 解析 KQL/SPL/WAZUH 文件并提取元数据
- 支持 KQL 文件(`.kql`、`.kusto`、带有代码块的 Markdown)
- 规则去重和更新
**出站 (HEFAISTOS → Git):**
- 将工作台作为检测规则 (KQL/SPL/WAZUH) 推送
- GitHub Pull Request 集成
- 自动创建分支
- 可配置的目标路径
### 🕵️ 威胁情报集成
集成 MISP 进行基于威胁的检测:
- **IoC 提取** - IP、域名、URL、哈希、电子邮件
- **事件轮询** - 自动摄取 MISP 事件
- **工作台创建** - 从事件自动生成工作台
- **ATT&CK 映射** - Galaxy 集群技术映射
- **SOAR 预填充** - 默认的富化/分流步骤
### 📋 竞争性假设分析 (ACH)
结构化情报分析工具:
- **证据追踪** - 添加带有可信度评级的证据
- **假设管理** - 创建和组织竞争性假设
- **一致性矩阵** - 对假设进行证据评分 (CC/C/N/I/II)
- **偏见检测** - AI 驱动的认知偏见识别
- **工作台关联** - 将假设转化为检测工作台
### 👥 协作与工作流
企业级协作功能:
**生命周期管理:**
```
IDEA → RESEARCH → DEVELOPMENT → REVIEW → APPROVED → TESTING → DEPLOYED → TUNING
```
**评审工作流:**
- 提交以进行同行评审
- 评论线程
- 批准/拒绝并附带反馈
- 活动审计日志
**多租户:**
- 基于组织的隔离
- 跨实体共享模板
- 实体层级(支持 MSSP)
- 基于角色的访问控制
### 📚 附加功能
| 功能 | 描述 |
|---------|-------------|
| **知识库** | Wiki 风格的文档,支持分类和 Markdown |
| **数据目录** | 带有字段 schema 的数据源注册表 |
| **新闻与公告** | 具有优先级和自动过期功能的平台级更新 |
| **日志目录** | 带有 MITRE 映射的日志源管理 |
| **通知系统** | 应用内和电子邮件通知 |
| **看板** | 可视化工作流管理 |
| **标签系统** | 跨所有实体的灵活标签 |
## 🚀 快速开始(手动,推荐)
```
git clone -b sharp https://github.com/hefaistos-platform/hefaistos-pro.git
cd hefaistos-pro
git pull origin sharp
cp .env.template .env
cp docker-compose.override.yml.template docker-compose.override.yml
mkdir -p .secrets
openssl rand -base64 32 > .secrets/db_password
openssl rand -base64 32 > .secrets/rabbitmq_pass
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" > .secrets/field_key
echo "your-mailgun-key" > .secrets/mailgun_api
docker compose up -d
docker compose exec backend python manage.py migrate
docker compose exec backend python manage.py createsuperuser
```
**预计时间:** 10-20 分钟 | **预计成本:** 免费(全部开源)
### SHARP 全新引导(破坏性重置)
要在干净的环境中快速推进 SHARP 部署,请使用:
```
./scripts/sharp_bootstrap.sh
```
这将执行 `docker compose down -v`,重新构建镜像,启动 stack,运行迁移,重建搜索索引,并执行冒烟检查。
PostgreSQL 18+ 兼容性提示:SHARP 使用 `/var/lib/postgresql` 挂载布局。如果遇到提及 `unused mount/volume` 和 `/var/lib/postgresql/data` 的数据库启动错误,请删除旧版数据库卷并重新运行引导。
## 📚 文档索引
- 完整安装指南:[INSTALL_MANUAL.md](Docs/INSTALL_MANUAL.md)
- 认证设置指南(Entra OIDC + 通用 OIDC):[AUTH_SETUP.md](Docs/AUTH_SETUP.md)
- 检测瓶颈指南:[README_CHOKEPOINTS.md](Docs/README_CHOKEPOINTS.md)
- Maieutic 引擎指南:[README_MAIEUTIC.md](Docs/README_MAIEUTIC.md)
- SHARP 全新引导操作手册:[scripts/SHARP_BOOTSTRAP_RUNBOOK.md](scripts/SHARP_BOOTSTRAP_RUNBOOK.md)
- SHARP 验收清单模板:[scripts/SHARP_ACCEPTANCE_REPORT_TEMPLATE.md](scripts/SHARP_ACCEPTANCE_REPORT_TEMPLATE.md)
## 📖 手动安装
所有支持的安装均使用此工作流:
### 1. 克隆仓库
```
git clone -b sharp https://github.com/hefaistos-platform/hefaistos-pro.git
cd hefaistos-pro
git pull origin sharp
```
如果您之前已经克隆过该仓库,请在安装前切换到 SHARP 分支:
```
git checkout sharp
git pull origin sharp
```
### 2. 复制配置模板
```
cp .env.template .env
cp docker-compose.override.yml.template docker-compose.override.yml
```
`docker-compose.yml` 现在通过 `env_file` 为 backend/workers/connectors 加载 `.env`,因此 `.env` 是非机密运行时配置的唯一事实来源。
默认情况下,Nginx 发布的主机端口为 `80 -> 8080` 和 `443 -> 8443`。
如果这些主机端口被占用,请仅在 `docker-compose.override.yml` 中重新映射(保持容器端口 `8080/8443` 不变),例如:
```
services:
nginx:
ports:
- "8080:8080"
- "4443:8443"
```
### 3. 生成密钥
```
mkdir -p .secrets
openssl rand -base64 32 > .secrets/db_password
openssl rand -base64 32 > .secrets/rabbitmq_pass
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" > .secrets/field_key
# 可选:仅用于 threat_intel_connector (MISP → 自动创建 hunt)
# echo "your-misp-api-key" > .secrets/misp_key
echo "your-mailgun-key" > .secrets/mailgun_api
```
如果 `.secrets/field_key` 已经存在但为空,请在启动 Docker 之前重新生成它:
```
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" > .secrets/field_key
# 如果 Python cryptography 不可用时的备用方案:
# openssl rand 32 | openssl enc -base64 -A | tr '+/' '-_' > .secrets/field_key
```
### 4. 配置环境
- **推荐:** 从 [.env.template](.env.template) 编辑 [.env](.env)
- 可选:在您的 shell 中导出环境变量,以覆盖单次运行的 `.env` 值
- 将机密保留在 `/run/secrets/*` 下的 Docker secrets 中(不要将机密放入 `.env`)
关键变量:
```
PUBLIC_BASE_URL=https://your.domain.com
FRONTEND_URL=https://your.domain.com
CORS_ALLOWED_ORIGINS=https://your.domain.com
CSRF_TRUSTED_ORIGINS=https://your.domain.com
SERVER_DOMAIN=your.domain.com
ADMIN_ALLOWED_IP_RANGES=192.168.1.0/24
```
### 5. 启动平台
```
docker compose up -d
```
### 6. 运行迁移并创建超级用户
```
docker compose exec backend python manage.py migrate
docker compose exec backend python manage.py createsuperuser
```
### 7. 导入 MITRE ATT&CK 数据
```
docker compose exec backend python manage.py import_mitre_universal --mitre-version 19.0 --mode remote
```
### 8. 访问平台
- Web UI:`https://your.domain.com`
- GraphQL API:`https://your.domain.com/graphql`
- 管理面板:`https://your.domain.com/admin`
## 🔧 配置
### 环境变量
有关完整、最新的变量目录(包括高级/可选键),请参阅 [Docs/ENVIRONMENT_VARIABLES.md](Docs/ENVIRONMENT_VARIABLES.md)。
| 变量 | 描述 | 必填 |
|----------|-------------|----------|
| `DEBUG` | 启用调试模式 | 否(默认:False) |
| `SECRET_KEY` | Django 密钥 | 是(如果为空则自动生成) |
| `SERVER_DOMAIN` | 您的域名或 IP | 是 |
| `FRONTEND_URL` | 用于电子邮件的前端基础 URL | 否(默认:https://localhost) |
| `PUBLIC_BASE_URL` | 用于可共享链接的规范外部基础 URL(适用于多代理部署) | 否(默认:未设置;后端尝试使用外部 FRONTEND_URL,然后是请求主机) |
| `WEBAUTHN_RP_ID` | WebAuthn 依赖方 ID(公共主机) | 安全密钥 MFA/无密码登录时必填 |
| `WEBAUTHN_ORIGIN` | WebAuthn 源(在生产环境中必须是 HTTPS) | 安全密钥 MFA/无密码登录时必填 |
| `CORS_ALLOWED_ORIGINS` | 额外允许的 CORS 源(逗号分隔)。`mitre-attack.github.io` 始终自动包含在内。 | 否 |
| `CSRF_TRUSTED_ORIGINS` | 受信任的 CSRF 源(逗号分隔,必须包含您的公共 URL) | 否(默认:https://localhost,http://localhost) |
| `ADMIN_ALLOWED_IP_RANGES` | 允许访问 /admin/ 的 IP 范围(逗号分隔的 CIDR) | 否(默认:localhost + Docker 网络) |
| `DB_HOST` | PostgreSQL 主机 | 否(默认:db) |
| `DB_PORT` | PostgreSQL 端口 | 否(:5432) |
| `DB_NAME` | 数据库名称 | 否(默认:hefaistos_db) |
| `DB_USER` | 数据库用户 | 否(默认:hefaistos_user) |
| `DB_PASSWORD_FILE` | 数据库密码的 Docker secret 文件路径 | 否(默认:/run/secrets/db_password) |
| `RABBITMQ_HOST` | RabbitMQ 主机 | 否(默认:rabbitmq) |
| `RABBITMQ_PORT` | RabbitMQ 端口 | 否(默认:5672) |
| `RABBITMQ_USER` | RabbitMQ 用户名 | 否(默认:hefaistos_mq) |
| `RABBITMQ_PASS_FILE` | RabbitMQ 密码的 Docker secret 文件路径 | 否(默认:/run/secrets/rabbitmq_pass) |
| `ELASTICSEARCH_HOST` | Elasticsearch 主机 | 否(默认:elasticsearch) |
| `ELASTICSEARCH_PORT` | Elasticsearch 端口 | 否(默认:9200) |
| `FIELD_ENCRYPTION_KEY_PATH` | Fernet 密钥路径 | 否(默认:/run/secrets/field_key) |
| `FIELD_ENCRYPTION_KEY_FILE` | Fernet 密钥的 Docker secret 文件路径 | 否(默认:/run/secrets/field_key) |
| `MISP_URL` | 仅用于 **threat_intel_connector** 的 MISP URL(ADVOPS 推送使用通过 UI 配置的按组织实例) | 否 |
| `HEFAISTOS_API_URL` | 连接器容器使用的 API 基础 URL | 否(默认:http://backend:8000/graphql) |
| `HEFAISTOS_API_TOKEN_FILE` | 连接器服务令牌文件路径 | 否(默认:/run/connector/token.jwt) |
| `EMAIL_ENABLED` | 启用电子邮件通知 | 否(默认:False) |
| `EMAIL_HOST` | SMTP 主机 | 否 |
| `EMAIL_PORT` | SMTP 端口 | 否 |
| `EMAIL_HOST_USER` | SMTP 用户名 | 否 |
| `MAILGUN_API_KEY_PATH` | Mailgun API 密钥路径 | 否 |
### Docker Secrets
生产部署应使用 Docker secrets:
```
secrets:
db_password:
file: ./.secrets/db_password
rabbitmq_pass:
file: ./.secrets/rabbitmq_pass
field_key:
file: ./.secrets/field_key
# misp_key is only required if using the threat_intel_connector
misp_key:
file: ./.secrets/misp_key
mailgun_api:
file: ./.secrets/mailgun_api
```
### CORS 和安全密钥(YubiKey/WebAuthn)设置
CORS/CSRF 和 WebAuthn 通过 `.env` 值进行配置(由 Compose 通过 `env_file` 加载)。`.env.template` 是入门模板。
#### 对于用户
要注册 YubiKey/安全密钥,用户只需使用 UI:
1. 登录 HEFAISTOS。
2. 打开 **User Profile**。
3. 找到 **Security Keys (YubiKey/WebAuthn)**。
4. 可选地输入密钥名称。
5. 点击 **Add Security Key**。
6. 在浏览器提示时触摸/确认 YubiKey。
7. 注册完成。
用户**无需**编辑 `.env`、Docker Compose 或任何服务器端设置。
#### 对于管理员/操作员(一次性平台设置)
在 `.env` 中配置这些值:
```
FRONTEND_URL=https://detect.hefaistos.org
PUBLIC_BASE_URL=https://detect.hefaistos.org
WEBAUTHN_RP_ID=detect.hefaistos.org
WEBAUTHN_ORIGIN=https://detect.hefaistos.org
```
当您的部署具有多个代理层时(例如:外部 LB/代理 -> Nginx -> 前端/后端容器),建议使用 `PUBLIC_BASE_URL`。它确保生成的共享 URL 使用真正可外部访问的源。
还要在 `.env` 中设置 CORS/CSRF 值(`CORS_ALLOWED_ORIGINS`、`CSRF_TRUSTED_ORIGINS`)。
更新 `.env` 后,重启使用这些值的服务:
```
docker compose up -d --force-recreate backend scheduler opentide-hef-publish-worker opentide-hef-import-worker listener ai_generation_worker opentide_enrichment_worker
```
**媒体 CORS**:媒体文件(头像、快照)由 Nginx 直接提供,默认具有开放的 CORS 标头(`Access-Control-Allow-Origin: *`),因此头像可以从任何源加载而无需配置。如果您需要限制此操作,请修改 `nginx/conf.d/hefaistos.conf` 中的 `/media/` location 块。
### SSL/TLS 配置
将证书放置在 `nginx/certs/` 中:
- `nginx/certs/hefaistos.crt` - SSL 证书
- `nginx/certs/hefaistos.key` - SSL 私钥
可以生成自签名证书:
```
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout nginx/certs/hefaistos.key \
-out nginx/certs/hefaistos.crt \
-subj "/CN=localhost"
```
## 👤 用户角色
| 角色 | 权限 |
|------|-------------|
| **ADMIN** | 完全访问权限:用户管理、组织设置、Git 操作、所有 CRUD |
| **REVIEWER** | 审查和批准 playbook、推送到 Git、管理规则 |
| **ANALYST** | 创建/编辑 playbook 和规则、提交审查 |
| **VIEWER** | 对 playbook、规则和仪表盘的只读访问权限 |
| **ELONE** | 对 L1 门户的只读访问权限(L1 分析师) |
| **BOT_AUDITOR_ORG** | 用于自动化审计工作流的组织范围机器人审计员角色 |
| **BOT_AUDITOR_GLOBAL** | 用于跨组织自动化审计工作流的全局机器人审计员角色 |
### 设置用户角色
通过 Django Admin:
```
docker compose exec backend python manage.py shell
>>> from identity.models import CustomUser
>>> user = CustomUser.objects.get(username='analyst1')
>>> user.role = 'ADMIN' # or 'ANALYST', 'REVIEWER', 'VIEWER', 'ELONE', 'BOT_AUDITOR_ORG', 'BOT_AUDITOR_GLOBAL'
>>> user.save()
```
## 🔌 事件驱动连接器
HEFAISTOS 使用 RabbitMQ 进行事件驱动的集成:
### 规则连接器
从 Git 仓库同步检测规则。
- **触发器:** `rule.repo.pull.requested`
- **功能:** 克隆仓库、解析 KQL/SPL/WAZUH 文件、更新或插入规则
### 通知连接器
从领域事件创建应用内通知。
- **事件:** 评审请求、批准、规则创建、状态更改
- **渠道:** 应用内、电子邮件(可按用户配置)
### 威胁情报连接器
与 MISP 威胁情报平台集成。
- **触发器:** 轮询间隔(可配置)
- **功能:** 导入事件、提取 IoC、创建工作台
### Git 推送连接器
将 playbook 作为检测规则导出到 Git 仓库。
- **触发器:** `playbook.git.push.requested`
- **功能:** 格式化规则 (KQL/SPL/WAZUH)、创建分支、推送、可选地开启 PR
### 部署连接器
处理部署工作流转换。
- **触发器:** `playbook.deploy.requested`
- **功能:** 将 playbook 状态更新为 DEPLOYED
## ⚠️ 破坏性变更
### SIGMA 格式已移除(2026 年)
HEFAISTOS 不再支持将 SIGMA/Sigma YAML 作为检测规则格式。
**变更内容:**
- 从所有规则格式选项、选择器和 API 字段中移除了 `SIGMA`
- 从 `docker-compose.yml` 中移除了 `sigconverter` 服务(端口 7002)
- 从后端依赖项中移除了 pySigma Python 包
- `StartGenerateSigmaTask` GraphQL mutation 重命名为 `StartGenerateRuleTask`
- 移除了 `GenerateSigmaAI` GraphQL mutation
- 移除了规则转换 UI(pySigma 后端转换)
- 移除了 `rules/sigma` Git 推送文件夹选项
**`git pull origin sharp` 后的迁移步骤:**
1. 重新构建并重启所有容器:
docker compose down
docker compose pull
docker compose up -d --build
2. 应用数据库迁移(重新映射现有的 SIGMA 规则 → OTHER 格式):
docker compose exec backend python manage.py migrate
3. 清理您的环境:
- 从 `.env` / 部署配置中移除 `LSP_SIGMA_*`、`SIGCONVERTER_*` 变量
- 从您的部署管道中移除任何特定于 SIGMA 的自动化
4. 验证服务健康状况 — 后端、worker、前端和剩余的 LSP 服务(KQL/SPL/WAZUH/AQL)应全部干净启动。
5. 审查旧版 SIGMA 规则:
- 现有的 `format=SIGMA` 规则已通过迁移自动重新映射为 `format=OTHER`
- 如果需要,以受支持的格式(KQL、SPL、WAZUH)重新创建受影响的规则
**今后支持的格式:** KQL、SPL、WAZUH、EQL、ELASTIC、OTHER
## 📖 API 参考
### GraphQL 端点
`POST /graphql`
**身份验证:** Bearer token (JWT)
```
curl -X POST https://localhost/graphql \
-H "Authorization: Bearer
**为检测用 ❤️ 打造**
**(c) 2026 th3r3d - dev + th30ne -managing croak (Both DCG420) & A Collective Hallucination of AI Bots**
按“原样”提供,不提供任何形式的保证。详情请参阅 `LICENSE`。标签:ATT&CK覆盖, Django, Docker, React, Syscalls, 威胁情报, 安全运营, 安全防御评估, 开发者工具, 扫描框架, 测试用例, 请求拦截, 负责任AI, 逆向工具