emrecantuzer/threatlens

GitHub: emrecantuzer/threatlens

一个为 Suricata IDS/IPS 提供实时分析、规则管理和威胁可视化的下一代 Web 管理界面。

Stars: 0 | Forks: 0

# ThreatLens - 高级 Suricata IDS/IPS 管理器 一个用于管理 Suricata IDS/IPS 的下一代 Web 界面,具备实时分析、规则管理和威胁可视化功能。 无 Suricata 环境的在线演示:LICENSE ## 主要功能 ### Suricata 配置管理 - 实时查看和编辑 Suricata 配置 - 配置文件路径管理 - 实时配置内容预览 - 一键重启 Suricata 服务 ### 高级分析仪表板 - 交互式数据可视化 - 可自定义图表创建 - 多维度数据聚合 - 预设分析模板 - 时间范围过滤 - 图表类型选择器 - 高级数据关联 - 预测性趋势分析 ### 系统性能监控 - 实时服务器资源跟踪 - CPU 使用率监控 - 内存消耗分析 - 网络负载跟踪 - 系统运行时间统计 ### 安全事件管理 - 实时事件监控与跟踪 - 事件严重程度分类 - 事件关联分析 - 自动化事件响应工作流 - 事件处理阶段管理 ### 规则管理系统 - 规则文件导入/导出 - 创建自定义规则 - 规则状态切换 - 规则性能监控 - 规则解析与格式化 ### 日志分析 - 多类型日志捕获 - 实时日志监控 - 日志过滤与检索 - 详细日志事件分析 - 多维度日志统计 ### 用户管理 - 基于角色的访问控制 - 用户身份验证与授权 - 用户会话管理 - 登录/注销审计 - 用户活动跟踪 ### 系统配置 - 数据库连接配置 - 系统参数调整 - 集成与扩展设置 - 安全配置管理 ## 📸 屏幕截图 **威胁拓扑 (网络地图)** 1 **高级分析仪表板** 2 **仪表板和系统状态** 3 **规则管理** 4 ## 🛠️ 技术栈 - **前端** - React 18.3 与 TypeScript - Vite 5.4 构建工具 - TailwindCSS 样式方案 - Lucide Icons UI 元素 - **状态管理** - React Hooks - Context API - 自定义服务层 - **数据存储** - SQLite3 与 better-sqlite3 - IndexedDB 客户端缓存 - 文件系统日志存储 ## 项目结构 ``` threatlens/ # Project root directory ├── src/ # Source code directory containing the main application code │ ├── components/ # Reusable UI components │ │ ├── analytics/ # Components related to analytics functionality │ │ │ ├── AnalyticsChart.tsx # Renders analytics charts │ │ │ ├── ChartTypeSelector.tsx # Allows selection of different chart types │ │ │ ├── CreateAnalyticsModal.tsx # Modal for creating new analytics entries │ │ │ └── TimeRangeSelector.tsx # Component for selecting time ranges │ │ ├── auth/ # Components related to authentication (login, etc.) │ │ │ ├── LoginForm.tsx # Login form component │ │ │ └── LoginLogo.tsx # Displays the login page logo │ │ ├── Header.tsx # Top navigation bar component │ │ ├── Logo.tsx # Application logo component │ │ └── Sidebar.tsx # Sidebar navigation component │ ├── pages/ # Page-level components (each subfolder represents a feature page) │ │ ├── analytics/ # Analytics dashboard page module │ │ │ ├── AnalyticsDashboard.tsx # Main component for the analytics dashboard │ │ │ └── components/ # Sub-components used within the analytics page │ │ │ ├── ChartRenderer.tsx # Renders individual charts on the dashboard │ │ │ ├── CreateVisualizationModal.tsx # Modal for creating new visualizations │ │ │ └── VisualizationCard.tsx # Displays a single visualization card │ │ ├── auth/ # Authentication pages module │ │ │ └── Login.tsx # Login page component │ │ ├── dashboard/ # Main dashboard page (post-login overview) │ │ ├── events/ # Event management page module │ │ ├── logs/ # Log management page module │ │ ├── rules/ # Rules management page module │ │ ├── settings/ # System settings page module │ │ └── users/ # User management page module │ ├── services/ # Core business logic and API communication modules │ │ ├── analyticsService.ts # Handles analytics data processing │ │ ├── filterService.ts # Manages log/event filtering │ │ ├── presetFilterService.ts # Manages preset filters │ │ ├── userService.ts # Handles user data and authentication logic │ │ ├── visualizationService.ts # Processes visualization data │ │ └── backend/ # Backend-specific modules │ │ └── database.ts # Manages SQLite database connections and queries │ ├── types/ # TypeScript definitions (interfaces and type declarations) │ │ ├── analytics.ts # Data types related to analytics │ │ ├── filter.ts # Data types for filtering logic │ │ ├── presetFilter.ts # Data types for preset filters │ │ └── user.ts # User data type definitions │ └── utils/ # Utility functions and helpers │ └── logFilters.ts # Utility functions for log filtering ├── scripts/ # Build and deployment scripts │ ├── deploy.bat # Windows batch script for deployment │ └── initDb.js # Script to initialize or reset the database ├── data/ # Data files directory ├── threatlens.db # SQLite database file for persistent application data ├── public/ # Public static resources directory │ ├── index.html # Entry HTML file for the application │ └── ... # Other static assets (e.g., favicon, icons) ├── dist/ # Production build output directory (packaged files for deployment) ├── package.json # Project configuration file (dependencies, scripts, etc.) ├── package-lock.json # Lock file to ensure consistent dependency versions ├── tsconfig.json # TypeScript compiler configuration ├── tsconfig.app.json # TypeScript configuration extension for the application ├── tailwind.config.js # Tailwind CSS framework configuration ├── postcss.config.js # PostCSS configuration for processing CSS ├── eslint.config.js # ESLint configuration for code style and linting rules ├── .gitignore # Git ignore file specifying files/directories not to commit └── README.md # Project documentation and instructions ``` ## 各组件说明 ### `src/` 此目录包含按功能组织的应用程序核心源代码。 - **`components/`** 包含可复用的 UI 组件: - **`analytics/`**: - `AnalyticsChart.tsx`: 渲染分析图表。 - `ChartTypeSelector.tsx`: 允许用户选择不同的图表类型。 - `CreateAnalyticsModal.tsx`: 提供用于创建新分析条目的弹窗。 - `TimeRangeSelector.tsx`: 用于选择时间范围的组件。 - **`auth/`**: - `LoginForm.tsx`: 登录表单组件。 - `LoginLogo.tsx`: 在登录页面显示 Logo。 - `Header.tsx`: 顶部导航栏组件。 - `Logo.tsx`: 应用程序 Logo。 - `Sidebar.tsx`: 侧边栏导航组件。 - **`pages/`** 包含代表不同视图的页面级组件: - **`analytics/`**: - `AnalyticsDashboard.tsx`: 分析仪表板的主要组件。 - **`components/`** (analytics 内部): - `ChartRenderer.tsx`: 在仪表板上渲染单个图表。 - `CreateVisualizationModal.tsx`: 用于创建新可视化的弹窗。 - `VisualizationCard.tsx`: 显示单个可视化卡片。 - **`auth/`**: - `Login.tsx`: 登录页面组件。 - **其他目录**: - `dashboard/`: 登录后的主仪表板页面。 - `events/`: 事件管理界面。 - `logs/`: 日志管理页面。 - `rules/`: 规则管理页面。 - `settings/`: 系统设置页面。 - `users/`: 用户管理页面。 - **`services/`** 包含核心业务逻辑和 API 通信模块: - `analyticsService.ts`: 处理和检索分析数据。 - `filterService.ts`: 管理日志/事件过滤。 - `presetFilterService.ts`: 管理预设过滤器配置。 - `userService.ts`: 处理用户身份验证和数据管理。 - `visualizationService.ts`: 处理可视化的数据。 - **`backend/`**: - `database.ts`: 管理 SQLite 数据库连接和查询操作。 - **`types/`** 存放 TypeScript 类型定义以确保类型安全: - `analytics.ts`: 与分析相关的数据类型。 - `filter.ts`: 过滤逻辑的数据类型。 - `presetFilter.ts`: 预设过滤器的数据类型。 - `user.ts`: 用户数据类型定义。 - **`utils/`** 包含实用工具函数和辅助方法: - `logFilters.ts`: 提供日志过滤的辅助函数。 ### `scripts/` 包含用于开发和部署的各种脚本: - `deploy.bat`: 用于部署应用程序的 Windows 批处理脚本。 - `initDb.js`: 用于初始化或重置 SQLite 数据库的脚本。 ### `data/` 存放数据文件: - threatlens.db: 用于存储持久化应用程序数据的 SQLite 数据库文件。 ### `public/` 包含公共静态资源: - `index.html`: 应用程序的入口 HTML 文件。 - 额外的静态资产(如网站图标和图标)存储在此处。 ### `dist/` 包含生产构建输出: - 准备部署的打包文件存储在此目录中。 ### 根目录级文件 - **`package.json` & `package-lock.json`** 定义项目依赖、脚本,并确保依赖版本一致。 - **`tsconfig.json` & `tsconfig.app.json`** TypeScript 编译的配置文件。 - **`tailwind.config.js` & `postcss.config.js`** 用于 Tailwind CSS 和 PostCSS 的配置文件,管理应用程序的样式。 - **`eslint.config.js`** 包含 ESLint 的规则和设置,以强制执行代码风格和质量。 - **`.gitignore`** 指定不应由 Git 跟踪的文件和目录。 - **`README.md`** 提供项目文档和说明。 此修订后的结构遵循最佳实践,清晰地将源代码、静态资产、配置文件和脚本分离。其组织结构有助于开发人员更高效地导航和维护项目。 ## 使用提示 1. **硬编码的用户凭证** - **默认凭证**: 应用程序可能附带用于演示或测试的硬编码测试凭证。 - **移除硬编码用户**: 要移除这些测试用户,请找到用户数据或身份验证服务代码(例如,`userService.ts`),并移除或注释掉任何占位符凭证。 - **添加真实用户**: 如果需要添加实际用户,请使用应用程序内置的用户管理功能,或使用新的用户条目和适当的角色分配更新您的用户存储(例如,数据库)。 2. **规则管理限制** - **仅限单行规则**: 当前的实现要求每个规则位于单行上。不支持多行规则,这可能会导致错误或被忽略。 **规则示例** - alert tcp any any -> any 80 (msg:"Detect HTTP GET Request"; flow:to_server,established; content:"GET"; http_method; classtype:web-application-attack; sid:1000001; rev:1;) **3. Suricata 配置文件 (`suricata.yaml`)** **默认文件路径** - 默认情况下,ThreatLens 从以下位置读取 Suricata 配置文件: src/config/core.config.ts ## 🚀 快速开始 1. **前置条件** - Node.js >= 18.0.0 - npm >= 9.0.0 2. **安装** npm install 3. **初始化数据库** npm run db:init 4. **启动开发服务器** npm run dev 5. **生产环境构建** npm run build ## 📊 数据库架构 ### 预设过滤器 ``` CREATE TABLE preset_filters ( id TEXT PRIMARY KEY, name TEXT NOT NULL, description TEXT, conditions TEXT NOT NULL, is_system INTEGER DEFAULT 0, created_at TEXT NOT NULL, updated_at TEXT NOT NULL ); ``` ### 分析 ``` CREATE TABLE preset_analytics ( id TEXT PRIMARY KEY, name TEXT NOT NULL, filter_id TEXT NOT NULL, chart_type TEXT NOT NULL, aggregation TEXT NOT NULL, group_by TEXT NOT NULL, time_range TEXT, FOREIGN KEY (filter_id) REFERENCES preset_filters(id) ); ``` ## ≡ƒöä 版本历史 - **v1.2.0** - 重大更新 - 添加了高级分析仪表板 - 实现了预设过滤器系统 - 修复了显示错误 - 解决了 Node.js 漏洞 - 迁移到 SQLite 以提高性能 - **v1.1.1** - 安全更新 - 修复了 Node.js 漏洞 - 改进了数据库处理 ## 许可证 [MIT License](LICENSE) ## 贡献 ## 项目状态 核心功能已完全可用。目前的开发重点是简化多容器编排以实现无缝的 Suricata 集成,并增强自动化部署脚本。欢迎贡献。
标签:GPT, HTTP/HTTPS抓包, IPS, MITM代理, PB级数据处理, RBAC, SecOps, Suricata, Web管理界面, 下一代防火墙, 云安全架构, 入侵检测系统, 威胁可视化, 威胁情报, 威胁拓扑, 威胁检测与响应, 安全事件管理, 安全分析仪表盘, 安全数据湖, 安全运维, 实时分析, 开发者工具, 态势感知, 流量监控, 漏洞管理, 现代安全运营, 用户权限管理, 系统性能监控, 网络地图, 网络安全, 网络安全监控, 网络安全管理, 网络流量分析, 自动化攻击, 规则管理, 隐私保护, 驱动开发