Sahil1445/SOC-Log-Analyzer

GitHub: Sahil1445/SOC-Log-Analyzer

一个基于 Flask 的轻量级安全运营中心仪表板,提供日志解析、威胁检测和实时可视化监控功能。

Stars: 0 | Forks: 0

# 🛡 Mini SOC — 安全运营中心 一个功能完整的实时日志监控与威胁检测仪表板 使用 Python (Flask)、SQLite、Chart.js 以及深色网络安全风格 UI 构建。 ## 📁 项目结构 ``` mini-soc/ ├── app.py ← Flask backend (all routes + logic) ├── requirements.txt ← Python dependencies ├── sample_logs.txt ← Sample Apache log file for testing ├── instance/ │ └── soc.db ← SQLite database (auto-created) ├── uploads/ ← Uploaded log files (auto-created) ├── templates/ │ ├── login.html ← Login page │ └── dashboard.html ← Main SOC dashboard └── static/ ├── css/ │ └── dashboard.css ← Dark cybersecurity theme └── js/ └── dashboard.js ← Charts, real-time updates, file upload ``` ## ⚡ 快速开始 ### 1. 安装 Python 依赖 ``` pip install -r requirements.txt ``` ### 2. 运行应用程序 ``` python app.py ``` ### 3. 在浏览器中打开 ``` http://localhost:5000 ``` ### 4. 登录 - **用户名:** `admin` - **密码:** `admin123` ## 🔑 功能 | 功能 | 描述 | |---|---| | **日志上传** | 上传 `.txt` / `.log` 文件(Apache、auth.log、自定义) | | **日志解析** | 提取 IP、时间戳、方法、路径、状态、严重程度 | | **威胁检测** | 暴力破解、HTTP flood、路径扫描检测 | | **严重程度级别** | LOW / MEDIUM / HIGH 分类 | | **实时仪表板** | 每 4 秒自动刷新 | | **模拟** | 生成逼真的虚假日志流量 | | **图表** | 每小时流量(折线图)+ 状态码分布(环形图) | | **登录系统** | 基于 session 的身份认证 | ## 🧪 使用示例日志进行测试 1. 登录到仪表板 2. 点击侧边栏中的 **Upload Logs** 3. 上传 `sample_logs.txt`(已包含在内) 4. 在 **Threat Alerts** 部分查看检测到的威胁 示例文件包含: - 暴力破解尝试 (192.168.1.100, 45.33.32.156, 10.10.10.10) - 路径扫描 (185.220.101.34 — 20+ 个独立路径) - HTTP 错误 flood (198.51.100.77) ## 🚀 工作原理 ### 后端 (app.py) 1. **日志解析** — 正则表达式匹配 Apache Combined Log Format 和 auth.log 2. **严重程度分类** — 基于 HTTP 状态码 3. **威胁检测** — 在每次上传后或每约 10 个模拟 tick 后运行: - 暴力破解: 同一 IP 产生 ≥5 个 HTTP 401 响应 - HTTP Flood: 同一 IP 产生 ≥10 个 4xx/5xx 响应 - 路径扫描: 同一 IP 访问 ≥20 个不同的路径 4. **REST API** — 用于所有数据的 JSON endpoint(`/api/stats`, `/api/logs`, `/api/upload`) 5. **实时模拟** — 后台线程每 2 秒插入条目 ### 前端 (dashboard.js) 1. 每 4 秒自动轮询 `/api/stats` 2. 渲染 Chart.js 图表(折线图 + 环形图)并进行实时更新 3. 动态的 KPI 计数器、严重程度徽章、风险条 4. 支持拖拽的文件上传 ## 🔧 扩展项目 ### 添加更多威胁类型 在 `app.py` 的 `detect_threats()` 中: ``` # SQL 注入检测 rows = conn.execute(""" SELECT ip_address, COUNT(*) AS cnt FROM logs WHERE path LIKE '%SELECT%' OR path LIKE '%UNION%' GROUP BY ip_address HAVING cnt >= 1 """).fetchall() ``` ### 添加 GeoIP 查询 ``` pip install geoip2 ``` ``` import geoip2.database reader = geoip2.database.Reader('GeoLite2-City.mmdb') response = reader.city(ip_address) country = response.country.name ``` ### 添加邮件警报 ``` import smtplib def send_alert_email(threat): # Send via SMTP when HIGH severity threat detected ... ``` ### 添加更多日志格式 在 `parse_log_line()` 中扩展额外的正则表达式模式: ``` NGINX_PATTERN = re.compile(r'...') SYSLOG_PATTERN = re.compile(r'...') ``` ### 生产环境部署 ``` pip install gunicorn gunicorn -w 4 -b 0.0.0.0:5000 app:app ``` ## 🛡 安全提示 - 在生产环境中更改 `SECRET_KEY`(使用环境变量) - 首次登录后更改默认管理员密码 - 在生产环境中运行在反向代理 (nginx) 之后 - 使用 SSL 证书启用 HTTPS
标签:AMSI绕过, Flask, SQLite, 威胁检测, 安全运营中心, 数据可视化, 红队行动, 网络映射, 逆向工具