pedrosilvaevangelista/Soc-from-scratch
GitHub: pedrosilvaevangelista/Soc-from-scratch
一个以教育为目的的开源 SOC 架构参考项目,系统讲解安全运营中心各组件如何分层协作、关联检测并形成威胁情报闭环。
Stars: 4 | Forks: 3
# 开源 SOC — 概念与架构

## 1. 关于
SOC(安全运营中心)通常被认为是只有预算高达六位数的公司才能负担得起的东西。这个项目证明了事实并非完全如此。
这个代码库不是在讲“如何安装 X”。它是在讲“这些组件是如何协同思考的”——这样你就可以构建自己的版本,并根据你的实际环境进行调整。
**坦白意图:**这不打算作为一个企业级部署,也不是为了直接按原样投入公司使用。它的目标是教育性的——端到端地理解一个 SOC *应该*如何思考和运作,这样当你真正在真实环境(开源或商业环境)中工作时,这些概念对你来说就不是黑盒。
### 1.1 这套架构实际的作用
| 能力 | 概念 |
|---|---|
| **主动检测** | 在威胁和异常行为发生时进行识别,而不是事后 |
| **集中可见性** | 在一个地方查看所有内容,而不是在十个 dashboard 之间切换 |
| **结构化响应** | 事件遵循可重复的流程,而不是依赖于口头经验 |
| **取证分析** | 每个案例都会留下可供日后调查的痕迹 |
| **威胁情报** | SOC 会随着处理的每个事件变得越来越聪明 |
| **低运营成本** | 零许可成本——唯一的成本就是你的时间和基础设施 |
| **原生集成** | 工具之间自动通信,而不是通过手动导出 |
## 2. 宏观视角——按层思考,而非按“盒子”思考
大多数人在设计 SOC 时犯的错误是优先考虑*产品*。正确的思考方式是基于**逻辑功能**——然后你再去选择填补每个功能的工具。
这里有三个逻辑平面:
1. **可见性平面**——从端点收集原始信号。如果你看不见它,你就无法检测它。
2. **执行平面**——这不是单一的“盒子”。流量在到达工作站或服务器之前,实际上会跨越三个检查点:**边界防火墙**(自动化检测——IPS 引擎和防病毒软件)、**内部防火墙**(手动允许/拒绝策略——需要人工干预而非依赖特征的决策)以及 **L3 交换机**(实际执行区域间隔离的设备)。只有通过了这三道防线的流量才能穿过。
3. **智能与响应平面**——将剩余的内容关联起来,将其转化为案例,并将学到的经验反馈到系统中。

核心思想是:**数据在通过每个检查点时,都会被逐步提炼和检验。**原始日志变成了过滤后的事件,过滤后的事件变成了关联警报,而关联警报又变成了带有可共享情报的文档化案例。任何信息如果不先经过多层处理,都不会到达分析师的屏幕上。
### 2.1 组件映射表
| 层级 | 组件 | 逻辑角色 |
|---|---|---|
| 可见性 | Windows Defender | 端点上操作系统原生的恶意软件检测 |
| 可见性 | Sysmon | 对 Windows 进程/网络行为的深度可见性 |
| 可见性 | Wazuh Agent | 将端点日志和遥测数据发送至 SIEM |
| 执行 — 边界 | OPNsense | 边界防火墙和路由器 |
| 执行 — 边界 | Suricata (IPS) | 根据已知的攻击特征检查数据包 |
| 执行 — 边界 | CrowdSec (IPS) | 检测行为攻击模式,封锁恶意 IP |
| 执行 — 边界 | ClamAV | 在已知恶意软件扩散前将其捕获 |
| 执行 | 内部防火墙 | 手动入站/出站允许-拒绝策略 |
| 执行 | L3 交换机 | 在不同的 VLAN 之间路由和隔离流量 |
| 智能与响应 | Wazuh SIEM | 关联一切信息,决定什么是警报 |
| 智能与响应 | DFIR-IRIS | 将警报转化为结构化的调查 |
| 智能与响应 | MISP | 存储并分享所积累的经验 |
| 弹性 | Google Drive Backup | 为端点和 SOC 数据提供异地备份(参见第 3 节的注意事项) |
## 3. 为什么每个工具都有其存在价值
与其进行功能堆砌,不如看看每个选择背后的*理由*:
**OPNsense** 的存在是因为网段划分是第一道防线——扁平的网络意味着一台被攻陷的设备可以看到其他所有设备。
**CrowdSec 和 Suricata 刻意运行在同一个边界防火墙上——它们并不冗余,而是涵盖了两种不同的检测理念。** Suricata 是基于特征的:它寻找与已知漏洞匹配的数据包模式,因此对于已分类的威胁,它的检测快速且精准。CrowdSec 是基于行为的:它不需要识别出确切的攻击,只需要注意到某台主机正在进行异常操作——比如反复登录失败、扫描模式——而这恰好能够捕捉到 Suricata 特征库中尚未收录的威胁。只运行其中一个,就意味着必须在“快速应对已知威胁”和“自适应应对新威胁”之间做出选择。同时运行两者,意味着你无需再作抉择。
**ClamAV** 是最后一道边界防线——运行成本低,能够在已知的恶意软件到达端点之前将其捕获。
**内部防火墙是边界防火墙之后的第二个、刻意设计的检查点——而不是它的复制品。**边界防火墙的 IPS 引擎根据特征和行为模式以机器速度做出自动化决策。内部防火墙则是应用人工制定的允许/拒绝策略的地方——这些流量决策需要人类的判断,而不仅仅是模式匹配。
**L3 交换机才是让网段划分真正落地的东西,而不仅仅停留在文档上。**防火墙规则写着“这些区域不应该相互通信”只是一项策略;而 L3 交换机则是逐个数据包地执行这一策略的设备。没有它,网段划分只是一张网络拓扑图;有了它,网段划分就成为了网络本身的固有属性。
**Wazuh Agent、Sysmon 和 Windows Defender** 的存在是因为在端点上进行检测是不可妥协的。边界防线可能会遗漏一些东西;而端点通常是真相所在的地方。
**Wazuh SIEM** 是大脑——它是唯一拥有足够上下文去判定“这五个独立的事件实际上是一次攻击”的地方。
**DFIR-IRIS** 的存在是因为,一个没有经过文档化调查的警报,只是无人从中吸取教训的噪音。
**MISP** 的存在是因为,一个不分享或不消耗威胁情报的 SOC,在每个事件发生时都在重复造轮子。
**Google Drive Backup** 之所以被特意选中,是因为它是免费的——对于实验室或小规模部署来说,这是一个巨大的优势,即使它存在一些局限性(存储容量上限、缺乏企业级的保留策略控制、不保证不可变性)。在真实的生产环境中,这是整个架构中你最应该优先替换的部分——换成具有离线或不可变副本的专用备份基础设施。它是一个合理的起点,而不是最终形态。
## 4. 事件是如何实际流转的
数据不会直接跳到工作站上——它必须为自己开辟道路。以下是双向的实际路径:
**入站(网络 -> 工作站):**
```
① Traffic enters through the internet link
↓
② Border Firewall inspects it (Suricata + CrowdSec as IPS, ClamAV as antivirus)
↓
Malicious? ──→ blocked right here, never goes further
↓ (clean)
③ Internal Firewall applies manual allow/deny policy
↓
④ L3 Switch routes it into the correct, segmented VLAN
↓
⑤ Traffic finally reaches the workstation
```
**如果某些东西仍在本地激活(工作站 -> 响应):**
```
⑥ Malicious activity is caught on the endpoint (Windows Defender or Sysmon)
↓
⑦ An alert is sent to Wazuh SIEM and classified
↓
⑧ An analyst opens an investigation in DFIR-IRIS and takes the necessary action
↓
⑨ Once the case is closed, indicators are exported to MISP
↓
⑩ That intelligence enriches the company's own future detection —
so the next occurrence of the same threat is caught faster, with more context
```
这是大多数架构都会弄错的部分:**闭环必须合上。**一个只负责检测、响应,却从不将情报反馈回来的 SOC,只会一遍又一遍地做着相同的工作,而没有任何复利价值。在结案后将数据导出到 MISP 的全部意义并不在于文书工作——而是确保*下一位*分析师(或者是*同一位*分析师,在六个月之后)能够直接继承结论,而不是从零开始。
## 5. 具体演练——在整个系统中追踪一次攻击
图表很有用,但没有什么比在架构中从头到尾追踪一个真实的场景更能让人豁然开朗的了。以下是一个网络钓鱼尝试,我们逐层对其进行追踪:
**00:00** — 一名员工打开了一封电子邮件附件。它悄无声息地释放了一个小型可执行文件,并试图建立一个与外部命令与控制服务器的连接。
**00:01** — 运行在该工作站上的 **Sysmon** 会在进程创建和出站网络连接发生时立即进行记录。**Wazuh Agent** 会近乎实时地将该日志从机器上发送出去。
**00:02** — 出站连接也跨越了**边界防火墙** (OPNsense)。Suricata 根据已知的恶意特征标记了目标地址;CrowdSec 则独立地注意到同一台主机的行为与其基准相比发生了巨大的变化。无论是内部防火墙的手动规则,还是 L3 交换机的网段划分,都不是为了捕捉这种情况而设计的——这种异常情况正是 IPS 层存在的意义。
**00:03** — **Wazuh SIEM** 几乎同时接收到了这三个信号——端点日志、Suricata 警报和 CrowdSec 标记。单独来看,它们都不能作为确凿的证据。但在极短的时间窗口内,在同一台主机上将它们关联起来,就越过了真实警报的阈值。
**00:04** — 该警报会通过 webhook 在 **DFIR-IRIS** 中自动创建一个案例,并预先填充好主机、时间线和原始证据。不需要分析师手动去拼凑线索——他们一上来看到的就是一个结构化的案例,而不是满屏的日志。
**00:15** — 一名分析师确认其为恶意行为,在 DFIR-IRIS 中记录下调查过程,并将主机隔离。
**00:20** — 案例关闭后,其中的威胁指标——恶意域名、文件哈希——被导出到 **MISP**。
**下一次** — 如果相同的域名或文件哈希出现在环境中的任何其他地方,Wazuh 就已经知道要立即对其进行标记,因为它现在已经通过 MISP 从这次具体的事件中汲取并丰富了经验。
这就是这套架构的全部意义所在:**没有任何单一的工具可以单独“捕获”这次攻击。**正是这种分层关联——端点、边界和 SIEM 之间的相互印证——将一个隐蔽且容易错过的事件,转化为一次快速、自信且文档化的响应。
## 6. 将网段划分作为设计原则,而不仅仅是网络拓扑图
这套拓扑结构不在于关注交换机的型号或服务器有多少 RAM——它的核心在于**隔离爆炸半径**。几个逻辑上的决策驱动了整个设计:
| 设计决策 | 重要性 |
|---|---|
| 为 SOC 工具划分专用网段 | 如果一台工作站被攻陷,它绝不应该有一条直接通往 SIEM 或案例管理系统的路径 |
| 为每个业务职能(如 HR、IT)划分独立的网段 | 部门间的横向移动是小事件演变成大灾难最常见的方式之一 |
| 具备弹性的互联网连接 | 如果 SOC 本身在安全事件期间掉线,检测和响应就形同虚设 |
| 在 L3 交换机上强制执行网段划分 | 仅仅停留在纸面上的策略是不够的——交换机才是逐个数据包地将各个区域隔离开来的设备 |
| 异地备份(在此架构中为 Google Drive) | 勒索软件场景通常会假设本地备份也已经被感染。这里选择 Google Drive 是因为它是免费的——对于实验室来说是一个很好的起点,但真实的生产环境应该转向专用的、不可变的备份基础设施 |
## 7. 构建此架构你真正需要的概念
如果你想构建自己的版本,与首先理解这些概念相比,工具的选择其实远没有那么重要:
- **网络基础知识** — VLAN、网段间的路由、防火墙规则逻辑
- **日志管理** — 哪些内容值得收集,哪些仅仅是噪音
- **关联逻辑** — SIEM 如何将十个互不相关的事件转化为一个有意义的警报
- **事件响应工作流** — 案例生命周期、证据处理、文档记录的规范性
- **威胁情报基础** — 什么是 IOC,共享/分类法是如何运作的
- **通过 API/webhook 实现自动化** — 正是这一点让多个工具能够作为*同一个系统*运作,而不是五个分离的 dashboard
一旦理解了这些概念,具体的工具选择就变得几乎可以互换——你可以用另一个 SIEM 替换 Wazuh,或者用另一个威胁情报 (TI) 平台替换 MISP,而架构的精髓依然成立。
## 8. 官方工具与文档
| 类别 | 工具 | 链接 |
|---|---|---|
| 防火墙/路由器 | OPNsense | https://opnsense.org |
| 行为检测 | CrowdSec | https://www.crowdsec.net |
| IDS/IPS | Suricata | https://suricata.io |
| 防病毒软件 | ClamAV | https://www.clamav.net |
| SIEM/XDR | Wazuh | https://wazuh.com |
| 端点日志记录 | Sysmon | https://learn.microsoft.com/pt-br/sysinternals/downloads/sysmon |
| 事件响应 | DFIR-IRIS | https://dfir-iris.org |
| 威胁情报 | MISP | https://www.misp-project.org |
## 9. 这套架构赋能的场景
| 场景 | 涉及的层级 |
|---|---|
| 恶意软件调查 | Wazuh + ClamAV + DFIR-IRIS + MISP |
| 网络钓鱼响应 | Wuh + DFIR-IRIS + MISP |
| 数据泄露调查 | Wazuh + Suricata + DFIR-IRIS |
| 内部威胁分析 | Wazuh + Sysmon + DFIR-IRIS |
**在这里重要的指标:**MTTD(平均检测时间)、MTTR(平均响应时间)、误报率以及端点覆盖率。一个 SOC 的成熟度是通过这些指标随时间的趋势来衡量的——而不是通过它运行了多少个工具。
## 10. 最后说明
本项目是一个用于学习的动态参考,而不是一个成品或部署蓝图。如果它能帮助你理解 SOC 实际上是如何运作的,并足以让你设计出自己的 SOC——无论是用于实验室、学习项目,还是作为接触真实环境前的 groundwork——那它的目的就达到了。如果你在学术或个人学习作品中使用了它,请注明来源。
标签:Metaprompt