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, 多线程, 安全数据分析, 无后门, 逆向工具