mmontalvo-sec/network-security-operations-lab

GitHub: mmontalvo-sec/network-security-operations-lab

该项目记录了一个基于真实物理硬件构建的企业级 SOC 与事件响应实验室,涵盖防火墙分段、SIEM 监控和 IDS 可见性等防御性安全工作流。

Stars: 0 | Forks: 0

# 网络安全运营实验室 **基于物理硬件构建的企业级 SOC 与事件响应实验室,采用 Palo Alto PA-500 防火墙分段、Cisco Catalyst 交换、Windows Active Directory、Wazuh SIEM 和 Snort IDS。** ## 概述 本仓库记录了一个研究生级别的企业级网络安全运营实验室,该项目最初建于我的计算机与网络技术专业课程期间,后扩展为一个专业作品集项目。它模拟了跨物理网络硬件、Windows 基础设施、防火墙分段、SIEM 监控、IDS 可见性以及事件响应式文档记录的防御性安全工作流。 ## 我的角色 - 提出网络架构并设计实验室拓扑 - 配置 Palo Alto PA-500 子接口、安全区域和安全策略 - 配置 Cisco Catalyst 3560 的 VLAN、Trunk 和 SPAN 端口镜像 - 构建并验证包含 DNS、DHCP 和 NTP 的 Active Directory 域 - 部署 Wazuh SIEM 并注册 Windows 和 Linux 代理 - 搭建具有双网卡被动架构的 Snort IDS - 编写实施指南和分步操作手册 - 主导技术演示,并向技术和非技术受众讲解架构 - 记录配置、验证命令和检测场景 ## 展示技能 | 领域 | 技能 | |---|---| | 网络设计 | VLAN 分段、802.1Q Trunk、VLAN 间路由、子网划分、OSPF | | 防火墙 | Palo Alto PA-500 — 子接口、安全区域、策略执行、syslog | | 交换技术 | Cisco Catalyst 3560 — VLAN 配置、Trunk、SPAN/镜像端口 | | 身份与服务 | Windows Server 2016、AD DS、DNS、DHCP、NTP、OU 设计、域加入 | | SIEM | Wazuh — 代理部署、Windows 日志摄取、多源采集 | | IDS | Snort — 被动双网卡部署、SPAN 集成、告警验证 | | 安全运营 | 基线分析、日志关联、告警分类、检测场景 | | 文档记录 | 操作手册、检测指南、证据核对清单、IR 方法论 | | 物理实验室 | 机架设置、布线管理、硬件集成、真实设备故障排查 | ## 架构 ``` flowchart TB RED["RED Network
192.168.1.0/24
Kali / Red Team"] --> R1["RED Router
10.10.10.2/30
OSPF router-id 1.1.1.1"] R1 -->|"Transit 10.10.10.0/30 — OSPF Area 0"| PA["Palo Alto PA-500
10.10.10.1/30
Inter-VLAN Gateway
Zone Enforcement — VR-SOC"] PA -->|"802.1Q Trunk — VLANs 10,20,30,40,99"| SW["Cisco Catalyst 3560
BlueSwitch — Layer 2 Only"] SW --> V10["VLAN 10 — CLIENTS
172.16.10.0/24
client1, client2, redteam1"] SW --> V20["VLAN 20 — WINDOWS SERVERS
172.16.0.0/24
DC01: .6 | wserverdhcp: .7 | wserverbackup: .8"] SW --> V30["VLAN 30 — IDS MGMT
172.16.30.0/24
Snort mgmt: .9"] SW --> V40["VLAN 40 — SIEM
172.16.40.0/24
Wazuh"] SW --> V99["VLAN 99 — MGMT
172.16.99.0/24"] SW -. "SPAN Mirror Fa0/1-2,12-16 to Fa0/9" .-> SNORT["Snort IDS
Ubuntu — Passive
No IP on sniff NIC"] V10 -->|"Wazuh Agent"| V40 V20 -->|"Wazuh Agent"| V40 PA -->|"Syslog UDP/514"| V40 SNORT -->|"Alert Log via Agent"| V40 ``` ## 硬件和软件栈 ### 硬件 | 设备 | 角色 | 备注 | |---|---|---| | Palo Alto PA-500 | 防火墙 / VLAN 间网关 / 区域执行 | 最终配置前恢复出厂设置 | | Cisco Catalyst 3560 (BlueSwitch) | 二层交换机 — VLAN、Trunk、SPAN | 设计上仅限二层 | | Cisco 路由器 (Red) | RED 网络网关 / OSPF 对等体 | FastEth0/1 = 192.168.1.1/24 | | Windows Server 2016 × 3 | AD DS + DNS、DHCP、备份/文件共享 | 全部加入域 | | Windows 10 客户端 × 2 | 加入域的端点 | client1、client2 | | 红队主机 × 1+ | 对手模拟 | 演示期间位于 VLAN 10 的 redteam1 | | Ubuntu Server | Snort IDS 传感器 | 双网卡 — 增加了 PCIe 网卡 | | 专用主机 | Wazuh SIEM | All-in-one 部署 | ### 软件 | 组件 | 详情 | |---|---| | PAN-OS | Palo Alto PA-500 生产镜像 | | Cisco IOS | Catalyst 3560 和 Red 路由器 | | Windows Server 2016 | 标准评估版 | | Windows 10 Pro | 10.0.19045.x (客户端) | | Wazuh | 通过安装脚本部署的 4.x all-in-one 版本 | | Snort | Ubuntu Server 上的 v2.x 版本 | | Kali Linux | 通过 VirtualBox 安装在红队主机上 | ## 网络设计 ### 已确认的 VLAN 表(来自 `show vlan brief` 截图) | VLAN | 名称 | 子网 | 网关 | 交换机端口 | |---|---|---|---|---| | 10 | CLIENTS | 172.16.10.0/24 | 172.16.10.1 | Fa0/13–16 | | 20 | WINDOWSSERVER | 172.16.0.0/24 | 172.16.0.1 | Fa0/14–15, Fa0/16 | | 30 | IDSMIRROR | 172.16.30.0/24 | 172.16.30.1 | Fa0/9–11 | | 40 | SIEM | 172.16.40.0/24 | 172.16.40.1 | Fa0/12 | | 99 | MGMT | 172.16.99.0/24 | 172.16.99.1 | Fa0/24 | ### 传输网络(从路由器截图确认) | 网段 | 地址 | |---|---| | 传输子网 | 10.10.10.0/30 | | Palo Alto ethernet1/1 | 10.10.10.1/30 | | RED 路由器 | 10.10.10.2/30 | | RED LAN (Fa0/1) | 192.168.1.1/24 | ### 已确认的 Palo Alto 子接口(来自 PA 接口截图) | 接口 | IP | VLAN 标签 | 区域 | 备注 | |---|---|---|---|---| | ethernet1/1 | 10.10.10.1/30 | Untagged | RED-TRANSIT | 连接到 RED 路由器的传输口 | | ethernet1/2 | 无 | Untagged | — | 连接到 BlueSwitch 的 Trunk | | ethernet1/2.10 | 172.16.10.1/24 | 10 | CLIENTS | 客户端网关 | | ethernet1/2.20 | 172.16.0.1/24 | 20 | WINDOWS-SERVERS | 服务器网关 | | ethernet1/2.30 | 172.16.30.1/24 | 30 | IDS-MGMT | Snort 管理网关 | | ethernet1/2.40 | 172.16.40.1/24 | 40 | SIEM | Wazuh 网关 | | ethernet1/2.99 | 172.16.99.1/24 | 99 | MGMT | 管理网关 | | ethernet1/3 | 动态 DHCP | Untagged | internet temporal | 临时互联网 | 所有接口均分配给虚拟路由器:**VR-SOC** ## 安全区域 | 区域 | 接口 | 用途 | |---|---|---| | RED-TRANSIT | ethernet1/1 | 对手网段 / OSPF 传输 | | CLIENTS | ethernet1/2.10 | 用户工作站、加入域的客户端 | | WINDOWS-SERVERS | ethernet1/2.20 | AD DS、DNS、DHCP、文件共享、备份 | | IDS-MGMT | ethernet1/2.30 | Snort IDS 管理接口 | | SIEM | ethernet1/2.40 | Wazuh SIEM 平台 | | MGMT | ethernet1/2.99 | 管理访问权限 | ## Active Directory 和 Windows 基础设施 ### 域环境 | 角色 | 主机名 | IP | 操作系统 | |---|---|---|---| | 主域控 / DNS | DC01 (domain controller) | 172.16.0.6 | Windows Server 2016 | | DHCP 服务器 | wserverdhcp | 172.16.0.7 | Windows Server 2016 | | 备份 / 文件共享 | wserverbackup | 172.16.0.8 | Windows Server 2016 | | 客户端 1 | client1 | 172.16.10.4 | Windows 10 Pro | | 客户端 2 | client2 | 172.16.10.10 | Windows 10 Pro | | 红队 | redteam1 | 172.16.10.103 | Windows 10 Pro | 所有三台 Windows Server 主机和 Windows 10 客户端均已加入域。备份服务器托管了一个公共共享文件夹 (`\\wserverbackup\Share`),用于 SMB 访问验证测试。 为演示场景创建了三个 AD 用户:`aduser1`、`aduser2`、`aduser3`。 ### 服务 | 服务 | 主机 | 状态 | |---|---|---| | AD DS | DC01 | 已部署 | | DNS | DC01 | 已部署并验证 | | DHCP | wserverdhcp | 已部署并配置作用域 | | NTP | DC01 (域时间) | 通过域成员身份激活 | | 文件共享 | wserverbackup | 用于演示的公共共享 | ## Wazuh SIEM — 已从截图确认 已确认五个活动的代理(代理列表截图,5月12日): | 代理 ID | 名称 | IP | 操作系统 | |---|---|---|---| | 001 | client1 | 172.16.10.4 | Windows 10 Pro 10.0.19045.6456 | | 002 | client2 | 172.16.10.10 | Windows 10 Pro 10.0.19045.6456 | | 003 | redteam1 | 172.16.10.103 | Windows 10 Pro 10.0.19045.2965 | | 004 | wserverbackup | 172.16.0.8 | Windows Server 2016 Standard Eval | | 005 | wserverdhcp | 172.16.0.7 | Windows Server 2016 Standard Eval | **全部 5 个代理:Active,0 个断开连接。** Wazuh 仪表板已确认(5月12日,14:02 截图): - 共收集 **20,887 条事件** - 检测到 **8 次身份验证失败** - 记录了 **233 次身份验证成功** - MITRE ATT&CK 框架映射已激活 - 贡献最多事件的代理:client1、client2、redteam1、wserverbackup、wserverdhcp ## Snort IDS — SPAN 配置已确认 从 BlueSwitch 截图确认了 SPAN 会话: ``` monitor session 1 source interface Fa0/1 - 2, Fa0/12 - 16 monitor session 1 destination interface Fa0/9 ``` - 源端口:上游防火墙端口、SIEM 端口和客户端接入端口 - 目的端口:Fa0/9(连接到 Snort 嗅探网卡) - Snort 管理 IP:172.16.30.9 (VLAN 30) - 嗅探网卡:无 IP 地址(经设计确认;被动操作所必需) 端口安全也确认在接入端口 (Fa0/1–4) 上处于活动状态,采用 sticky MAC 学习和违规模式 `restrict`。 ## 检测和验证场景(已完成) 所有场景均在实验室演示期间执行: | # | 场景 | 系统 | 事件 ID / 检测 | |---|---|---|---| | 1 | 查看活动的 Wazuh 代理 | 所有已注册主机、Wazuh | 代理状态:Active | | 2 | Nmap ping 扫描(已授权) | Kali/redteam1 → 172.16.20.0/24 | Wazuh / Snort / 防火墙日志 | | 3 | 针对服务器的 Nmap 端口扫描 | Kali → 172.16.0.6 | 端口扫描检测、服务枚举 | | 4 | SMB 登录失败(暴力破解模拟) | Kali → 172.16.0.6 | Wazuh 中的 Windows 事件 4625 | | 5 | 失败后的成功登录 | 域用户 → 客户端/服务器 | Windows 事件 4624 — 关联 | | 6 | SMB 共享文件夹访问 | 客户端 → \\wserverbackup\Share | Windows 事件 5140、5145 | | 7 | 在共享文件夹上创建文件 | 客户端 → demo-alert.txt | Wazuh syscheck / FIM 告警 | | 8 | Wazuh 代理验证 | 所有代理 | 端点摘要仪表板 | 所有场景均记录了:目标、步骤、预期日志事件和证据截图。 ## 证据 **已确认捕获的证据(来自提供的截图):** - ✅ Cisco BlueSwitch VLAN 表 (`show vlan brief`) - ✅ Cisco BlueSwitch SPAN 会话配置 (`monitor session 1`) - ✅ Cisco 端口安全配置 (Fa0/1–4、sticky MAC、restrict) - ✅ Palo Alto 子接口表(已确认所有区域) - ✅ RED 路由器接口配置 (192.168.1.1/24、Fa0/1) - ✅ RED 路由器 OSPF 配(进程 1、区域 0、router-ID 1.1.1.1) - ✅ Wazuh 代理列表(5 个活动代理,零断开连接) - ✅ Wazuh 威胁监控仪表板(20,887 个事件,MITRE 映射) **计划上传的补充证据:** - [ ] 机架和布线管理照片 - [ ] AD OU 结构截图 - [ ] DNS 验证 (`nslookup dc01.soc.lab`) - [ ] DHCP 作用域和租约截图 - [ ] Snort 控制台告警输出 - [ ] 检测场景中的 Wazuh 调查时间线 - [ ] Palo Alto 流量监控日志(VLAN 间和拒绝条目) ## 仓库结构 ``` network-security-operations-lab/ ├── README.md ├── LICENSE ├── .gitignore ├── docs/ │ ├── 01-executive-summary.md │ ├── 02-architecture-overview.md │ ├── 03-network-design.md │ ├── 04-active-directory-windows.md │ ├── 05-firewall-segmentation.md │ ├── 06-siem-wazuh-monitoring.md │ ├── 07-ids-snort-visibility.md │ ├── 08-detection-validation.md │ ├── 09-incident-response-methodology.md │ ├── 10-lessons-learned.md │ └── 11-future-improvements.md ├── runbooks/ │ ├── 01-cisco-switch-vlans-trunk-span.md │ ├── 02-palo-alto-firewall-zones-routing.md │ ├── 03-windows-server-ad-dns-dhcp-ntp.md │ ├── 04-domain-client-server-join-validation.md │ ├── 05-wazuh-siem-log-ingestion.md │ ├── 06-snort-ids-span-visibility.md │ └── 07-controlled-detection-scenarios.md ├── templates/ │ ├── change-log-template.md │ ├── incident-report-template.md │ ├── detection-test-template.md │ ├── test-matrix-template.md │ └── screenshot-index-template.md ├── diagrams/ │ ├── topology.mmd │ ├── vlan-design.mmd │ ├── active-directory-log-flow.mmd │ └── siem-ids-log-flow.mmd ├── evidence/ │ ├── screenshots/ │ ├── sanitized-configs/ │ ├── sanitized-logs/ │ └── validation-results/ └── assets/ └── images/ ``` ## 经验教训 - 基于防火墙的 VLAN 间路由比三层交换机更难设置,但每个 VLAN 间流量都变得可检查和可记录 — 值得为此增加复杂性 - Trunk 配置错误和标记错误的子接口会导致看起来像路由问题的静默故障;先验证 Trunk 可以节省数小时的时间 - 物理硬件引入了真实的故障模式(坏线缆、交换机故障、风扇警告),这些是虚拟实验室永远不会暴露的 — 这些都是宝贵的故障排查经验 - Wazuh 代理注册需要稳定的时间同步;时间偏差会导致代理身份验证失败 - 在确信 Snort 能看到任何内容之前,必须独立验证 SPAN/镜像端口配置 - 基线日志量(在任何攻击模拟之前有 20,887 个事件)说明了为什么降噪和告警调优很重要 - 防火墙和 RED 路由器之间的 OSPF 需要正确的 router-ID、区域 0 和 network 声明才能收敛;配置错误的通配符掩码会导致路由不完整 ## 未来改进 - Palo Alto 安全策略强化:将 any/any 测试规则替换为最小权限的区域对规则 - 在 Windows 主机上部署 Sysmon,以增强端点可见性(进程创建、网络连接、DNS 查询) - 针对该实验室的特定拓扑和告警模式调整的 Wazuh 自定义规则 - 完整的 Snort 告警流水线验证,并确认将告警日志转发至 Wazuh - 为每个检测场景进行 MITRE ATT&CK 映射 - 为已完成的检测场景编写正式的事件报告文档 - 用于公共作品集展示的 GitHub Pages 文档站点 ## 许可证 MIT License。详情请参阅 `LICENSE`。
标签:Terraform 安全, Windows活动目录, 入侵检测系统, 安全数据湖, 库, 应急响应, 网络分段, 网络安全运营