SuriVisor是一个基于Suricata的综合性网络威胁分析系统,旨在提供高效的离线流量分析、网络报文异常处理以及实时威胁检测功能。本系统通过整合多种安全分析技术,为网络安全分析人员提供一个强大的工具平台。
- 构建不少于5种典型网络攻击场景(扫描、DDoS、ARP攻击、暴力破解等)
- 开发高效的数据包重组算法,确保在网络拥塞情况下达到60%以上的还原率
- 实现用户友好的界面,支持报文的下载和回放分析
- 实现自动化的流量模式识别与分类,达到60%的分类准确率
- 设计并实现对关键网络指标(乱序比例、丢包比例等)的监测机制
- 保证关键网络指标监测覆盖率达到80%,报警响应时间不超过3分钟
- 构造不少于5种网络攻击场景,记录异常事件并生成详细报告
- 集成实时流量分析、威胁检测和流量回放功能
- 确保系统在大规模流量场景下稳定运行,满足实时性要求
- 实现实时告警通知机制,支持WebSocket推送
- 提供协议分布可视化和流量统计图表
系统采用模块化设计,主要包含以下核心组件:
- Suricata核心引擎:负责网络流量捕获和初步分析
- 数据包重组模块:实现高效的数据包重组算法
- 流量分析模块:处理捕获的流量数据,识别潜在威胁
- 异常检测模块:监测网络异常指标,生成告警
- 用户界面:提供友好的操作界面和可视化展示
- 报告系统:生成详细的分析报告和安全建议
- WebSocket服务:提供实时告警推送功能
- 降级机制:在系统负载过高时自动降级,确保核心功能可用
SuriVisor/
├── .data/ # 数据存储目录
│ └── es_data/ # Elasticsearch数据
├── config/ # 配置文件
│ ├── logstash/ # Logstash配置
│ │ ├── README.md # Logstash配置说明
│ │ └── suricata.conf # Suricata日志处理配置
│ ├── rules/ # Suricata规则
│ │ ├── README.md # 规则说明
│ │ ├── brute_force.rules # 暴力破解检测规则
│ │ ├── classification.config # 分类配置
│ │ ├── ddos_detection.rules # DDoS检测规则
│ │ └── scan_detection.rules # 扫描检测规则
│ ├── suricata.yaml # Suricata配置文件
│ └── system.conf # 系统配置文件
├── data/ # 数据目录
│ └── logs/ # 系统日志
│ ├── suricata/ # Suricata运行日志
│ └── web_server.log # Web服务器日志
├── docker-compose.yml # Docker部署配置
├── requirements.txt # Python依赖项
├── scripts/ # 脚本工具
│ ├── clean.sh # 清理脚本
│ ├── setup.sh # 系统安装脚本
│ └── start.sh # 启动脚本
├── src/ # 源代码目录
│ ├── SuriVisor.py # 主类实现
│ ├── core/ # 核心功能模块
│ │ ├── ElasticSearch/ # ES客户端模块
│ │ ├── event_detection/ # 事件检测模块
│ │ ├── event_manager/ # 事件管理模块
│ │ ├── report_generator/ # 报告生成模块
│ │ ├── suricata_monitor/ # Suricata监控模块
│ │ └── traffic_analysis/ # 流量分析模块
│ ├── main.py # Web应用入口
│ └── utils/ # 工具函数
│ ├── __init__.py
│ ├── alert_utils.py # 告警处理工具
│ ├── result_utils.py # 结果处理工具
│ ├── system_utils.py # 系统工具
│ └── websocket_manager.py # WebSocket管理器
├── templates/ # 模板文件
│ ├── index.html # 主页模板
│ └── report.html # 报告模板
├── tests/ # 测试目录
│ ├── integration/ # 集成测试
│ ├── sc.json # 测试配置
│ └── unit/ # 单元测试
│ ├── test_anomaly_detector.py
│ ├── test_esclient.py
│ ├── test_event_manager.py
│ ├── test_packet_reassembler.py
│ ├── test_report_generator.py
│ └── test_traffic_analyzer.py
└── tools/ # 辅助工具
├── deploy_logstash_config.sh # Logstash配置部署工具
└── test_session_id.py # 会话ID测试工具
- 搭建Suricata运行环境
- 设计并实现系统核心架构
- 开发基础数据处理模块
- 实现数据包重组算法
- 开发流量分析模块
- 构建异常检测机制
- 实现WebSocket实时通知功能
- 开发Web界面和仪表盘
- 集成各功能模块
- 实现报告生成系统
- 添加协议分布可视化功能
- 构建测试场景
- 进行性能测试和优化
- 系统集成测试
- 实现系统降级机制
- 后端:
- Python 3.8+
- Flask 2.0+ (Web服务)
- Flask-SocketIO 5.3+ (WebSocket支持)
- Suricata 6.0+ (网络流量分析)
- 前端:
- Vue.js 3.x (仪表盘)
- Element Plus (UI组件库)
- Socket.IO 客户端 (实时通信)
- 数据分析:
- Pandas 1.3+
- NumPy 1.21+
- Scikit-learn 1.0+
- 网络分析:
- Pyshark 0.4
- Scapy 2.4
- 数据库:
- Elasticsearch 7.x (日志存储)
- SQLite (轻量级数据存储)
- 可视化:
- ECharts 5.x (数据可视化)
- Chart.js 3.x (图表展示)
- 其他工具:
- Logstash (日志收集)
- Kibana (日志可视化)
- Docker (容器化部署)
系统通过WebSocket技术实现实时告警推送,当检测到网络威胁时,立即在用户界面显示告警信息,无需刷新页面。
提供直观的协议分布图表,帮助分析人员快速了解网络流量组成,识别异常流量模式。
在系统负载过高或资源受限时,自动启用降级模式,确保核心安全监测功能不受影响。
支持通过Docker容器化部署,简化安装过程,提高系统可移植性。
- 一个完整的基于Suricata的威胁分析系统
- 高效的数据包重组算法实现
- 准确的流量模式识别与分类系统
- 完善的网络异常监测与报警机制
- 详细的系统文档和使用手册
- 实时告警通知与可视化展示功能