SohamSaha408/SIEM
GitHub: SohamSaha408/SIEM
基于 Python 和 SQLite 构建的轻量级 SIEM 日志分析与威胁狩猎管线,支持 auth.log 和 Nginx 日志的 ETL 解析、威胁检测、白名单误报过滤及 Tableau 可视化。
Stars: 0 | Forks: 0
# 自定义 SIEM 日志分析与威胁狩猎 Pipeline
这是一个基于 Python 和 SQL 的安全信息与事件管理(SIEM)数据 pipeline,旨在解析系统身份验证日志(`auth.log`)和 Nginx Web 服务器访问日志(`nginx_access.log`),将它们导入到一个已建立索引的 SQLite 数据库中,运行威胁狩猎查询以检测异常,并导出干净的聚合数据用于 Tableau 仪表板。
此外,该工具还包含一个**交互式实时安全审计器**,可扫描您本机的活动日志,并使用员工白名单过滤误报。
## 🏗️ Pipeline 架构
该 pipeline 通过五个核心阶段处理数据:
```
graph TD
A[Raw Log Source: auth.log & nginx_access.log] --> B[Data Parser & Cleaner: Pandas & Regex]
B --> C[Cleaned CSVs: cleaned_auth_logs.csv & cleaned_nginx_logs.csv]
C --> D[Database Storage: SQLite Database]
D --> E[Threat Hunting: Advanced SQL Queries]
D --> F[Tableau Exporter: Curated Datasets]
F --> G[Tableau Dashboard Viz]
```
1. **日志生成**:生成合成日志,模拟包含正常系统活动和定向攻击(SSH 暴力破解和目录遍历)的真实 Web 流量和身份验证事件。
2. **ETL(提取、转换、加载)**:基于正则表达式的解析器从原始非结构化文本文件中提取字段(时间戳、源 IP、HTTP 状态/操作、目标 URL/用户),并标准化数据类型。
3. **数据库存储**:清洗后的日志被加载到已建立索引的 SQLite 数据库(`siem_pipeline.db`)中。
4. **威胁狩猎**:分析型 SQL 查询关联系统异常,并检测凭据泄露或路径遍历。
5. **可视化**:导出聚合的 CSV 文件,为交互式 Tableau 安全仪表板提供数据源。
## 📁 仓库结构
* `run.py` — 统一的命令行入口点和 SET 风格的交互式 TUI。
* `generate_logs.py` — 模拟并构建带有安全异常的原始日志文件。
* `parse_logs.py` — 使用正则表达式和 Pandas 提取并清理字段。
* `store_logs.py` — 连接到 SQLite,设置表 schema,添加索引并加载数据。
* `hunt_threats.py` — 针对本地数据库运行威胁狩猎 SQL 查询。
* `export_for_tableau.py` — 导出针对 Tableau 仪表板组件优化的 CSV 数据集。
* `live_audit.py` — 评估本地系统日志,并将其与员工白名单进行关联。
* `employee_directory.csv` — 包含用户名、姓名和已批准 IP 的白名单。
* `test_parser.py` — 验证正则表达式解析器功能的 Python 单元测试套件。
## ⚙️ 安装与设置
如果您已经从 GitHub 克隆了此仓库,请按照以下步骤在您的机器上运行此 pipeline:
### 1. 克隆仓库
将仓库克隆到您的本地计算机并导航至该目录:
```
git clone https://github.com/SohamSaha408/SIEM.git
cd SIEM
```
### 2. 设置虚拟环境(可选但推荐)
创建虚拟环境可以隔离项目依赖项:
```
# 在 Linux / macOS 上:
python3 -m venv venv
source venv/bin/activate
# 在 Windows (Command Prompt) 上:
python -m venv venv
venv\Scripts\activate.bat
# 在 Windows (PowerShell) 上:
python -m venv venv
venv\Scripts\Activate.ps1
```
### 3. 安装依赖项
安装 `requirements.txt` 中指定的所需库(Pandas):
```
pip install -r requirements.txt
```
## 🚀 如何运行该工具
该仓库使用统一的运行脚本 **`run.py`**。您可以通过两种模式运行它:
### 模式 A:交互式 TUI 菜单(用于手动审计)
要启动社会工程学工具包(SET)风格的交互式 TUI 菜单,只需运行脚本而无需传递任何参数:
```
python run.py
```
这将加载一个文本菜单,您可以通过它运行单个 pipeline 阶段、运行单元测试、查看白名单或执行实时系统安全审计。
### 模式 B:自动化脚本模式(用于 Cron / 自动化任务)
要实现 pipeline 自动化或在无菜单的情况下运行特定阶段,请传递相应的命令行标志:
```
# 静默地端到端运行整个 pipeline
python run.py --all
# 仅运行 log generator 和 parser 阶段
python run.py --generate --parse
# 针对 SQLite database 运行 threat hunting 查询
python run.py --hunt
# 直接启动 live system auditor
python run.py --live
```
## 🛡️ 白名单与误报过滤
当运行**实时系统审计**(`python run.py --live` 或菜单中的**选项 7**)时,该工具会使用 **[employee_directory.csv](file:///d:/boii/employee_directory.csv)** 来丰富系统日志并对操作进行分类:
* **低风险**:源自员工批准 IP 的白名单账户失败登录将被标记为 `LOW RISK - EMPLOYEE FAT-FINGER TYPO`(防止触发错误警报)。
* **严重不匹配**:源自未批准 IP 的员工账户成功登录将触发严重的 `ALERT! (IP MISMATCH)` 警告。
* **高风险**:来自未知外部 IP 且针对管理员账户(`root`、`admin`)的失败登录将触发 `HIGH RISK - BRUTE FORCE DETECTED`。
## 📊 Tableau 仪表板集成
将 `/boii` 目录中导出的以下文件导入到 Tableau 中:
1. `tableau_traffic_timeline.csv` — 将每小时流量和错误映射到双轴折线图,以突出显示扫描峰值。
2. `tableau_ssh_attacks.csv` — 创建一个按 IP 分组的失败身份验证垂直条形图,以隔离攻击者。
3. `tableau_web_attacks.csv` — 提供一个原始详细网格,突出显示异常的目标目录(如 `/etc/passwd`)。
标签:Python, SQLite, Tableau, 多线程, 安全数据分析, 无后门, 逆向工具