paridhi260407/LogLens-Security-Log-Analysis
GitHub: paridhi260407/LogLens-Security-Log-Analysis
一个全栈轻量级 SIEM 应用,专注于解析 Apache/Nginx 日志并通过正则签名检测 Web 攻击及可视化安全分析。
Stars: 0 | Forks: 1
# 🛡️ LogLens - 简化的安全日志分析与威胁情报
LogLens 是一个全栈、达到实习要求的网络安全应用程序,专为实时和批量分析 Apache 和 Nginx Web 服务器日志(通用日志格式和组合日志格式)而设计。它融合了内存高效的流式日志解析、基于签名的 OWASP 威胁检测、滑动窗口暴力破解追踪、GeoIP 可视化映射、动态风险评分、上下文建议以及多格式报告导出(PDF、CSV、JSON)。
## 📸 概览与仪表板功能
- **执行风险摘要卡片**:显示总日志数、总威胁数、最高严重性、最危险 IP 地址、受攻击最多的 Endpoint 以及总体风险评分(`Critical`、`High`、`Medium`、`Low`)。
- **已解析日志检查器选项卡**:完全可搜索和可过滤的日志浏览器,显示行号、时间戳 (ISO)、IP 地址、HTTP 方法、请求路径、状态码徽章、User Agent、国家/地区,以及可展开的 **原始日志行** 代码检查器。
- **增强型威胁详情表**:显示行号、严重性徽章、IP 及位置、HTTP 方法、攻击向量、目标 Endpoint、匹配的正则表达式模式以及特定的安全建议。
- **上下文安全加固部分**:针对每个检测到的攻击向量(SQLi、XSS、目录遍历、暴力破解、命令注入、探测扫描)提供可操作的修复建议。
- **多条件高级过滤**:按攻击类型、严重性、IP 地址、HTTP 方法、状态码、国家/地区和全局搜索字符串过滤威胁和日志。
- **多格式报告导出**:下载执行安全审计 PDF 报告、原始 CSV 数据集和完整的 JSON 分析转储。
- **4 阶段处理进度条**:动态进度更新(*上传文件* → *解析日志* → *检测威胁* → *构建仪表板*)。
## 🏗️ 系统架构
```
+-----------------------------------------------------------------------------------+
| REACT FRONTEND |
| +-------------------+ +---------------------+ +---------------------------+ |
| | Landing & Upload | | Executive Risk Card | | Leaflet GeoIP World Map | |
| +-------------------+ +---------------------+ +---------------------------+ |
| +-------------------+ +---------------------+ +---------------------------+ |
| | Recharts Visuals | | Parsed Logs Table | | Threats & Regex Details | |
| +-------------------+ +---------------------+ +---------------------------+ |
| +-------------------+ +---------------------+ +---------------------------+ |
| | Global Search Bar | | Security Hardening | | PDF / CSV / JSON Exports | |
| +-------------------+ +---------------------+ +---------------------------+ |
+-----------------------------------------------------------------------------------+
| HTTP REST API / JSON
v
+-----------------------------------------------------------------------------------+
| FLASK BACKEND |
| +-------------------+ +---------------------+ +---------------------------+ |
| | File Upload API | | 4-Stage Job Worker | | Streaming Regex Parser | |
| +-------------------+ +---------------------+ +---------------------------+ |
| +-------------------+ +---------------------+ +---------------------------+ |
| | Threat Engine | | GeoIP Resolver | | Risk Score Calculator | |
| +-------------------+ +---------------------+ +---------------------------+ |
+-----------------------------------------------------------------------------------+
|
v
[ SQLite Database ]
```
## 🧠 技术深入解析
### 1. 流式生成器正则表达式解析器
LogLens 使用 Python 生成器(`yield`)逐行读取 `.log` 和 `.txt` 文件,避免将数 GB 的日志文件全部加载到内存 RAM 中。
```
LOG_REGEX = re.compile(
r'^(?P[0-9a-fA-F:.]+)\s+' # Remote Host IP
r'\S+\s+\S+\s+' # Identity & User ID
r'\[(?P[^\]]+)\]\s+' # Timestamp [dd/MMM/yyyy:HH:mm:ss +zzzz]
r'"(?P[^"]*)"\s+' # Request line "METHOD /path HTTP/x.x"
r'(?P\d{3})\s+' # HTTP Status Code
r'(?P\d+|-)' # Response Bytes
r'(?:\s+"(?P[^"]*)"\s+"(?P[^"]*)")?' # Optional Referrer & User-Agent
)
```
### 2. 威胁检测与滑动窗口暴力破解
威胁检测引擎使用 `signatures.json` 中编译的正则表达式进行签名匹配,并结合滑动时间窗口队列进行暴力破解检测:
$$\text{Brute Force Trigger} = \text{Count}\left(\{ \text{Status} \in (401, 403) \mid t_{\text{entry}} - t_{\text{cutoff}} \le 600\text{s} \}\right) \ge 5$$
### 3. 总体风险评分计算
总体风险评分使用加权严重性指数公式:
$$\text{Risk Index} = (N_{\text{Critical}} \times 4) + (N_{\text{High}} \times 3) + (N_{\text{Medium}} \times 2) + (N_{\text{Low}} \times 1)$$
- **Critical**:风险指数 $\ge 25$ 或 Critical 数量 $\ge 3$
- **High**:风险指数 $\ge 12$ 或 High 数量 $\ge 3$
- **Medium**:风险指数 $\ge 4$ 或 Medium 数量 $\ge 2$
- **Low**:风险指数 $< 4$
## 🔌 API 参考
| Endpoint | Method | 描述 |
| :--- | :--- | :--- |
| `/api/health` | `GET` | API 健康检查 |
| `/api/upload` | `POST` | 上传自定义 `.log` 文件 |
| `/api/demo` | `POST` | 运行即时演示分析(`demo.log`) |
| `/api/jobs//status` | `GET` | 任务进度百分比与状态 |
| `/api/jobs//results` | `GET` | 摘要、时间线、主要攻击者、建议、地图坐标 |
| `/api/jobs//threats` | `GET` | 已过滤的威胁及其匹配的正则表达式与建议 |
| `/api/jobs//logs` | `GET` | 已过滤的解析日志及原始日志行视图 |
| `/api/jobs//export/pdf` | `GET` | 下载 PDF 安全审计报告 |
| `/api/jobs//export/csv` | `GET` | 下载 CSV 数据集(`?type=threats` 或 `?type=logs`) |
| `/api/jobs//export/json` | `GET` | 下载完整的 JSON 报告转储 |
## ⚙️ 设置与运行
```
# Backend Server 设置
cd backend
pip install -r requirements.txt
python test_app.py # Run unit tests
python app.py # Runs Flask API on http://127.0.0.1:5000
# Frontend React 设置
cd frontend
npm install
npm run dev # Runs Vite Dev Server on http://localhost:3000
```
标签:AMSI绕过, CISA项目, React, Syscalls, Web安全, 威胁检测, 安全仪表盘, 网页分析工具, 自定义脚本, 蓝队分析, 逆向工具