Bfreaky/CSMS-Cyber-Security-Monitoring-System

GitHub: Bfreaky/CSMS-Cyber-Security-Monitoring-System

结合日志分析、威胁情报、机器学习和交互式仪表板的端到端网络安全监控平台,用于安全事件的检测、分类、预测与可视化运营。

Stars: 0 | Forks: 0

# 🛡️ CSMS — 网络安全监控系统 ![Python](https://img.shields.io/badge/Python-3.10%2B-blue) ![License](https://img.shields.io/badge/License-MIT-green) ![scikit-learn](https://img.shields.io/badge/scikit--learn-ML-orange) ![Streamlit](https://img.shields.io/badge/Streamlit-Dashboard-red) 一个端到端的安全分析平台,结合了**日志分析、威胁情报、交互式仪表板和应用机器学习**,用于监控、分析和预测网络安全事件。 ## 示例输出

## 项目结构 ``` CSMS_Project/ ├── data/ │ ├── raw_logs/security_logs.csv # Synthetic security event log (25k+ records) │ └── processed_data/ │ ├── cleaned_security_logs.csv # Cleaned, feature-engineered dataset │ └── user_anomaly_profile.csv # Per-user behavioral profile (ML output) ├── database/ │ ├── schema.sql # PostgreSQL/MySQL schema + views │ ├── csms.db # SQLite demo DB (portable, pre-loaded) │ └── queries/ │ ├── kpi_dashboards.sql # 10 KPI queries │ └── incident_reports.sql # 6 incident reporting queries ├── src/ │ ├── generate_dataset.py # Synthetic log generator │ ├── data_preprocessing.py # Cleaning pipeline │ ├── load_to_db.py # Loads cleaned data into SQLite │ ├── eda_analysis.py # EDA + visualizations (Matplotlib/Seaborn/Plotly) │ ├── generate_excel_report.py # Excel executive report generator │ └── machine_learning/ │ ├── login_classifier.py # Model 1: Suspicious login detector │ ├── anomaly_detector.py # Model 2: User anomaly detector │ ├── incident_classifier.py # Model 3: Attack category classifier │ └── attack_forecaster.py # Model 4: Attack volume forecaster ├── web_app/ │ └── app.py # Streamlit interactive dashboard ├── reports/ │ ├── figures/ # All generated charts (PNG + interactive HTML) │ ├── CSMS_Executive_Report.xlsx # Multi-sheet Excel report │ └── attack_volume_forecast.csv # 14-day forecast output ├── requirements.txt └── README.md ``` ## 快速开始 ``` # 安装依赖 pip install -r requirements.txt # 生成数据集(或使用相同 schema 引入你自己的日志) python src/generate_dataset.py # 清洗与预处理 python src/data_preprocessing.py # 加载到数据库(SQLite demo) python src/load_to_db.py # 运行 EDA 并生成可视化 python src/eda_analysis.py # 训练所有 ML 模型 python src/machine_learning/login_classifier.py python src/machine_learning/anomaly_detector.py python src/machine_learning/incident_classifier.py python src/machine_learning/attack_forecaster.py # 生成 Excel 执行报告 python src/generate_excel_report.py # 启动交互式 dashboard cd web_app streamlit run app.py ``` ## 数据集 **25,250 条合成安全日志记录**,时间跨度为 2026 年 1 月至 6 月,模拟了跨 100 多个系统、300 个用户和 10 种攻击类别的防火墙、IDS/IPS 和身份验证日志。包含真实的混乱数据(缺失值、重复项、大小写不一致)以演示清洗 pipeline,以及特定类别的行为特征(登录失败、数据传输量、目标系统类型、时间段偏差),以便 ML 模型学习到真实的模式而非噪声。 | 字段 | 描述 | |---|---| | `timestamp`, `date`, `hour`, `day_of_week` | 事件时间 | | `user_id`, `department` | 行为者 | | `source_ip`, `source_country` | 来源 | | `target_system`, `is_high_risk_system` | 目标 | | `attack_category`, `severity` | 分类 | | `failed_login_attempts`, `data_transfer_mb` | 行为信号 | | `detection_time_minutes`, `response_time_minutes` | MTTD/MTTR 来源 | | `anomaly_score`, `is_true_attack`, `status` | 结果标签 | ## 追踪的 KPI - **每日攻击次数**(包含 7 天趋势) - **平均检测时间 (MTTD)** — 整体、按严重程度、月度趋势 - **平均响应时间 (MTTR)** — 整体、按严重程度、月度趋势 - **高风险系统** — 按已确认的攻击量排名 - **攻击类别分析** — 百分比占比、每个类别的平均 MTTD/MTTR - **用户活动异常** — 可疑登录比例、异常评分 - **检测率和误报率** ## 机器学习模型 | # | 模型 | 任务 | 算法 | 结果 | |---|---|---|---|---| | 1 | 可疑登录检测器 | 二分类 | 随机森林 | **96.6%** 准确率,**0.99** ROC-AUC | | 2 | 用户异常检测器 | 无监督异常检测 | 孤立森林 | **0.84** 验证 AUC,标记风险最高的前 8% 用户 | | 3 | 攻击类别分类器 | 多分类(10 个类别) | 梯度提升 | **68%** 准确率(对比 10% 的随机基准) | | 4 | 攻击量预测器 | 时间序列预测 | Holt-Winters 指数平滑 | **9.6% MAPE**,14 天前瞻预测 | 所有训练好的模型均通过 `joblib` 序列化保存在 `src/machine_learning/saved_models/` 中,并由 Streamlit 应用重新加载以进行实时推理。 ## 仪表板 - **Streamlit 应用** (`web_app/app.py`):4 个标签页的交互式仪表板 — 威胁趋势、攻击模式、用户异常,以及一个实时 ML 预测演练场,您可以在其中调整输入并查看实时模型输出。 - **Power BI / Tableau**:将任一工具直接连接到 `database/csms.db`(或将 `schema.sql` 指向实时的 PostgreSQL/MySQL 实例),并基于 `daily_kpi_summary` 和 `confirmed_attacks` 视图构建仪表板,形成生产级的 BI 层。 - **静态 + 交互式图表**:`reports/figures/` 包含 PNG 文件 (Matplotlib/Seaborn)和独立的交互式 HTML 文件,可以嵌入到任何地方。 ## 关于合成数据集的说明 本项目附带了一个**生成的**数据集,因此无需任何外部依赖即可实现端到端运行。要使用真实数据,请将 `data/raw_logs/security_logs.csv` 替换为具有相同列 schema 的实际日志导出(或者调整 `data_preprocessing.py` 以匹配您的源列)— 下游的所有内容(SQL、EDA、ML、仪表板)无需更改即可正常运行。
标签:Apex, Kubernetes, Python, Streamlit, 安全运营, 扫描框架, 无后门, 机器学习, 测试用例, 访问控制, 逆向工具