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 使用率监控
- 内存消耗分析
- 网络负载跟踪
- 系统运行时间统计
### 安全事件管理
- 实时事件监控与跟踪
- 事件严重程度分类
- 事件关联分析
- 自动化事件响应工作流
- 事件处理阶段管理
### 规则管理系统
- 规则文件导入/导出
- 创建自定义规则
- 规则状态切换
- 规则性能监控
- 规则解析与格式化
### 日志分析
- 多类型日志捕获
- 实时日志监控
- 日志过滤与检索
- 详细日志事件分析
- 多维度日志统计
### 用户管理
- 基于角色的访问控制
- 用户身份验证与授权
- 用户会话管理
- 登录/注销审计
- 用户活动跟踪
### 系统配置
- 数据库连接配置
- 系统参数调整
- 集成与扩展设置
- 安全配置管理
## 📸 屏幕截图
**威胁拓扑 (网络地图)**
**高级分析仪表板**
**仪表板和系统状态**
**规则管理**
## 🛠️ 技术栈
- **前端**
- 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 集成,并增强自动化部署脚本。欢迎贡献。
**高级分析仪表板**
**仪表板和系统状态**
**规则管理**
## 🛠️ 技术栈
- **前端**
- 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管理界面, 下一代防火墙, 云安全架构, 入侵检测系统, 威胁可视化, 威胁情报, 威胁拓扑, 威胁检测与响应, 安全事件管理, 安全分析仪表盘, 安全数据湖, 安全运维, 实时分析, 开发者工具, 态势感知, 流量监控, 漏洞管理, 现代安全运营, 用户权限管理, 系统性能监控, 网络地图, 网络安全, 网络安全监控, 网络安全管理, 网络流量分析, 自动化攻击, 规则管理, 隐私保护, 驱动开发