Javier-NarvaezZ/suricata-ids-lab

GitHub: Javier-NarvaezZ/suricata-ids-lab

一个基于 Suricata 的网络入侵检测实验环境,提供自定义检测规则和自动化攻击模拟以验证安全威胁检测能力。

Stars: 0 | Forks: 0

# 🛡️ Suricata IDS 实验环境 - 网络入侵检测系统 [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Platform: VirtualBox](https://img.shields.io/badge/Platform-VirtualBox-orange.svg)]() [![IDS: Suricata 8.0.3](https://img.shields.io/badge/IDS-Suricata%208.0.3-red.svg)](https://suricata.io/) [![Detection Rate: 100%](https://img.shields.io/badge/Detection%20Rate-100%25-success.svg)]() ## 目录 - [概述](#overview) - [功能](#features) - [架构](#architecture) - [前置条件](#prerequisites) - [快速开始](#quick-start) - [自定义检测规则](#custom-detection-rules) - [测试与验证](#testing--validation) - [项目结构](#project-structure) - [文档](#documentation) - [结果](#results) - [路线图](#roadmap) - [贡献](#contributing) - [许可证](#license) - [作者](#author) ## 概述 本项目演示了一个功能齐全的网络入侵检测系统 (IDS),该系统使用部署在虚拟化实验室环境中的 **Suricata 8.0.3**。该实验环境包含自定义检测规则、自动化攻击模拟以及用于安全事件分析的综合日志记录。 **主要目标:** - 设计并实现用于安全测试的分段网络架构 - 配置 Suricata IDS 以进行实时威胁检测 - 为常见攻击向量的开发自定义检测规则 - 通过受控的渗透测试验证规则有效性 - 使用结构化的 JSON 日志分析安全事件 ## 功能 ### 检测能力 - **50,154 条活动检测规则**(Emerging Threats + 自定义规则) - 实时流量监控和告警 - 支持多种协议:TCP、UDP、ICMP、HTTP、DNS、TLS - MITRE ATT&CK 框架关联 ### 已实现的自定义规则 - **Nmap TCP SYN 扫描检测** - 识别端口扫描活动 - **ICMP 泛洪攻击检测** - 检测基于 ping 泛洪的 DoS 尝试 - **SSH 暴力破解检测** - 针对多次身份验证失败发出告警 - **Nmap Ping 扫描检测** - 识别网络侦察活动 ### 日志与分析 - 快速告警日志(`fast.log`) - 结构化 JSON 事件日志(`eve.json`) - 性能统计跟踪 - 兼容 SIEM 集成(支持 ELK Stack) ### 基础设施 - 用于安全测试的隔离虚拟网络 - 双接口配置(管理 + 监控) - 自动化部署脚本 - 可重现的环境设置 ## 架构 ### 网络拓扑 ``` ┌─────────────────────────────────────────────────┐ │ Physical Network (Bridge Mode) │ │ Internet Access + SSH │ └────────────┬────────────────────┬────────────────┘ │ │ ┌────────▼────────┐ ┌────────▼────────┐ │ Ubuntu Server │ │ Kali Linux │ │ (Suricata IDS) │ │ (Attacker) │ │ Adapter 1 │ │ Adapter 2 │ └────────┬────────┘ └────────┬────────┘ │ │ │ Internal Network │ │ (labnet) │ │ 192.168.100.0/24 │ │ │ ┌────────▼────────┐ ┌────────▼────────┐ │ 192.168.100.10 │ │ 192.168.100.20 │ │ enp0s8 (IDS) │ │ eth0 (Attack) │ └─────────────────┘ └─────────────────┘ ``` ### 组件 | 组件 | 操作系统 | vCPU | RAM | 角色 | |-----------|----|----|-----|------| | **Suricata-IDS** | Ubuntu Server 22.04 LTS | 1 | 2GB | IDS/IPS 引擎 + 监控 | | **Kali-Linux** | Kali Linux 2024.x | 2 | 2GB | 渗透测试 + 攻击模拟 | **网络分段:** - **桥接网络:** 用于管理和互联网访问 - **内部网络:** 用于攻击模拟和监控的隔离环境 ## 前置条件 ### 软件要求 - **VirtualBox** 6.1+ 或 VMware Workstation - **Ubuntu Server 22.04 LTS** ISO - **Kali Linux**(VirtualBox 镜像或 ISO) - 宿主机至少需要 **8GB RAM** 和 **40GB 磁盘空间** ### 知识要求 - 基本的 Linux 命令行操作 - 了解 TCP/IP 网络 - 熟悉安全概念(IDS、防火墙、端口扫描) ## 快速开始 ### 1. 克隆仓库 ``` git clone https://github.com/YOUR-USERNAME/suricata-ids-lab.git cd suricata-ids-lab ``` ### 2. 设置虚拟机 请遵循 [`docs/02-setup-guide.md`](docs/02-setup-guide.md) 中的详细设置指南 **快速摘要:** 1. 创建具有 2 个网络适配器(桥接 + 内部)的 Ubuntu Server 虚拟机 2. 安装 Ubuntu Server 并在内部网络上配置静态 IP `192.168.100.10` 3. 导入 Kali Linux 虚拟机并配置内部网络适配器 ### 3. 安装 Suricata 在 Ubuntu 虚拟机上: ``` # 添加官方 Suricata repository sudo add-apt-repository ppa:oisf/suricata-stable -y sudo apt update # 安装 Suricata sudo apt install suricata -y # 安装 rule 管理工具 sudo apt install suricata-update -y # 下载 Emerging Threats rules sudo suricata-update ``` ### 4. 部署自定义规则 ``` # 复制自定义 rules 到 Suricata sudo cp configs/local.rules /var/lib/suricata/rules/ # 更新 Suricata 配置 sudo cp configs/suricata.yaml /etc/suricata/ # 重启 Suricata 服务 sudo systemctl restart suricata sudo systemctl status suricata ``` ### 5. 验证安装 ``` # 检查已加载的 rules sudo grep "rules successfully loaded" /var/log/suricata/suricata.log | tail -n 1 # 实时监控 alerts sudo tail -f /var/log/suricata/fast.log ``` ## 自定义检测规则 ### 规则开发方法 所有自定义规则均遵循以下原则: - **基于阈值的检测**,以最大程度地减少误报 - **清晰的签名 ID (SID)**,从 1000001 开始 - **MITRE ATT&CK 映射**,用于威胁分类 - 在受控环境中**经过测试和验证** ### 示例:SSH 暴力破解检测 ``` alert tcp any any -> $HOME_NET 22 ( msg:"SSH Brute Force Attempt Detected"; flags:S,12; threshold: type threshold, track by_src, count 5, seconds 60; classtype:attempted-admin; sid:1000003; rev:1; ) ``` **逻辑:** 当在 60 秒内检测到来自同一源 IP 的 5 个或以上针对端口 22 的 TCP SYN 数据包时触发。 **完整的规则文档:** [`docs/03-rules-explained.md`](docs/03-rules-explained.md) ## 测试与验证 ### 攻击场景 | 测试 | 工具 | 命令 | 检出率 | |------|------|---------|----------------| | Ping 扫描 | Nmap | `nmap -sn 192.168.100.10` | 100% | | ICMP 泛洪 | hping3 | `hping3 -1 --flood 192.168.100.10` | 100% | | 端口扫描 | Nmap | `nmap -sS 192.168.100.10` | 100% | | SSH 暴力破解 | Hydra | `hydra -l user -P wordlist.txt ssh://192.168.100.10` | 100% | ### 运行测试 从 Kali Linux 虚拟机中: ``` # 运行自动化攻击模拟 ./scripts/run-attacks.sh # 预期输出:所有测试触发相应的 Suricata alerts ``` **详细的测试方法:** [`docs/04-attack-scenarios.md`](docs/04-attack-scenarios.md) ## 项目结构 ``` suricata-ids-lab/ ├── README.md # This file ├── LICENSE # MIT License ├── .gitignore # Git ignore file │ ├── docs/ # Documentation │ ├── 01-architecture.md # Network design and topology │ ├── 02-setup-guide.md # Step-by-step installation guide │ ├── 03-rules-explained.md # Custom rule analysis │ ├── 04-attack-scenarios.md # Testing methodology │ ├── 05-results.md # Performance metrics and findings │ └── images/ # Architecture diagrams │ └── architecture-diagram.png │ ├── configs/ # Configuration files │ ├── suricata.yaml # Suricata main configuration (sanitized) │ ├── local.rules # Custom detection rules │ └── netplan-config.yaml # Ubuntu network configuration │ ├── scripts/ # Automation scripts │ ├── deploy-lab.sh # Automated VM setup │ ├── run-attacks.sh # Attack simulation script │ └── analyze-logs.py # Log parser and analyzer │ └── evidence/ # Evidence and results ├── screenshots/ # Key project screenshots │ ├── 01-topology-virtualbox.png │ ├── 02-ubuntu-config.png │ ├── 03-kali-config.png │ ├── 04-network-test.png │ ├── 05-suricata-running.png │ ├── 06-rules-loaded.png │ ├── 07-local-rules.png │ ├── 08-yaml-config.png │ ├── 09-nmap-ping-sweep.png │ ├── 10-icmp-flood.png │ ├── 11-nmap-syn-scan.png │ ├── 12-ssh-brute-force.png │ ├── 13-alert-summary.png │ ├── 14-fast-log.png │ ├── 15-json-alerts.png │ └── 16-stats-log.png └── logs/ # Sample logs (sanitized) ├── fast.log.sample └── eve.json.sample ``` ## 文档 [`docs/`](docs/) 目录中提供了详尽的文档: - **[架构概述](docs/01-architecture.md)** - 网络设计、VM 规范和拓扑 - **[设置指南](docs/02-setup-guide.md)** - 完整的安装步骤及故障排除 - **[规则解析](docs/03-rules-explained.md)** - 对自定义检测规则的深入分析 - **[攻击场景](docs/04-attack-scenarios.md)** - 渗透测试方法及结果 - **[结果与分析](docs/05-results.md)** - 性能指标、检出率和经验教训 ## 结果 ### 检测性能 - **总活动规则数:** 50,154(50,150 条 Emerging Threats + 4 条自定义) - **检出率:** 100%(检测到 4/4 个攻击场景) - **误报率:** 0%(在受控测试期间) - **平均告警延迟:** < 1 秒 ### 告警输出示例 ``` 05/17/2026-17:37:31.321637 [**] [1:1000004:1] NMAP Ping Sweep Detected [**] [Classification: Attempted Information Leak] [Priority: 2] {ICMP} 192.168.100.20:8 -> 192.168.100.10:0 ``` **完整分析:** [`docs/05-results.md`](docs/05-results.md) ## 路线图 ### 第 2 阶段增强功能 - [ ] **IPS 模式:** 实现内联拦截恶意流量 - [ ] **ELK Stack 集成:** 使用 Kibana 仪表板可视化告警 - [ ] **告警通知:** 为关键事件配置电子邮件/Slack 通知 - [ ] **机器学习:** 使用 Suricata + Python ML 模型进行异常检测 ### 第 3 阶段高级功能 - [ ] **蜜罐集成:** 部署 Cowrie SSH 蜜罐以获取威胁情报 - [ ] **威胁情报源:** 与 AlienVault OTX、AbuseIPDB 集成 - [ ] **多分段网络:** 扩展到 DMZ + 内部 + 访客网络 - [ ] **自动化响应:** 使用 Python 脚本自动更新防火墙规则 ## 许可证 本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 ## 作者 **Javier Andrés Narváez Hoyos** - 🎓 西蒙·玻利瓦尔大学系统工程学生 - 🔐 网络安全爱好者 | 培训中的 SOC 分析师 - 📍 哥伦比亚巴兰基亚 - 📧 电子邮件:javiernarvaez499@gmail.com - 💼 LinkedIn:[linkedin.com/in/javier-narvaez](https://www.linkedin.com/in/javier-narvaez499/) - 🐙 GitHub:[github.com/Javier-NarvaezZ](https://github.com/Javier-NarvaezZ) ## 致谢 - [Suricata IDS/IPS](https://suricata.io/) - 开源网络威胁检测引擎 - [Emerging Threats](https://rules.emergingthreats.net/) - 社区规则集 - [Kali Linux](https://www.kali.org/) - 渗透测试发行版 - [MITRE ATT&CK](https://attack.mitre.org/) - 威胁分类框架

⭐ 如果您觉得这个项目有帮助,请考虑给它点个 Star!

怀着 💙 为网络安全社区而构建

标签:Metaprompt, PB级数据处理, Suricata, 前端框架, 安全运维, 应用安全, 插件系统, 流量监控, 现代安全运营, 网络安全, 虚拟化实验环境, 逆向工具, 隐私保护