astoralab/astorasoc
GitHub: astoralab/astorasoc
AstoraSOC 是一款开源的 SOC 与事件响应平台,为安全团队提供从 SIEM 告警分诊、案件管理到专业报告输出的完整工作流。
Stars: 1 | Forks: 0
# AstoraSOC
AstoraSOC 是由 Astora Lab 开发的开源 SOC 和事件响应平台,专为需要清晰、现代化工作流的团队而构建,涵盖告警分诊、案件管理、IOC 情报、证据处理、资产上下文、封堵治理以及可直接提交给管理层的报告。
## 核心功能
- 支持与供应商无关的告警 webhook,带有 API key 验证并保留原始 JSON。
- 标准化的告警卡片,包含来源、检测名称、严重程度、主机、用户、源 IP、目的 IP、MITRE 以及关联的资产上下文。
- 告警转为案件前的负责人/管理员审核工作流。
- 案件工作区,包含任务、笔记、证据、IOC 情报、时间线、相关活动、封堵请求和结案审核。
- 资产情报,包含资产所有者、部门、业务职能、关键性、风险评分、关联告警和关联案件。
- Playbook 引擎,支持基于 SIEM 规则 ID、来源类别、MITRE 战术、告警类型、案件类型和通用兜底工作流。
- 专业的 DOCX/PDF 报告,包含管理层影响评估、修复详情、证据登记表、图表、审核批准以及可选的 AI 增强叙述。
- 审计日志、基于角色的访问控制、会话超时控制、安全上传和加密设置。
## 快速开始
AstoraSOC 是容器优先的。使用 Docker 是在 Windows、Linux 或 macOS 上运行它的最简单方法。
### 步骤 1:安装 Docker
在 Windows/macOS 上安装 Docker Desktop,或在 Linux 上安装 Docker Engine。
### 步骤 2:打开项目文件夹
Windows PowerShell:
```
cd AstoraSOC
```
Linux/macOS 终端:
```
cd AstoraSOC
```
### 步骤 3:创建并编辑 `.env`
Windows PowerShell:
```
copy .env.example .env
notepad .env
```
Linux:
```
cp .env.example .env
nano .env
```
macOS:
```
cp .env.example .env
open -e .env
```
至少修改以下值:
- `SECRET_KEY`
- `MYSQL_PASSWORD`
- `MYSQL_ROOT_PASSWORD`
使用以下命令生成 `SECRET_KEY`:
```
python -c "import secrets; print(secrets.token_urlsafe(48))"
```
首次登录后,前往管理员设置查看或重新生成供 SIEM 集成使用的 Webhook API Key。
### 步骤 4:启动 AstoraSOC
Windows PowerShell、Linux 和 macOS:
```
docker compose up --build -d
```
### 步骤 5:初始化数据库
```
docker compose exec web flask --app run.py init-db
docker compose exec web flask --app run.py upgrade-db
docker compose exec web flask --app run.py seed-admin
```
### 步骤 6:打开 AstoraSOC
```
http://localhost:5000
```
如果需要从其他设备进行局域网访问:
```
http://:5000
```
对于生产环境部署,请将 AstoraSOC 置于 Nginx 或 Apache 之后,并将流量转发到端口为 `5000` 的 AstoraSOC 容器。 `deployment/nginx` 和 `deployment/apache` 中提供了反向代理配置示例。
默认登录信息:
- 用户名:`admin`
- 密码:`ChangeMeNow123!`
默认管理员在首次登录后将被强制要求更改密码。
## 部署端口和真实客户端 IP
AstoraSOC 可以直接通过 Docker 运行,但 Windows 上的 Docker Desktop 可能会在审计日志中显示 Docker 网桥 IP,例如 `172.18.0.1`。要获取真实的管理员/分析师 IP,请将 AstoraSOC 置于转发客户端 IP header 的主机代理或反向代理之后运行。
默认 Docker 布局:
```
User browser -> http://HOST-IP:5000 -> AstoraSOC Docker web container
```
Docker Compose 暴露 AstoraSOC 的端口为:
```
host:5000 -> container:5000
```
如果您部署在 Nginx、Apache、Traefik、Cloudflare 或其他反向代理之后,请确保其转发真实的客户端 IP header:
```
X-Forwarded-For:
X-Real-IP:
X-Forwarded-Proto: http
```
在具有管理员权限的 PowerShell 中,允许 Windows 防火墙放行端口 `5000`:
```
netsh advfirewall firewall add rule name="AstoraSOC 5000" dir=in action=allow protocol=TCP localport=5000
```
Linux/Nginx 部署应转发到 Docker 后端并保留 header。示例配置可在以下位置找到:
```
deployment/nginx/astorasoc.conf
```
更多部署细节位于:
```
deployment/README.md
```
## Webhook
将告警发送至 `POST /api/webhook/alert`,并附带 header `X-API-Key: `。
AstoraSOC 与 SIEM/SOAR 无关。任何能够通过 HTTP 发送 JSON、调用 webhook、运行桥接脚本或通过 SOAR 工具转发的平台,都可以将告警发送到 AstoraSOC。常见的来源包括 Wazuh、Splunk、Microsoft Sentinel、QRadar、Elastic Security、Security Onion、Graylog、Chronicle/SecOps、Shuffle 和自定义 API 客户端。
## 集成示例
### 通用 SIEM/SOAR webhook
推荐模式:
```
POST /api/webhook/alert
Header: X-API-Key:
Content-Type: application/json
```
尽可能使用源字段,例如 `source`、`integration`、`event_id`、`title`、`severity`、`rule_id`、`affected_host`、`affected_user`、`source_ip`、`destination_ip`、`mitre_tactic`、`mitre_technique` 和 `raw_alert`。
AstoraSOC 还会标准化常见的供应商字段变体,例如 `src_ip`、`source.ip`、`data.srcip`、`event.source_ip`、`SourceIP`、`dst_ip`、`destination.ip`、`user.name`、`agent.name`、`host.name`、`rule.description`、`event.action` 和 `detection.name`。
### Wazuh 自定义集成
AstoraSOC 包含一个无依赖的 Wazuh 集成脚本,位于:
```
SIEM Integrations/Wazuh/custom-astorasoc.py
```
它仅使用 Python 内置库,因此无需安装 `requests` 即可在最小化的 Wazuh Docker 容器中运行。
典型的 Wazuh 管理器放置位置:
```
cp SIEM Integrations/Wazuh/custom-astorasoc.py /var/ossec/integrations/custom-astorasoc
chmod 750 /var/ossec/integrations/custom-astorasoc
chown root:wazuh /var/ossec/integrations/custom-astorasoc
```
该脚本需要:
```
custom-astorasoc
```
示例 URL:
```
http://astorasoc-web:5000/api/webhook/alert
```
标签:Docker, 威胁情报, 安全合规, 安全运营, 安全防御评估, 库, 应急响应, 开发者工具, 扫描框架, 版权保护, 网络代理, 请求拦截, 逆向工具