kyle-s-key/HomeLab

GitHub: kyle-s-key/HomeLab

基于Wazuh、Suricata和GNS3构建的SOC家庭实验室,实现企业级深度防御架构和攻击检测验证。

Stars: 0 | Forks: 0

# 🛡️ SOC 家庭实验室:Wazuh, Suricata & GNS3 网络 ![Wazuh](https://img.shields.io/badge/SIEM-Wazuh-blue) ![Suricata](https://img.shields.io/badge/IDS-Suricata-red) ![GNS3](https://img.shields.io/badge/Network-GNS3-orange) ![Cisco](https://img.shields.io/badge/Infrastructure-Cisco-black) ## 📌 项目摘要 本项目展示了一个可复用的虚拟家庭网络,旨在模拟真实的企业环境。目标是通过集成网络分段 (VLANs)、入侵检测系统 和 XDR/SIEM 平台 (Wazuh) 来实施 **Defense-in-Depth(深度防御)**。 **主要成果:** * 使用 **Cisco vIOS**(路由器/交换机)和 **ASAv Firewall** 部署了分段网络。 * 配置 **Suricata** 通过 SPAN 端口镜像来嗅探流量。 * 将路由器、IDS 和端点的日志收集到 **Wazuh** 中。 * 通过模拟攻击 并验证检测结果,确认了安全策略的有效性。 ## 🛠️ 技术与工具 * **Hypervisor & Emulation:** VMware Workstation Pro, GNS3 * **Network Infrastructure:** * Cisco ASAv Firewall (`asav992-32.qcow2`) * Cisco vIOS L2 Switch (`viosl2-adventerprisek9`) * Cisco IOU L3 Router (`i86bi-linux-l3-jk9s-15.0.1.bin`) * **Security & Monitoring:** Wazuh (SIEM/XDR) on Amazon Linux 2023, Suricata (IDS) on Ubuntu Server * **Endpoints:** Kali Linux (Attacker), Windows 10 (Victim) ## 🏗️ 网络架构 该网络使用集成 VMware Workstation Pro 的 GNS3 进行模拟。 ![Network topology view](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/0987a331ff082321.png) ### VLAN 配置 我实施了网络分段,以将管理流量与端点流量隔离。 | VLAN ID | Name | Subnet | Description | | :--- | :--- | :--- | :--- | | **10** | Management | `192.168.10.0/24` | Wazuh Server & Suricata | | **20** | Kali | `192.168.20.0/24` | Attacker Machine (Dept A) | | **30** | Windows | `192.168.30.0/24` | Victim Machine (Dept B) | *精简后的 Cisco 路由器和交换机配置可在 [/configs](configs) 文件夹中找到。* ## ⚔️ 攻击与防御模拟 为了验证检测能力,我进行了一次实时攻击模拟。 ### 1. 攻击 使用 Kali Linux VM (VLAN 20),我对 Windows 10 端点 (VLAN 30) 运行了激进模式的 Nmap 扫描。 ``` nmap -A 192.168.30.2 ``` ### 2. 检测 Suricata 通过交换机上的 SPAN 端口检测到了异常流量。日志被转发到 Wazuh Manager,触发了警报:**"ET SCAN Possible Nmap User-Agent Observed"**。 ![Suricata alerts on nmap appearing in Wazuh](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/6b1f717ce7082326.png) ## 🖧 网络配置要点 ### VLAN 间路由(Router-on-a-Stick) 我在核心路由器上配置了子接口,以允许管理、Kali 和 Windows VLAN 之间的流量路由,同时保持分段。 ``` ! Router-on-a-Stick Configuration for VLAN 10 (Management) interface Ethernet0/0.10 description Gateway for Management VLAN encapsulation dot1q 10 ip address 192.168.10.1 255.255.255.0 ``` ### 2. 流量分析 (SPAN Port) 为了让 Suricata IDS 能够检查网络流量,我在核心交换机上配置了一个 Switched Port Analyzer (SPAN) 会话。这将路由器上行链路的所有流量镜像到监控接口。 ``` ! Mirror traffic from the Router (Gi0/0) to Suricata (Gi2/2) monitor session 1 source interface Gi0/0 monitor session 1 destination interface Gi2/2 ``` ### 3. 网络分段 我实施了 Extended ACLs 以强制执行严格的分段。以下配置阻止 Windows 10 VLAN 访问管理子网,同时允许 Wazuh agent 通信所需的特定端口 (1514/1515)。 ``` ip access-list extended SECURE-VLANS ! Permit Wazuh Agent Traffic (TCP/UDP) permit udp any host 192.168.10.10 eq 1514 permit tcp any host 192.168.10.10 eq 1515 ! Deny all other Windows VLAN traffic to Management VLAN deny ip 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255 permit ip any any ``` ### 4. 集中式日志记录 我配置了核心路由器将所有系统日志和安全事件转发到 Wazuh SIEM,以进行集中监控和告警。 ``` ! Configure Router to send logs to Wazuh Server logging host 192.168.10.10 logging trap informational ``` ## 🔧 挑战与故障排除(经验教训) 本项目需要大量的故障排除工作。以下是我克服的主要技术障碍: ### 1. Wazuh JSON Decoder 错误 **问题**:尽管 Suricata 日志已被转发,但并未出现在 Wazuh dashboard 中。日志显示 `wazuh-analysisd ERROR Too many fields for JSON decoder`。 **解决方案**:Wazuh 中的默认 decoder 限制为 256 个字段,但 Suricata 的 `eve.json` 非常冗长。我修改了 `internal_options.conf` 文件以增加该限制: ``` # /var/ossec/etc/internal_options.conf analysisd.decoder_order_size=1024 # Changed from 256 ``` 我后来了解到,自定义更改应该改为在 `/var/ossec/etc/local_internal_options.conf` 文件中进行,以便在 Wazuh 升级后依然保留。 ### 2. 交换机镜像不兼容(SPAN Port 失败) **问题**:在配置 IDS 时,交换机上的 `monitor session` 命令失败并显示“Invalid Input”错误。我发现我最初使用的 Cisco IOU L2 镜像不支持 Port Mirroring (SPAN),而这对将流量发送到 Suricata 至关重要。这是我在项目中遇到的最大挫折。 **解决方案**:我将网络基础设施迁移到了支持 local SPAN 的 **Cisco vIOS Layer 2** 镜像。这需要重建拓扑并重新输入所有交换机命令,但成功实现了流量检查。将来,我会尝试在实施之前验证潜在设备的硬件能力是否满足我的需求。 ### 3. Suricata Socket 权限 **问题**:Suricata 服务反复失败,提示 `failed to create socket directory /var/run/suricata/: Permission denied`。 **解决方案**:这是 Ubuntu 服务器上的权限冲突。我手动创建了运行目录并将所有权分配给 `suricata` 用户。 ``` sudo mkdir /var/run/suricata sudo chown suricata:suricata /var/run/suricata ``` ## 📂 配置文件 [Router_config.cfg](configs/Router_config.cfg) - ACLs, Subinterfaces, and DHCP. [Switch_config.cfg](configs/Switch_config.cfg) - VLANs, Trunking, and SPAN port. [ossec.conf](configs/ossec.conf) - Wazuh Agent configuration snippets. ## ⚠️ 免责声明 本仓库及相关实验室环境仅用于教育目的。所有攻击和模拟均在一个隔离、经授权且虚拟化的环境中进行,旨在展示防御能力和网络监控概念。
标签:AMSI绕过, ASAv, Cisco, GNS3, IPS, IP 地址批量处理, Metaprompt, Nmap, OISF, Suricata, VLAN, VMware, Wazuh, Windows 10, 企业网络仿真, 入侵检测系统, 威胁检测, 威胁检测与响应, 安全事件监控, 安全数据湖, 安全架构, 安全运营, 家庭实验室, 密码管理, 扫描框架, 插件系统, 日志管理, 现代安全运营, 网络分段, 网络安全, 网络模拟, 虚拟驱动器, 蜜罐, 证书利用, 防御深度, 隐私保护