UmerAkhter10/SOC-Home-Lab-Elastic-SIEM

GitHub: UmerAkhter10/SOC-Home-Lab-Elastic-SIEM

基于 Elastic Stack 从零构建的 SOC 家庭实验室项目,提供完整的 SIEM 配置、日志采集、威胁检测与事件响应实践流程。

Stars: 0 | Forks: 0

# SOC 家庭实验室 — Elastic SIEM 项目 ## 概述 本项目的主要目标是在 SOC 运营中模拟真实世界的 SIEM 工具使用场景,特别是在警报分类方面。该 SIEM 项目从零开始构建,涵盖了 hypervisor 配置、虚拟机部署、Elastic Stack 安装与配置、agent(endpoint)注册、日志转发至 SIEM 服务器、自定义仪表盘开发,以及最终的警报检测。在这一过程中,我遇到并解决了许多技术挑战,从而获得了作为 SOC 分析师的实践经验。最终成果是一个功能完备的 SIEM 实验室,包含日志转发、自定义检测规则触发以及警报分类。 ## 实验室环境 | 组件 | 规格 | |---|---| | 笔记本型号 | Lenovo ThinkPad T14 AMD Gen 2 | | 处理器 | AMD Ryzen 7 Pro 5850U (8 核 / 16 线程) | | 内存 | 16GB DDR4 3200MHz | | 存储 | 512GB NVMe SSD | | 宿主机 OS | Windows 11 | | Hypervisor | Oracle VirtualBox 7.2.10 | ### 虚拟机 | 虚拟机 | 操作系统 | 内存 | 存储 | 角色 | |---|---|---|---|---| | VM1 | Ubuntu Server 25.04 | 8GB | 50GB | SIEM 服务器 (Elastic Stack) | | VM2 | Windows 10 | 2GB | 60GB | 受监控的 Endpoint | ## 工具与技术 - **Elasticsearch** — 搜索与分析引擎 / 数据存储 - **Kibana** — 基于 Web 的可视化与分析界面 - **Elastic Agent** — 从 Windows endpoint 收集日志 - **Fleet Server** — 集中式 agent 管理 - **OpenSSH Server** — 对 Ubuntu Server 虚拟机的远程终端访问 - **PowerShell** — 暴力破解攻击模拟 ## 网络架构 VirtualBox NAT 适配器配置了端口转发规则。通过此设置,VirtualBox 创建了自己的虚拟网关(路由器),无论当前网络连接类型如何,都通过宿主机连接到互联网。 ![预览失败](Bridged Network.png)
虚拟机的 5601 端口 (Kibana) 被隧道映射到 Windows 的 5601 端口,使得可以通过回环 IP `127.0.0.1` 在浏览器中访问 Kibana 流量。 | 服务 | 协议 | 宿主机端口 | 虚拟机端口 | |---|---|---|---| | SSH | TCP | 2222 | 22 | | Kibana | TCP | 5601 | 5601 | | Elasticsearch | TCP | 9200 | 9200 | | Fleet Server | TCP | 8220 | 8220 | ## 项目阶段 ### 阶段 1 — VirtualBox 与虚拟机设置 - 安装了 Oracle VirtualBox 7.2.10 - 解决了 Visual C++ 2019 Redistributable 前置条件错误 - 创建了 Ubuntu Server 虚拟机(8GB 内存,50GB 存储)作为 SIEM 服务器 - 创建了 Windows 10 虚拟机(2GB 内存,60GB 存储)作为受监控的 endpoint - 刻意选择独立的虚拟机而非宿主机,是为了防止个人数据泄露到 SIEM 日志中 ### 阶段 2 — Elastic Stack 安装 - 在 Ubuntu Server 上安装了 SSH,以便从宿主机进行远程 shell 访问 - 下载并安装了 Elastic 公共签名密钥,用于验证软件包完整性 - 添加了 Elastic APT 仓库,并安装了 Elasticsearch、Kibana 和 Logstash - 在 `kibana.yml` 中配置了 `server.host: "0.0.0.0"`,使宿主机能够访问 Kibana - 使用注册 token 将 Kibana 与 Elasticsearch 进行了绑定注册 ### 阶段 3 — Fleet Server 与 Elastic Agent - 通过生成并添加 Kibana 加密密钥解决了 Fleet 初始化错误 - 在 `https://127.0.0.1:8220` 配置了 Fleet Server - 通过 Elastic Agent 将 Windows 10 虚拟机 (VM2) 注册为受监控的 endpoint - 使用 `--insecure` 标志绕过了自签名证书验证错误 ### 阶段 4 — 检测规则 - 加载了 Elastic 预构建的检测规则,并启用了关键的 Windows 规则: - Windows 网络枚举 (Reconnaissance) - 来自互联网的 SMB 活动 (Payload Delivery) - 由 Windows 脚本创建的计划任务 (Persistence) - 创建了自定义的暴力破解检测规则: - 触发条件:5 分钟内 5 次或以上的登录失败尝试(Event ID 4625) - 严重程度:中 - MITRE ATT&CK:凭证获取 (T1110) ### 阶段 5 — SOC 仪表盘 开发了一个自定义仪表盘,以极低的成本提供安全可见性洞察: | 面板 | 可视化类型 | 用途 | |---|---|---| | 安全事件总数 | Metric | 显示所选时间范围内的总事件数 | | 前 10 个事件代码 | Bar Chart | 识别最频繁的 Windows Event ID | | 按严重程度划分的警报 | Pie Chart | 按严重程度级别可视化警报分布 | | 随时间变化的安全事件 | Line Chart | 按类别显示随时间变化的事件趋势 | | 最近的登录失败 | Data Table | 列出包含用户、IP 和主机名的失败登录尝试 | | 活跃的安全警报 | Alerts Panel | 显示已触发的检测规则警报 | ### 阶段 6 — 攻击模拟与事件响应 - 在 VM2 上执行了 PowerShell 脚本,针对 Administrator 账户连续发起了 10 次登录失败尝试 - 在达到 5 次登录失败(Event ID 4625)的阈值后,触发了暴力破解检测规则 - 在 Kibana Security → Alerts 和 Timeline 视图中调查了警报 - 识别了 IOC:源 IP `::1`(IPv6 回环地址)、目标用户名、Event ID 4625 - 将调查结果记录在结构化的事件报告中 ## 关键收获 - 通过本项目获得了警报分类、检测规则创建与调优、日志摄取配置以及安全工具配置的实践经验——这直接反映了初级 SOC 分析师角色的核心职责 - 通过实践经验加深了对 NAT、端口转发、回环寻址和网络分段的了解 - Linux 系统管理——systemd 服务管理、磁盘管理、日志分析 - 故障排除方法论——阅读日志、隔离根本原因、应用修复 ## 认证 - Google Cybersecurity Professional Certificate - CompTIA Security+ - TryHackMe SOC Level 1 (进行中) ## 联系方式 - **LinkedIn:** *"在这一过程中,我遇到并解决了许多技术挑战,从而获得了作为 SOC 分析师的实践经验。"*
标签:AI合规, Elastic Stack, 安全运营中心, 流量重放, 网络映射, 虚拟化, 越狱测试, 运维监控