返回首页

Shuffle+TheHive:开源SOAR安全编排自动化实战

+:开源安全编排自动化实战

一、为什么需要SOAR?

在现代安全运营中心()中,安全团队每天面对海量告警,手动处理效率极低。安全编排、自动化与响应(SOAR)平台能够将安全工具串联成自动化工作流,大幅提升事件响应速度。商业SOAR方案如Splunk SOAR(原Phantom)年费5万美元起,Palo Alto XSOAR年费7.5万美元起,IBM Resilient同样价格不菲。对于预算有限的中小团队,开源方案是更现实的选择。

本文将手把手带你搭建基于Shuffle和TheHive的开源SOAR平台,实现从告警接收到自动化响应的完整闭环。整个方案零成本,仅需一台4核8GB内存的服务器即可运行。

二、付费工具定价对比

工具 厂商 年费(估算) 核心能力 预置剧本数
Splunk SOAR Splunk $50,000+ 可视化编排、500+集成、自动化响应 300+
XSOAR Palo Alto $75,000+ 统一平台、威胁情报管理、多租户 700+
IBM Resilient IBM $30,000+ 事件管理、合规报告、与QRadar集成 150+
Shuffle(开源) 社区 $0 可视化工作流、Webhook触发、App集成 100+(社区)
TheHive(开源) StrangeBee $0(社区版) 事件管理、案例协作、告警去重 N/A

可以看到,商业方案年费在3万到7.5万美元之间,而Shuffle+TheHive完全免费,功能覆盖了80%以上的常见场景。企业级方案的核心溢价在于预置剧本数量(XSOAR拥有700+预置剧本)、多租户支持、合规报告模板以及7x24商业技术支持。

三、Shuffle实战部署

3.1 环境准备

首先确保系统已安装Docker和Docker Compose:

# Ubuntu/Debian
sudo  
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER
# 重新登录使docker组生效

3.2 Docker一键安装Shuffle

# 克隆Shuffle仓库
git clone https://github.com/Shuffle/Shuffle.git
cd Shuffle

# 启动所有服务(前端、后端、数据库、Orborus Worker)
docker compose up -d

# 查看服务状态
docker compose ps

# 查看日志确认启动成功
docker compose logs -f --tail=50 backend

启动约需2-3分钟,所有容器Running后访问 http://your-ip:3001 进入管理界面。首次访问需要注册管理员账号。

3.3 配置第一个告警转发工作流

登录Shuffle后,按以下步骤创建自动化工作流:

步骤一:创建Webhook触发器

  • 点击"Create ",命名为"-Forwarder"
  • 从左侧拖入Trigger节点,选择Webhook类型
  • 记录生成的Webhook URL,格式为:http://your-ip:3001/api/v1/hooks/<uuid>

步骤二:添加条件分支

  • 拖入条件节点(Condition),设置判断逻辑
  • 高危告警(severity=high/critical)走自动化处置分支
  • 低危告警走通知分支

步骤三:配置响应动作

  • 高危分支:调用TheHive 创建Case
  • 通知分支:通过Email/Slack发送告警摘要
  • 所有分支:将告警写入日志存档

步骤四:测试触发

curl -X POST http://your-shuffle:3001/api/v1/hooks/YOUR_HOOK_ID \
  -H "Content-Type: application/json" \
  -d '{
    "alert_name": "暴力破解检测",
    "src_ip": "192.168.1.100",
    "severity": "high",
    "count": 1500,
    "timestamp": "2024-01-15T10:30:00Z"
  }'

3.4 Shuffle核心配置优化

编辑docker-compose.yml中的环境变量进行调优:

environment:
  - SHUFFLE_APP_HOTLOAD_LOCATION=/shuffle-apps  # App加载目录
  - ORBORUS_CONTAINER_LOCATION=docker            # Worker容器运行时
  - SHUFFLE_BASE_URL=http://your-ip:3001         # 基础URL
  - TZ=Asia/Shanghai                              # 时区设置
  - SHUFFLE_ORBORUS_ENV=SHUFFLE_APP_HOTLOAD_LOCATION=/shuffle-apps
  - CLEANUP=true                                  # 自动清理旧执行记录

在Shuffle App Store中可以搜索并安装数百个社区开发的集成App,包括VirusTotal、AbuseIPDB、CrowdStrike、Okta等常见安全工具的连接器。

四、TheHive实战部署

4.1 Docker部署TheHive 5

TheHive 5需要Cassandra和Elasticsearch作为后端。创建专用目录和配置文件:

mkdir -p ~/thehive && cd ~/thehive

编写docker-compose.yml,包含三个核心服务:

Elasticsearch 7.17:全文搜索引擎,用于告警和案例的快速检索。配置单节点模式(discovery.type=single-node),JVM堆内存设为1GB。

Cassandra 4.1:分布式数据库,存储TheHive的结构化数据(告警、案例、任务、Observable)。集群名称设为thehive。

TheHive 5.2:核心应用服务,通过JanusGraph连接Cassandra和Elasticsearch。配置HTTP密钥用于会话加密。

docker compose up -d

首次启动需要等待约3-5分钟进行数据库初始化。访问 http://your-ip:9000,使用默认账号登录:

重要:首次登录后立即修改默认密码!

4.2 TheHive核心概念

TheHive的数据模型包含以下关键实体:

  • Alert(告警):来自外部安全设备的原始告警,可自动去重
  • Case(案例):由告警转化而来,是安全事件的完整记录
  • Task(任务):案例下的调查子任务,可分配给不同分析师
  • Observable(可观测对象):IOC指标,如IP、域名、文件哈希

4.3 通过API创建告警

curl -X POST http://your-thehive:9000/api/v1/alert \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "ssh-bruteforce",
    "source": "fail2ban",
    "sourceRef": "fb-20240115-001",
    "title": "SSH暴力破解 - 源IP 192.168.1.100",
    "description": "检测到来自192.168.1.100的持续SSH暴力破解攻击,15分钟内尝试1500次登录",
    "severity": 3,
    "tlp": 2,
    "pap": 2,
    "tags": ["ssh", "bruteforce", "internal", "fail2ban"],
    "observables": [
      {"dataType": "ip", "": "192.168.1.100", "message": "攻击源IP"},
      {"dataType": "user-", "data": "libssh_0.9.6", "message": "攻击工具指纹"}
    ]
  }'

在TheHive Web界面中,点击告警列表中的告警,可以:

  1. 查看详情和关联Observable
  2. 点击"Import as Case"将告警升级为案例
  3. 为案例分配任务和负责人
  4. 添加分析笔记和取证证据

4.4 Shuffle与TheHive深度集成

实现自动化的告警富化和响应工作流:

工作流一:自动IOC富化

  • TheHive告警触发Webhook -> Shuffle接收
  • 提取告警中的IP/域名/哈希
  • 并行调用VirusTotal、AbuseIPDB、Shodan查询
  • 将富化结果写回TheHive告警描述

工作流二:高危告警自动升级

  • 条件判断severity >= 3 且富化结果恶意评分 > 80
  • 自动将告警导入为Case
  • 自动创建调查任务
  • 通过Slack通知值班分析师

配置Shuffle中的TheHive App连接参数:

  • TheHive URL:http://thehive:9000(Docker内部网络)
  • API Key:在TheHive -> 用户设置 -> API Keys中生成
  • 组织:默认为default

五、功能对比总结

功能维度 Splunk SOAR XSOAR Shuffle+TheHive
可视化工作流编辑器 有(Shuffle拖拽式)
预置集成数量 500+ 700+ 200+(社区贡献)
事件/案例管理 有(TheHive完整支持)
告警自动去重 有(基于type+sourceRef)
威胁情报集成 原生支持 原生支持 需手动配置App
多租户支持 无(社区版限制)
合规报告模板 SOC2/ISO27001 SOC2/ISO27001/PCI-DSS 无(需自建模板)
技术支持 7x24商业 7x24商业 Discord社区/GitHub Issues
自定义脚本支持 Python Python(原生支持)
部署复杂度 中等(需专业服务) 中等 低(Docker一键部署)
总拥有成本(3年) $150K+ $225K+ $0(仅服务器成本)

六、最佳实践与进阶建议

  1. 分阶段部署:第一周部署Shuffle+TheHive基础环境,第二周接入现有告警源,第三周开发自动化工作流,第四周优化和测试。

  2. 告警分级响应策略

    • P1():自动创建Case + 立即通知 + 自动封禁IP
    • P2(High):自动创建Case + 邮件通知值班人员
    • P3(Medium):仅记录告警,次日人工审查
    • P4(Low):仅统计入库,周报汇总
  3. 数据备份方案

    # 备份Elasticsearch索引
    docker exec elasticsearch curl -X PUT "localhost:9200/_snapshot/backup" \
      -H "Content-Type: application/json" \
      -d '{"type":"fs","settings":{"location":"/backup"}}'
    
    # 备份Cassandra数据
    docker exec cassandra nodetool snapshot thehive
    
  4. 性能调优:告警量超过每日1万条时,建议将Elasticsearch集群扩展为3节点,Cassandra扩展为3节点,并为TheHive配置Redis缓存。

  5. 安全加固

    • 配置反向代理并启用HTTPS
    • 使用Let's Encrypt免费证书
    • 限制管理界面仅内网访问
    • API Key定期轮换(建议90天)

七、总结

Shuffle+TheHive的组合为中小安全团队提供了零成本的企业级SOAR能力。Shuffle负责工作流编排和工具集成,TheHive专注事件管理和案例协作,两者配合可以覆盖告警接收、自动富化、分级响应、案例管理的完整安全运营闭环。虽然在预置剧本数量和企业级支持上不及商业方案,但其开源透明、灵活可扩展的特性,加上活跃的社区支持,完全能够满足大多数组织的安全自动化需求。从本文的部署步骤开始,逐步构建属于你自己的自动化安全运营体系吧。

常见问题

一、为什么需要SOAR?

>一、为什么需要SOAR?在现代安全运营中心(SOC)中,安全团队每天面对海量告警,手动处理效率极低。安全编排、自动化与响应(SOAR)平台能够将安全工具串联成自动化工作流,大幅提升事件响应速度。商业SOAR方案如Splunk SOAR(原Phantom)年费5万美元起,Palo Alto XSOAR年费7.5万美元起,IBM Resilient同样价格不菲。对于预算有限的中小团队,开源方案是更现实的选择。 本文将手把手带你搭建基于Shuffle和TheHive的开源SOAR平台,实现从告警接收到自动化响应的完整闭环。整个方案零成本,仅需一台4核8GB内存的Linux服务器即可运行。

评论