PadanFain/edl_manager
GitHub: PadanFain/edl_manager
EDL Manager 是运行在 Splunk 上的 IOC 生命周期管理应用,解决外部动态列表在生产环境中的自动过期、馈送生成与审计难题。
Stars: 0 | Forks: 0
# EDL Manager — Splunk 应用
**外部动态列表(EDL)管理器** 是一个生产级的 Splunk 应用,提供
完整的 IOC 生命周期管理 UI、策略驱动的过期控制、防火墙就绪的 EDL
Feed API、STIX/TAXII 2.1 摄入、CSV 批量导入、地理攻击映射、活动聚类,
以及完整的审计追踪。
适用于 **Splunk Enterprise 9.0+** 和 **Splunk Cloud**。
## 快速开始
```
# 将应用程序复制到 Splunk
cp -r edl_manager/ $SPLUNK_HOME/etc/apps/
# 重启 Splunk
$SPLUNK_HOME/bin/splunk restart
# 构建 React UI(需要 Node 18+)
cd $SPLUNK_HOME/etc/apps/edl_manager/appserver/static/js
npm install && npm run build
# 打开应用程序
# https://localhost:8000/en-US/app/edl_manager/edl_manager
```
## 架构
```
TAXII 2.1 feeds ─┐
CSV bulk import ─┤
Manual UI entry ─┤─→ ioc_entries (KV Store) ─→ edl_active_export.csv
SPL macros ─┘ ↓
Firewall EDL feed
(plain text, one IOC/line)
```
**存储**:KV Store 用于 CRUD操作,物化 CSV 用于防火墙读取(避免每次轮询的 REST 开销)。计划搜索每 5 分钟刷新一次 CSV。
## 功能
- **IOC 生命周期** — 创建、过期、批量启用/禁用(策略驱动的 TTL)
- **防火墙 Feed** — ETag/304 缓存、EDLToken 认证、速率限制、优先级规则
- **TAXII 2.1** — STIX 2.1 模式解析器、基于游标的增量轮询
- **冲突检测** — 相同值的阻断/允许冲突,可配置解析策略
- **批量导入** — 带列别名检测的 CSV、每行验证、去重
- **攻击地图** — 使用 D3 的地球仪展示 IOC 命中地理弧线
- **活动聚类** — /24 子网和国家分组、置信度评分
- **审计日志** — 所有创建/更新/删除事件的不可变追踪
- **令牌管理** — 用于防火墙服务账户的长生命周期 EDLToken API 令牌
## 防火墙集成
**企业版:**
```
GET /servicesNS/nobody/edl_manager/edl_manager/feed?format=text&type=ip&list_type=block
Authorization: EDLToken
```
**Splunk Cloud:**
```
GET /servicesNS/nobody/edl_manager/data/lookup-table-files/edl_feed_block_ip.csv
Authorization: Splunk
```
## 要求
| 组件 | 版本 |
|-------|-------|
| Splunk Enterprise | 9.0+ |
| Python | 3.7+(随 Splunk 9.x 捆绑) |
| Node.js | 18+(仅构建时) |
| npm | 9+(仅构建时) |
## 安装说明
请参阅 `local/README.md` 获取操作员配置(功能、防火墙 SourceType、TAXII 凭证加固)。
安装后,在添加 IOC 之前创建默认策略:
```
curl -k -u admin:PASS -X POST -H "Content-Type: application/json" \
-d '{"name":"default","description":"Default policy","list_type_default":"block","auto_disable_on_expiry":true}' \
"https://localhost:8089/servicesNS/nobody/edl_manager/edl_manager/policies"
```
## 开发
```
# 观看模式
cd appserver/static/js && npm run dev
# 生产构建
npm run build
```
要添加新的 IOC 字段:更新 `_validate_ioc()` 在 `edl_base_handler.py` 中,
`fields_list` 在 `transforms.conf` 中,`validateIOCRow()` 在 `csvParser.js` 中,
`IOCForm.jsx` 和 `IOCTable.jsx`。
标签:CSV批量导入, D3地理可视化, EDLToken认证, EDL管理, ETag缓存, IOC生命周期管理, KV存储, MITM代理, SEO: IOC管理, SEO: Splunk应用, SEO: TAXII, SEO: 地理攻击映射, SEO: 防火墙馈送, Splunk Cloud, Splunk Enterprise, Splunk应用, STIX, TAXII 2.1, 优先级规则, 冲突检测, 地理攻击映射, 外部动态列表, 审计日志, 技术栈: CSV, 技术栈: D3, 技术栈: JavaScript, 技术栈: KV Store, 技术栈: Node 18, 技术栈: React UI, 攻击地图, 竞选聚类, 策略驱动过期控制, 逆向工具, 防火墙EDL馈送