ionsec/Forti-DFIR

GitHub: ionsec/Forti-DFIR

Fortinet 日志解析工具,提供 CLI 与 Web 方式简化安全事件调查。

Stars: 1 | Forks: 1

# Forti-DFIR - IONSec Fortinet 日志解析工具 ## 概述 **IONSec Forti-DFIR 日志解析工具** 是一个用于分析 Fortinet VPN 和防火墙日志的综合性解决方案。可作为命令行工具或现代化 Web 应用程序使用,它能够提取关键数据并导出为 CSV 格式,从而简化事件响应者的安全调查流程。 由 **IONSec 研究团队** 开发。 ## 功能 - 🔍 **VPN 登录解析器**:提取成功的 VPN 登录详情。 - 📊 **防火墙日志聚合**:按目标 IP 汇总流量,过滤私有/本地地址。 - 📌 **VPN 会话关闭分析器**:提取特定用户的会话终止统计信息,包括发送字节数。 - 💻 **交互式 CLI 界面**:引导用户完成日志选择和解析选项。 - 🌐 **Web 应用程序**:现代化的 Web 界面,支持身份验证、文件上传和实时处理。 - 📂 **CSV 导出**:保存解析后的数据以便轻松分析。 - 📁 **多格式支持**:同时支持 Fortinet 日志格式和 CSV 文件。 - 🔒 **安全加固**:输入验证、速率限制、安全的身份验证。 - 🐳 **Docker 支持**:通过 Docker Compose 轻松部署。 - ☁️ **云端就绪**:支持一键部署到 Netlify 和 Vercel。 - 📖 **完整文档**:提供基于 Sphinx 的文档。 ## 快速开始 ### 选项 1:Web 应用程序(推荐) ``` # 克隆仓库 git clone https://github.com/ionsec/Forti-DFIR.git cd Forti-DFIR # 复制环境模板 cp .env.example .env # 使用您的凭据编辑 .env(重要!) # 使用 Docker 启动 cd web_app docker-compose up ``` 访问应用地址:http://localhost:3000 ### 选项 2:命令行界面 ``` # 克隆仓库 git clone https://github.com/ionsec/Forti-DFIR.git cd Forti-DFIR # 安装依赖 pip install pandas # 运行 CLI python log_parser.py ``` ## 安装 ### 先决条件 - Python **3.11+**(推荐) - `pandas` 库 ### CLI 安装 ``` git clone https://github.com/ionsec/Forti-DFIR.git cd Forti-DFIR pip install pandas python log_parser.py ``` ### Web 应用程序安装 **选项 A - 使用 Docker(推荐):** ``` cd web_app docker-compose up ``` **选项 B - 手动安装:** ``` # 后端 cd web_app/backend python -m venv venv source venv/bin/activate # Linux/macOS # 或:venv\Scripts\activate # Windows pip install -r requirements.txt # 复制并配置环境 cp ../../.env.example .env # 使用您的设置编辑 .env # 启动 Redis(Celery 所必需) redis-server # 启动 Celery 工作进程(单独终端) celery -A app.celery worker --loglevel=info # 启动 Flask 服务器 python app.py # 前端(单独终端) cd ../frontend npm install npm start ``` ## 配置 ### 环境变量 从模板创建 `.env` 文件: ``` cp .env.example .env ``` **生产环境必需:** | 变量 | 描述 | |----------|-------------| | `SECRET_KEY` | Flask 密钥(至少 32 个随机字符) | | `JWT_SECRET_KEY` | JWT 签名密钥(至少 32 个随机字符) | | `ADMIN_USER` | 初始管理员用户名 | | `ADMIN_PASSWORD` | 初始管理员密码(至少 12 位,含大小写字母、数字和特殊字符) | **生成安全密钥:** ``` python -c "import secrets; print(secrets.token_hex(32))" ``` ## CLI 用法 运行 CLI 工具: ``` python log_parser.py ``` ### 交互式菜单 ``` 1. Parse VPN logs 2. Parse and aggregate firewall logs 3. Parse VPN shutdown sessions for a user 4. Exit ``` ### CLI 选项 | 选项 | 描述 | |--------|-------------| | `1` | 解析 VPN 日志 - 提取成功登录详情 | | `2` | 解析防火墙日志 - 按目标 IP 聚合流量 | | `3` | 解析 VPN 关闭 - 提取特定用户的会话数据 | | `-help` | 显示使用说明 | | `-v` | 显示版本 | ## Web 应用程序 访问 Web 界面:http://localhost:3000 ### 功能 - **用户身份验证**:使用 JWT 令牌的 Secure 登录 - **文件上传**:支持 .txt、.log、.csv 文件的拖放上传 - **实时处理**:异步处理并带状态更新 - **结果预览**:在下载前查看解析后的数据 - **CSV 导出**:导出结果以便进一步分析 ### 默认凭据 ⚠️ **请立即在生产环境中更改这些默认值!** - 用户名:`admin` - 密码:`admin123` 通过环境变量设置自定义凭据: ``` export ADMIN_USER=your_username export ADMIN_PASSWORD='YourStrongPassword123!' ``` ## 输出格式 ### VPN 日志输出 | 列 | 描述 | |--------|-------------| | date | 日志条目日期 | | time | 日志条目时间 | | user | VPN 用户名 | | tunneltype | 隧道类型(例如 ssl-web) | | remip | 远程 IP 地址 | | reason | 登录原因/状态 | | msg | 附加消息 | ### 防火墙日志输出 | 列 | 描述 | |--------|-------------| | dstip | 目标 IP(仅公共地址) | | total_sentbyte | 发送字节总数 | | size_mb | 以兆字节为单位的大小 | ### VPN 关闭输出 | 列 | 描述 | |--------|-------------| | date | 会话结束日期 | | time | 会话结束时间 | | user | VPN 用户名 | | sentbyte | 发送字节数 | | sent_bytes_in_MB | 以兆字节为单位的大小 | ## 安全 ### 安全特性 - ✅ 输入验证和净化 - ✅ 速率限制(每分钟 5 次登录,每分钟 10 次解析) - ✅ 安全密码哈希(scrypt) - ✅ JWT 身份验证 - ✅ 安全标头(CSP、HSTS、X-Frame-Options) - ✅ 文件类型验证 - ✅ 路径遍历防护 - ✅ 审计日志 ### 生产环境检查清单 - [ ] 设置强 `SECRET_KEY` 和 `JWT_SECRET_KEY` - [ ] 更改默认管理员凭据 - [ ] 设置 `FLASK_ENV=production` - [ ] 设置 `DEBUG=False` - [ ] 配置 HTTPS - [ ] 设置适当的 CORS 源 ## 文档 完整文档位于 `docs/` 目录中。 ### 构建文档 ``` cd docs pip install sphinx sphinx-rtd-theme myst-parser make html # 打开 docs/build/html/index.html ``` ### 文档内容 - 安装指南 - 快速开始 - CLI 用户指南 - Web 应用程序指南 - 安全指南 - API 参考 - 贡献指南 ## 测试 运行测试套件: ``` pip install -r requirements-dev.txt pytest ``` 运行覆盖率测试: ``` pytest --cov=web_app/backend --cov-report=html ``` ## 开发 ### 代码质量 ``` # 安装开发依赖 pip install -r requirements-dev.txt # 运行 linter ruff check . # 格式化代码 black . # 类型检查 mypy web_app/backend ``` ### Git 钩子 ``` pip install pre-commit pre-commit install pre-commit run --all-files ``` ## 项目结构 ``` Forti-DFIR/ ├── log_parser.py # CLI tool ├── web_app/ │ ├── backend/ │ │ ├── app.py # Main Flask app │ │ ├── simple_app.py # Simplified app │ │ ├── config.py # Configuration │ │ ├── log_parser_service.py │ │ ├── csv_parser_service.py │ │ ├── utils/ # Security utilities │ │ └── requirements.txt │ └── frontend/ │ └── src/ │ └── SimpleApp.js ├── docs/ # Sphinx documentation ├── tests/ # Unit tests ├── pyproject.toml # Project configuration └── .env.example # Environment template ``` ## 部署 ### Docker 部署 ``` cd web_app docker-compose up -d ``` ### 云端部署 详见 [web_app/DEPLOYMENT.md](web_app/DEPLOYMENT.md) 获取详细说明。 ## 许可证 本项目由 IONSec 研究团队开发。 ## 支持 - **问题反馈**:https://github.com/ionsec/Forti-DFIR/issues - **文档**:请参考 `docs/` 目录
标签:AMSI绕过, API密钥检测, CLI, Docker, Fortinet, IP地址过滤, Netlify, OSV, Sphinx文档, Vercel, VPN, WiFi技术, 二进制发布, 云部署, 会话分析, 威胁检测, 安全认证, 安全调查, 安全防御评估, 开源工具, 搜索引擎查询, 数据聚合, 日志可视化, 日志解析, 私有地址过滤, 网络安全, 证书伪造, 请求拦截, 输入验证, 逆向工具, 防火墙, 隐私保护