yogesh2300/LogSentinel-Continuous-security-monitoring-and-threat-detection
GitHub: yogesh2300/LogSentinel-Continuous-security-monitoring-and-threat-detection
LogSentinel 是一个通过 SSH 采集 Linux 服务器日志并利用规则引擎与机器学习进行持续安全威胁检测的监控平台。
Stars: 0 | Forks: 0
# LogSentinel — 持续安全监控与威胁检测
LogSentinel 是一个智能安全监控平台,可持续收集和分析 Linux 系统日志,通过行为分析和机器学习来检测可疑活动、评估安全风险并提供实时的威胁检测。
## 架构
```
User Login → Dashboard → Servers → Add Server (Test → Save)
↓
PostgreSQL (encrypted SSH credentials)
↓
Background Scheduler (all active servers)
↓
SSH Collect → Parse → Normalize → Risk Engine → Store
↓
Isolation Forest + Random Forest → Alerts
↓
Dashboard (per-server metrics)
```
**在生产环境中,绝不会从 `.env` 读取 SSH 凭据。** 每个 Linux 服务器均通过 LogSentinel Web 界面进行安全注册。
## 前置条件
- Python 3.11+
- Node.js 18+
- PostgreSQL
- 一台或多台具有 SSH 访问权限的 Linux 虚拟机(CentOS/RHEL/Ubuntu)
# 快速开始
## 1. 后端
```
cd LogSentinel
copy .env.example .env
# 设置 DB_* credentials 和 SECRET_KEY
.\.venv\Scripts\Activate.ps1
pip install -r backend\requirements.txt
python scripts\migrate_schema.py
python -m backend.database.init_db
python -m backend.main
```
API 文档:
```
http://localhost:8000/docs
```
## 2. 前端
```
cd frontend
npm install
npm run dev
```
前端:
```
http://localhost:5173
```
## 3. 注册 Linux 服务器
1. 打开 **http://localhost:5173**
2. 注册或登录。
3. 将您的账号提升为管理员。
```
UPDATE users
SET role = 'admin'
WHERE username = 'your_username';
```
4. 导航至 **Servers → Add Server**
5. 输入:
- 服务器名称
- 主机/IP
- 端口
- 用户名
- 密码或 SSH 密钥
6. 点击 **Test Connection**
7. 保存服务器。
8. 手动启动日志收集或启用调度程序。
## 4. 启用自动收集
配置 `.env`
```
SCHEDULER_ENABLED=true
COLLECTION_INTERVAL_MINUTES=15
COLLECTION_TAIL_LINES=500
```
调度程序会定期连接到每个活动的 Linux 服务器,收集日志,通过行为分析 pipeline 对其进行处理,并执行基于机器学习的威胁检测。
## 5. 运行 ML 检测
导航至:
```
Detection → Run Detection
```
数据库中至少需要 **10 个事件**。
用于演示:
```
python scripts\seed_demo_data.py 120
```
# API Endpoints
| Endpoint | 认证 | 描述 |
|----------|------|-------------|
| `GET /health` | 无 | 健康检查 |
| `POST /api/v1/auth/register` | 无 | 注册用户 |
| `POST /api/v1/auth/token` | 无 | 用户登录 |
| `GET /api/v1/servers` | JWT | 列出已注册的服务器 |
| `POST /api/v1/servers/test-connection` | Admin | 测试 SSH 连接 |
| `POST /api/v1/servers` | Admin | 注册 Linux 服务器 |
| `POST /api/v1/servers/{id}/test` | JWT | 测试已保存的服务器 |
| `POST /api/v1/servers/{id}/collect` | JWT | 收集日志 |
| `POST /api/v1/collection/run` | Admin | 执行收集 pipeline |
| `GET /api/v1/events` | JWT | 获取安全事件 |
| `GET /api/v1/dashboard/summary` | JWT | 仪表盘统计数据 |
| `POST /api/v1/detection/run` | JWT | 执行 ML 威胁检测 |
# 项目结构
```
LogSentinel/
├── backend/ # FastAPI backend, SSH collector, risk engine, ML pipeline
├── frontend/ # React + Vite dashboard
├── scripts/ # Database migration & demo data scripts
└── .env # Database, JWT and scheduler configuration
```
# 安全分析 Pipeline
```
Linux Server
│
▼
SSH Collector
│
▼
Log Parser
│
▼
Event Normalizer
│
▼
Risk Engine
│
▼
PostgreSQL
│
▼
Machine Learning Engine
│
▼
Dashboard & Alerts
```
# 机器学习检测
LogSentinel 使用位于以下位置的混合检测引擎:
```
backend/services/detection_service.py
```
检测组件包括:
- **基于规则的风险引擎** — 使用预定义的安全规则检测高风险事件。
- **Isolation Forest** — 识别异常的用户和系统行为。
- **Random Forest** — 将事件分类为可疑或正常。
行为特征包括:
- 服务器 ID
- 登录时间
- 会话持续时间
- 登录失败次数
- CPU、内存和磁盘利用率
- 已执行的命令
- 网络连接
- 用户活动模式
# 核心功能
- 持续的 Linux 安全日志监控
- 多服务器 SSH 日志收集
- 自动化的日志解析与标准化
- 风险评分计算
- 行为异常检测
- 混合机器学习(Isolation Forest + Random Forest)
- 实时仪表盘与安全分析
- 使用 JWT 进行安全身份验证
- 基于 PostgreSQL 的事件存储
- 可扩展的模块化架构
# 许可证
**MCA 毕业设计项目**
**LogSentinel:持续安全监控与威胁检测**
标签:AMSI绕过, GNU通用公共许可证, Node.js, Python, 内存分配, 威胁检测, 异常检测, 无后门, 测试用例, 逆向工具