cyberRKSha/LogRKSha
GitHub: cyberRKSha/LogRKSha
LogRKSha 是一个生产级混合机器学习 SIEM 系统,通过 Sigma 规则和多模型 ML pipeline 统一检测日志与网络数据中的已知威胁和未知异常。
Stars: 1 | Forks: 0
# LogRKSha
一个生产级的混合机器学习 SIEM,通过确定性的 Sigma 规则引擎检测**已知威胁**,并通过并行运行的多模型 ML pipeline(SentenceTransformers、Autoencoders 和 LSTMs)检测**未知行为异常**。LogRKSha 将系统日志(Syslog、Journald)和网络遥测数据(Zeek)统一到单一的分析 pipeline 中,并辅以 MITRE ATT&CK 映射、实时威胁情报、自动化响应 playbook 和生成式 AI 辅助调查功能。
### 领域 3:实时后端
FastAPI 后端(`app/main.py`)为分析师仪表板、REST API 和实时事件流提供服务。
- **异步路由**:11 个模块化 API 路由涵盖了身份验证、仪表板查询、警报管理、案例管理、playbook、AI 洞察、用户管理、安全(honeytokens、2FA)、日志审查、基准测试和外部日志接入。
- **WebSocket 广播**:连接管理器(`app/websocket.py`)维护着一组已连接的分析师客户端。每条处理过的日志、警报和 Sigma 匹配都会实时广播——新的检测结果会立即显示在仪表板上,无需轮询。
- **Redis 缓存**:威胁情报结果、LLM 响应和会话序列都被缓存在 Redis 中,并具有可配置的 TTL。IP 信誉查询使用 24 小时的缓存窗口;LLM 响应默认为 1 小时。
- **PostgreSQL + TimescaleDB**:所有日志、警报、案例、playbook、用户、honeytoken、模型指标和审计追踪都存储在 PostgreSQL 中。Schema 由 Alembic 迁移管理(跟踪了 8 个版本)。可选的双写到 Elasticsearch 以实现大规模的全文搜索。
- **速率限制**:通过 `slowapi` 对登录和 API endpoint 进行速率限制(认证 endpoint 上为 5 次请求/分钟/IP),以防止暴力破解攻击。
- **安全 Headers 中间件**:每个响应都包含 `X-Frame-Options: DENY`、`X-Content-Type-Options: nosniff`、`Referrer-Policy`、`Permissions-Policy` 以及限制性的 `Content-Security-Policy`。
### 领域 4:自动化响应
**SOAR Playbook**
当满足警报条件时,自动化响应 playbook 会执行防御性操作,而无需分析师干预。
支持的操作:
- `block_ip_ufw` — 在防火墙级别拦截恶意 IP,持续时间可配置
- `send_slack_alert` — 通过 webhook 向 SOC 团队频道发送实时通知
- `send_email_alert` — 向可配置的收件人发送电子邮件通知
- `create_case` — 根据高危警报自动创建调查案例
- `run_script` — 执行自定义响应脚本
Playbook 触发器使用带有运算符(`>=`、`<=`、`==`、`!=`、`contains`、`regex`)的 JSON 条件定义:
```
{
"name": "Block High-Risk External IPs",
"trigger_conditions": {
"risk_score": {"operator": ">=", "value": 0.85}
},
"actions": [
{"action": "block_ip_ufw", "duration_hours": 24},
{"action": "send_slack_alert", "channel": "#soc-critical"}
],
"is_active": true
}
```
**LLM 辅助威胁情报**
LogRKSha 集成了 6 种 LLM 提供商(Gemini、Groq、Mistral、OpenRouter、Together AI、Ollama),具备自动故障转移、速率限制冷却和 Redis 缓存响应功能:
- **事件总结** — 警报集群的执行摘要
- **趋势分析** — 对异常激增的自然语言解释
- **修复建议** — 基于警报上下文、威胁情报和 MITRE 映射的上下文感知响应步骤
- **Playbook 生成** — 用自然语言描述所需行为;系统会生成结构化的 JSON playbook
有关提供商配置,请参阅 [LLM_SETUP.md](LLM_SETUP.md)。
**Honeytoken 欺骗**
将诱饵凭证(AWS 密钥、数据库凭证、API token)部署到受监控的日志路径中。当 honeytoken 被访问时,worker 会将风险得分强制设为 `1.0`,生成高危警报,并触发所有关联的 playbook。Honeytoken 通过安全仪表板进行管理,具有完整的创建/删除/状态控制功能。
**案例管理**
调查案例将相关的警报分组到一个单一的跟踪单元中:
- 完整的 CRUD 功能,支持警报的关联/解除关联
- 优先级级别:低、中、高、严重
- 状态工作流:待处理 → 处理中 → 已解决 → 已关闭
- 分析师分配和审计追踪
欢迎贡献力量。有关提交 issue 和 pull request 的指南,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
本项目基于 MIT 许可证授权。详情请参阅 [LICENSE](LICENSE)。
核心功能
### 领域 1:接入与代理 监控进程 (`scripts/monitor.py`) 是系统的耳朵——这是一个多线程 daemon,负责追踪所有已配置的日志源,并通过 HTTP 批处理将日志行发送到处理 pipeline。 - **Syslog & Journald**:专用线程使用 `python-systemd` 实时读取 systemd journal,捕获所有内核、服务和身份验证事件。平面日志文件(`/var/log/auth.log`、`/var/log/kern.log` 等)使用 `watchdog` 文件系统观察器进行监控,该观察器由 `inotify` 修改事件触发。 - **Zeek 网络日志**:Zeek 的制表符分隔日志(`conn.log`、`dns.log`、`http.log`、`ssl.log`、`x509.log`、`weird.log`、`notice.log`、`files.log`)通过 `watchdog` 观察器和并行的轮询线程(3 秒间隔)接入,以增强弹性。定期的健康检查线程每 5 分钟监控一次 Zeek 文件的修改时间。 - **HTTP 日志传输器**:接入的日志行会被分批(每个请求最多 50 条),并通过带有 API 密钥身份验证的 HTTP 传输到 FastAPI 接入 endpoint(`/api/ingest/logs`)。这将监控器与处理 worker 解耦,并实现了远程日志收集。 - **RabbitMQ 持久化队列**:接入 endpoint 将每条日志推送到持久化的 RabbitMQ 队列(`log_queue`,`durable=True`),并设置 `delivery_mode=2`(持久化消息)。worker 进程以 `prefetch_count=1` 和手动确认的方式从该队列中拉取数据,确保即使在崩溃期间也不会丢失消息。 - **去重**:每行日志都会进行 SHA-256 哈希处理。已知哈希存储在磁盘(`kwnhashes.txt`)上,并在处理前进行检查,从而消除冗余分析。 ### 领域 2:混合检测引擎 在 worker(`scripts/worker.py`)中,每行日志都会经过多个检测层。对于标准的 syslog,所有层按顺序运行。对于 Zeek 网络日志,由专门的引擎独立处理分析。 **Sigma 规则引擎(确定性)** 自定义解析器(`scripts/sigma_engine.py`)根据传入的日志加载并匹配 YAML Sigma 规则。支持具有优先加载、从检测块中提取关键字、字段级条件和类别标记的自定义规则。规则按平台(Linux、Network、Web)组织,来源于 [SigmaHQ](https://github.com/SigmaHQ/sigma) 仓库。 ``` # 示例:用于 SSH 暴力破解检测的自定义规则 title: SSH Brute Force Attempt status: stable level: high detection: selection: - "Failed password" - "authentication failure" condition: selection ``` **语义分析(SentenceTransformer + SGD 分类器)** 使用基于 BERT 的 SentenceTransformer(`all-MiniLM-L6-v2`)将日志行编码为 384 维的稠密向量 embedding。在标记数据上训练的 SGD 分类器提供有监督的异常分类,风险得分由预测置信度得出。 **无监督异常检测(TensorFlow Autoencoder)** Keras autoencoder 在训练期间学习日志 embedding 的“正常”分布。在推理阶段,重建误差高的日志(即模型从未见过的模式)会被标记为 `Novelty Detected`。这是 **零日漏洞检测** 的主要机制。 **行为序列分析(LSTM)** 20 步的滚动会话窗口保存在 Redis 中,以 IP 地址、用户名或进程 ID 为键。LSTM 模型评估当前的动作序列是否符合历史模式。能够捕获在孤立状态下看起来正常的横向移动、提权和暴力破解序列。 **Zeek 网络分析引擎** 专用的 ML 引擎(`scripts/zeek_ml_engine.py`),针对每个协议配有专门的分析器: | 协议 | 分析能力 | |:--|:--| | DNS | 通过 Shannon 熵进行 DGA 检测,查询长度分析,可疑 TLD 识别 | | Connection | 端口扫描检测,长连接标记,连接状态评分 | | HTTP | SQL 注入模式,XSS 检测,路径遍历检查,可疑 user-agent 评分 | | SSL | 过期证书检测,弱密码套件识别,自签名证书标记 | | Alerts | Zeek 自身的 `weird.log` 和 `notice.log` 解析及风险评分 | **检测后丰富** - **MITRE ATT&CK 映射**:通过基于关键字的规则匹配(`attack_mapping.json`),将每个异常与 ATT&CK 战术和技术进行匹配。 - **可解释 AI(LIME)**:使用 LIME 生成每条日志的特征重要性分解,并在仪表板中呈现为可视化条形图,以便分析师准确查看哪些 token 对分类做出了贡献。 - **AbuseIPDB 威胁情报**:包含 IP 地址的异常日志会触发实时信誉检查。结果(滥用置信度得分、ISP、国家、总报告数)在 Redis 中缓存 24 小时,以尽量减少 API 调用。 - **GeoIP 解析**:MaxMind GeoIP2 数据库将源 IP 和目标 IP 映射到地理坐标,用于交互式威胁地图。
### 领域 3:实时后端
FastAPI 后端(`app/main.py`)为分析师仪表板、REST API 和实时事件流提供服务。
- **异步路由**:11 个模块化 API 路由涵盖了身份验证、仪表板查询、警报管理、案例管理、playbook、AI 洞察、用户管理、安全(honeytokens、2FA)、日志审查、基准测试和外部日志接入。
- **WebSocket 广播**:连接管理器(`app/websocket.py`)维护着一组已连接的分析师客户端。每条处理过的日志、警报和 Sigma 匹配都会实时广播——新的检测结果会立即显示在仪表板上,无需轮询。
- **Redis 缓存**:威胁情报结果、LLM 响应和会话序列都被缓存在 Redis 中,并具有可配置的 TTL。IP 信誉查询使用 24 小时的缓存窗口;LLM 响应默认为 1 小时。
- **PostgreSQL + TimescaleDB**:所有日志、警报、案例、playbook、用户、honeytoken、模型指标和审计追踪都存储在 PostgreSQL 中。Schema 由 Alembic 迁移管理(跟踪了 8 个版本)。可选的双写到 Elasticsearch 以实现大规模的全文搜索。
- **速率限制**:通过 `slowapi` 对登录和 API endpoint 进行速率限制(认证 endpoint 上为 5 次请求/分钟/IP),以防止暴力破解攻击。
- **安全 Headers 中间件**:每个响应都包含 `X-Frame-Options: DENY`、`X-Content-Type-Options: nosniff`、`Referrer-Policy`、`Permissions-Policy` 以及限制性的 `Content-Security-Policy`。
### 领域 4:自动化响应
**SOAR Playbook**
当满足警报条件时,自动化响应 playbook 会执行防御性操作,而无需分析师干预。
支持的操作:
- `block_ip_ufw` — 在防火墙级别拦截恶意 IP,持续时间可配置
- `send_slack_alert` — 通过 webhook 向 SOC 团队频道发送实时通知
- `send_email_alert` — 向可配置的收件人发送电子邮件通知
- `create_case` — 根据高危警报自动创建调查案例
- `run_script` — 执行自定义响应脚本
Playbook 触发器使用带有运算符(`>=`、`<=`、`==`、`!=`、`contains`、`regex`)的 JSON 条件定义:
```
{
"name": "Block High-Risk External IPs",
"trigger_conditions": {
"risk_score": {"operator": ">=", "value": 0.85}
},
"actions": [
{"action": "block_ip_ufw", "duration_hours": 24},
{"action": "send_slack_alert", "channel": "#soc-critical"}
],
"is_active": true
}
```
**LLM 辅助威胁情报**
LogRKSha 集成了 6 种 LLM 提供商(Gemini、Groq、Mistral、OpenRouter、Together AI、Ollama),具备自动故障转移、速率限制冷却和 Redis 缓存响应功能:
- **事件总结** — 警报集群的执行摘要
- **趋势分析** — 对异常激增的自然语言解释
- **修复建议** — 基于警报上下文、威胁情报和 MITRE 映射的上下文感知响应步骤
- **Playbook 生成** — 用自然语言描述所需行为;系统会生成结构化的 JSON playbook
有关提供商配置,请参阅 [LLM_SETUP.md](LLM_SETUP.md)。
**Honeytoken 欺骗**
将诱饵凭证(AWS 密钥、数据库凭证、API token)部署到受监控的日志路径中。当 honeytoken 被访问时,worker 会将风险得分强制设为 `1.0`,生成高危警报,并触发所有关联的 playbook。Honeytoken 通过安全仪表板进行管理,具有完整的创建/删除/状态控制功能。
**案例管理**
调查案例将相关的警报分组到一个单一的跟踪单元中:
- 完整的 CRUD 功能,支持警报的关联/解除关联
- 优先级级别:低、中、高、严重
- 状态工作流:待处理 → 处理中 → 已解决 → 已关闭
- 分析师分配和审计追踪
架构与数据流
 ``` graph TD subgraph "Ingestion Layer" A[System Logs - Journald/Syslog] B[Network Logs - Zeek] C[Monitor Process] end subgraph "Message Bus" D{RabbitMQ} end subgraph "Core Processing - Worker" E[Worker - Decision Engine] subgraph "Detection Modules" F[Sigma Rule Engine] G[Semantic ML - Autoencoder] H[Sequential ML - LSTM] Z[Zeek ML Engine] end I[Redis - Session Cache] J[PostgreSQL - Storage] K[AbuseIPDB - Threat Intel] end subgraph "Response and UI" L[FastAPI Backend] M[SOC Dashboard] N[Playbooks - UFW / Slack] end A --> C B --> C C --> D D --> E E --> F E --> G E --> H E --> Z E <--> I E --> J E <--> K E --> L L --> M E --> N ``` ### 日志是如何从 `/var/log` 传送到浏览器的 1. **追踪** — `monitor.py` daemon 通过 `watchdog` inotify 事件(对于 journald 则使用 systemd journal 读取器,对于 Zeek 日志则使用轮询)检测到受监控日志文件中的新行。 2. **本地排队** — 该行被放入一个线程安全的 `queue.Queue()` 中,并带有其源文件名。 3. **通过 HTTP 传输** — HTTP 传输线程以最多 50 条为一批排空队列,将它们作为 JSON payload 发送到 `POST /api/ingest/logs`,并带有 `X-API-Key` header。 4. **在 RabbitMQ 中排队** — 接入 endpoint 检查 honeytoken,并将每条日志作为持久化消息发布到 `log_queue` 持久化队列。 5. **消费与去重** — `worker.py` 进程每次拉取一条消息(`prefetch_count=1`),对它们进行 SHA-256 哈希处理,并跳过任何以前见过的日志。 6. **检测** — 日志依次经过:Sigma 规则匹配 → SentenceTransformer embedding → SGD 有监督分类 → Autoencoder 重建误差 → LSTM 序列风险评分。对于 Zeek 日志,由专门的网络引擎处理分析。 7. **丰富** — 如果出现异常,worker 会提取 IP,查询 AbuseIPDB(Redis 缓存),映射到 MITRE ATT&CK,并生成 LIME 解释。 8. **存储** — 结果将写入 PostgreSQL(可选的 Elasticsearch 双写)。如果出现异常,会在 `alerts` 表中创建一个警报行。 9. **响应** — 根据警报评估活动的 playbook。匹配的 playbook 执行其操作(UFW 拦截、Slack 通知、案例创建)。 10. **广播** — 完整的 payload(日志、判定、风险得分、警报信息、MITRE 数据)通过 `POST` 请求发送到 FastAPI WebSocket 广播器,广播器会将其推送到每个已连接的分析师仪表板,实现实时显示。快速开始与安装说明
### 前置条件 | 要求 | 说明 | |:--|:--| | **Python 3.11+** | 在 3.11 上开发和测试 | | **Docker & Docker Compose** | 用于基础设施服务(PostgreSQL、Redis、RabbitMQ) | | **libsystemd-dev + pkg-config** | 在 Linux 上进行 systemd journal 访问所必需 | | **Zeek** | 可选 — 仅在需要进行网络日志分析时才需要 | | **sudo 权限** | 读取系统日志和管理 UFW 规则所必需 | ### 1. 克隆并配置环境 ``` git clone https://github.com/cyberRKSha/LogRKSha.git cd LogRKSha # 安装系统依赖 sudo apt update && sudo apt install -y libsystemd-dev pkg-config # 创建并激活 Python 虚拟环境 python3.11 -m venv venv-s source venv-s/bin/activate pip install --upgrade pip pip install -r requirements.txt ``` ### 2. 配置环境变量 ``` cp .env.example .env # 编辑 .env 并填写所需的值(参见 Configuration Reference 部分) ``` ### 3. 启动基础设施 ``` docker compose up -d ``` 这将启动 **TimescaleDB** (PostgreSQL)、**RabbitMQ**(带有管理 UI)和 **Redis**。 ### 4. 执行数据库迁移 ``` alembic upgrade head ``` ### 5. 创建第一个管理员用户 ``` python scripts/create_user.py ``` ### 6. 启动所有服务 ``` # 选项 A:使用 Honcho(从 Procfile 启动 worker + monitor) ./run.sh # 选项 B:单独启动 web 服务器 python run.py ``` Web 服务器在 **http://.0.0.1:8000** 启动。`run.sh` 脚本会激活虚拟环境,并使用 Honcho 启动检测 worker 和日志监控器。系统可能会提示您输入 sudo 密码(监控器需要 root 权限才能访问系统日志)。配置参考
所有配置均通过 `.env` 进行管理,并通过 Pydantic Settings(`app/config.py`)加载。 | 变量 | 必需 | 说明 | |:--|:--:|:--| | `SECRET_KEY` | ✅ | JWT 签名密钥 — 使用 `python3 -c "import secrets; print(secrets.token_hex(32))"` 生成 | | `ALGORITHM` | ✅ | JWT 算法(默认:`HS256`) | | `DATABASE_URL` | ✅ | PostgreSQL 连接字符串(例如:`postgresql://user:pass@localhost:5432/dbname`) | | `RABBITMQ_HOST` | ✅ | RabbitMQ 主机(默认:`localhost`) | | `REDIS_HOST` | ✅ | Redis 主机(默认:`localhost`) | | `REDIS_PORT` | ✅ | Redis 端口(默认:`6379`) | | `LOG_FILES_STR` | ✅ | 要监控的日志文件的逗号分隔列表 | | `DASHBOARD_URL` | ✅ | FastAPI 服务器的 URL(默认:`http://127.0.0.1:8000`) | | `SEQUENCE_LEN` | ✅ | LSTM 序列窗口长度(默认:`20`) | | `SIMILARITY_THRESHOLD` | ✅ | embedding 相似度阈值(默认:`0.95`) | | `ABUSEIPDB_API_KEY` | — | 用于威胁情报丰富的 AbuseIPDB API 密钥 | | `SLACK_WEBHOOK_URL` | — | 用于 playbook 通知的 Slack webhook | | `GEMINI_API_KEY` | — | Google Gemini 密钥(参见 [LLM_SETUP.md](LLM_SETUP.md)) | | `GROQ_API_KEY` | — | Groq 密钥(备选 LLM 提供商) | | `LLM_DEFAULT_PROVIDER` | — | 首选 LLM 提供商(默认:`gemini`) | | `ENVIRONMENT` | — | `development` 或 `production` | 至少需要一个 LLM 提供商的 API 密钥才能启用 AI 功能。所有列出的提供商都提供免费层级。有关所有 6 种受支持的提供商,请参阅 [LLM_SETUP.md](LLM_SETUP.md)。仪表板与数据可视化
分析师仪表板是一个使用原生 JavaScript(ES6 模块)构建并由 FastAPI 通过 Jinja2 模板提供的单页应用。 - 通过 WebSocket 流进行**实时日志推送** — 新的检测结果会立即显示,无需轮询 - 使用 Leaflet.js 和 MaxMind GeoIP 数据的**地理威胁地图**,在交互式世界地图上标绘攻击来源 - 带有状态转换(新建 → 已确认 → 已关闭)、分析师备注和案例关联的**警报管理面板** - **交互式图表**(Chart.js):历史趋势分析、警报严重性细分、会话风险评分、模型漂移检测 - **日志搜索**,支持全文和基于字段的过滤,由 PostgreSQL 提供支持(带有可选的 Elasticsearch 集成) - 显示随时间变化的模型性能指标的**训练统计** - 直接从仪表板触发**模型重训练**(仅限管理员) - **日志审查系统**:基于 DBSCAN 的集群审查用于批量标记,以及手动逐条日志审查用于优化模型准确性
身份验证与访问控制
### 用户角色 | 角色 | 仪表板 | 审查日志 | 案例与警报 | 用户管理 | 模型重训练 | 创建方式 | |:--|:--:|:--:|:--:|:--:|:--:|:--| | **Admin** | ✅ | ✅ | ✅ | ✅ | ✅ | 初始设置 / Admin API | | **Analyst** | ✅ | ✅ | ✅ | ❌ | ❌ | 由 Admin 创建 | | **Viewer** | ✅(只读) | ❌ | ❌ | ❌ | ❌ | 登录页面自助注册 | ### 双门户登录 - **标准登录** — 供 Analyst 和 Viewer 账户使用 - **管理门户** — 带有独特红色主题 UI 的独立模态框。只有管理员角色的用户才能通过认证;非管理员凭证将被拒绝。管理员账户被禁止使用标准登录表单。 ### 双因素认证 (2FA) - 通过 `pyotp` 进行基于 TOTP(基于时间的一次性密码)的认证 - 二维码注册兼容 Google Authenticator、Authy 和任何 TOTP 应用 - 启用 2FA 登录会生成一个临时的 `pre-2fa` JWT token(5 分钟有效期),在签发完整的会话 token 之前重定向到代码验证 ### 安全措施 - 位于 HTTP-only、SameSite-strict cookies 中的 JWT token(在生产环境中使用 secure 标志) - 登录 endpoint 上的速率限制(5 次请求/分钟/IP) - 通过 bcrypt 进行密码哈希处理,并自动生成 salt - 对所有身份验证事件(包括时间戳、IP 和结果)进行完整的审计日志记录 - 防止管理员账户自删研究与基线
`experiments/` 目录包含已建立的日志异常检测论文的参考实现,用于对 LogRKSha 的混合方法进行基准测试: | 文件 | 论文 / 方法 | 说明 | |:--|:--|:--| | `deeplog_baseline.py` | **DeepLog** | 基于 LSTM 的日志键预测模型 | | `logbert_baseline.py` | **LogBERT** | 基于 BERT 的掩码日志键预测模型 | | `evaluate.py` | 评估框架 | 跨所有方法的标准化指标比较(准确性、F1、精确率、召回率) | | `hybrid_hdfs_pipeline.py` | 混合 Pipeline | 在 HDFS 数据集上测试的组合 autoencoder + 有监督 + 序列方法 | 这些实现作为衡量混合检测引擎性能的基准。结果以 CSV 文件的形式写入 `results/`。技术栈
| 组件 | 技术 | |:--|:--| | 语言 | Python 3.11 | | 后端 API | FastAPI(异步)、SQLAlchemy ORM、Pydantic | | 深度学习 | TensorFlow/Keras(Autoencoder、LSTM)、SentenceTransformers(BERT) | | 经典机器学习 | scikit-learn(SGD、IsolationForest、DBSCAN、StandardScaler) | | 规则引擎 | 自定义 Sigma 解析器(YAML) | | 可解释性 | LIME(Local Interpretable Model-agnostic Explanations) | | 数据库 | PostgreSQL 14(TimescaleDB)、Alembic 迁移 | | 缓存 / 会话 | Redis | | 消息队列 | RabbitMQ | | 前端 | 原生 JavaScript(ES6 模块)、Chart.js、Leaflet.js | | 进程管理器 | Honcho | | 身份验证 | python-jose(JWT)、pyotp(TOTP 2FA)、bcrypt | | 威胁情报 | AbuseIPDB API、MaxMind GeoIP2 | | 网络分析 | Zeek | | LLM 集成 | Gemini、Groq、Mistral、OpenRouter、Together AI、Ollama | | 测试 | pytest、GitHub Actions CI |📁 项目结构
``` LogRKSha/ ├── app/ # FastAPI application │ ├── api/ # Route handlers (11 modules) │ │ ├── auth.py # Authentication (login, 2FA, logout) │ │ ├── dashboard.py # Dashboard endpoints, search, alerts, charts │ │ ├── cases.py # Case management CRUD │ │ ├── playbooks.py # Playbook CRUD + LLM generation │ │ ├── review.py # Cluster review, manual review, noise logs │ │ ├── ai.py # LLM-powered insights API │ │ ├── security.py # Honeytoken management, 2FA setup │ │ ├── users.py # User management (admin only) │ │ ├── ingest.py # External log ingestion + RabbitMQ producer │ │ └── benchmark.py # Model benchmarking │ ├── services/ # Business logic services │ │ ├── llm_service.py # Multi-provider LLM with failover + caching │ │ ├── cache.py # Redis cache wrapper │ │ ├── honeytoken.py # Honeytoken detection service │ │ └── es_client.py # Elasticsearch client (optional) │ ├── static/ # CSS (6 files), JavaScript (16 ES6 modules), audio │ ├── templates/ # Jinja2 HTML templates (7 pages) │ ├── config.py # Pydantic settings (loads .env) │ ├── db_models.py # SQLAlchemy ORM models │ ├── main.py # FastAPI app factory + middleware │ ├── websocket.py # WebSocket connection manager + broadcaster │ ├── auth_utils.py # JWT creation/verification + 2FA utilities │ ├── audit.py # Audit logging service │ └── rate_limiter.py # Request rate limiting ├── scripts/ # Background processes & utilities │ ├── worker.py # Detection worker (RabbitMQ consumer, 788 lines) │ ├── monitor.py # Log monitor (HTTP shipper + Zeek integration) │ ├── sigma_engine.py # Sigma rule parser and matcher │ ├── zeek_ml_engine.py # Zeek network log ML engine (protocol-specific) │ ├── playbooks.py # Playbook action executor (UFW, Slack) │ ├── att_sim.py # Attack simulation tool │ ├── auto_trainer.py # Automated model retraining pipeline │ ├── create_user.py # Interactive user creation utility │ └── validate_detection.py # Detection validation framework ├── experiments/ # Research baselines (DeepLog, LogBERT) ├── sigma-rules/ # Sigma detection rules (YAML, SigmaHQ) ├── alembic/ # Database migration scripts (8 versions) ├── tests/ # Pytest test suite (10 files) ├── model/ # Trained model artifacts (gitignored) ├── .github/workflows/ # CI pipeline (python-ci.yml) ├── docker-compose.yml # TimescaleDB, RabbitMQ, Redis ├── Procfile # Honcho process definitions ├── run.sh / run.py # System launch scripts ├── requirements.txt # Python dependencies ├── .env.example # Environment variable template └── LLM_SETUP.md # LLM provider configuration guide ```测试与模拟
### 运行测试套件 ``` pytest ``` CI pipeline(`.github/workflows/python-ci.yml`)会在每次向 `master` 分支进行 push 和 pull request 时运行完整的测试套件。 ### 攻击模拟 本项目包含一个模拟工具,可生成真实的攻击模式以进行端到端验证: ``` # 运行暴力破解模拟 python scripts/att_sim.py --scenario brute_force # 运行端口扫描模拟 python scripts/att_sim.py --scenario port_scan ``` 模拟攻击会流经完整的 pipeline(监控器 → RabbitMQ → worker → 检测 → 警报)并显示在仪表板上,从而允许对检测和响应系统进行完整验证。标签:Apex, 威胁情报, 安全运营, 开发者工具, 异常检测, 扫描框架, 搜索引擎查询, 机器学习, 测试用例, 逆向工具