beast99-p3/Sentinel-SIEM
GitHub: beast99-p3/Sentinel-SIEM
一个轻量级 Web 日志分析与威胁检测 SIEM 工具,帮助用户快速识别攻击与黑名单 IP 并可视化告警。
Stars: 0 | Forks: 0
# Sentinel SIEM



**Sentinel SIEM** 是一个轻量级、基于 Web 的安全信息与事件管理(SIEM)工具,用于快速日志分析和威胁检测。上传日志、检测攻击和列入黑名单的 IP,查看带有地理定位的警报,并管理设置——所有操作均可通过交互式仪表板完成。
## 功能特性
- **日志上传与分析** — 上传一个或多个日志文件并立即运行所有检测模块
- **暴力破解检测** — 标记失败登录尝试超过 5 次的任何 IP
- **端口扫描检测** — 标记访问超过 10 个不同端口的任何 IP
- **异常检测** — 识别流量中罕见或唯一的用户代理字符串
- **黑名单 IP 检测** — 将每个 IP 与用户管理的黑名单进行交叉引用
- **交互式仪表板** — 实时统计卡片、威胁类型环形图和 7 天警报趋势折线图
- **警报页面** — 分页、可排序、可过滤的警报列表,包含 IP 地理定位和国家旗帜
- **报告管理** — 从报告页面下载或删除每个文件的 CSV 报告
- **设置页面** — 在浏览器中直接编辑 IP 黑名单
- **示例数据生成器** — 内置脚本,用于生成真实的 Apache 日志并在仪表板中填充示例警报
## 截图
| 仪表板 | 警报 |
|-----------|--------|
|  |  |
| 报告 | 设置 |
|---------|----------|
|  |  |
## 快速开始
### 先决条件
- Python 3.8+
- [GeoLite2 国家数据库](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data)(可选 — 启用 IP 地理定位时需要)
### 安装
1. **克隆仓库:**
git clone https://github.com/beast99-p3/Sentinel-SIEM.git
cd Sentinel-SIEM
2. **创建并激活虚拟环境(推荐):**
python -m venv venv
# Linux / macOS
source venv/bin/activate
# Windows
venv\Scripts\activate
3. **安装依赖:**
pip install -r project/requirements.txt
4. **(可选)启用 IP 地理定位:**
- 在 [此处](https://www.maxmind.com/en/geolite2/signup) 注册免费 MaxMind 账户
- 下载 `GeoLite2-Country.mmdb` 文件
- 将其放置在 `project/database/` 目录中
5. **运行应用程序:**
cd project
python app.py
6. **打开浏览器并访问:**
`http://localhost:5000`
### 使用示例数据快速启动
若要在不上传真实日志文件的情况下为仪表板填充真实的示例数据,请在 `project/` 目录中运行示例数据生成器:
```
cd project
python generate_sample_log.py
```
这将创建:
- `sample_apache.log` — 10,000 条随机的 Apache 组合日志格式条目
- `reports/alerts.csv` — 500 条预生成的警报,覆盖最近 7 天(供仪表板使用)
运行脚本后,刷新 `http://localhost:5000` 处的仪表板以查看已填充的图表和统计信息。
## 项目结构
```
Sentinel-SIEM/
│
├── project/
│ ├── app.py # Flask application and all routes
│ ├── generate_sample_log.py # Demo data generator
│ ├── sample_apache.log # Example Apache log (generated)
│ ├── requirements.txt
│ ├── blacklist.txt # User-managed IP blacklist
│ │
│ ├── modules/
│ │ ├── log_parser.py # Parses raw log lines into structured records
│ │ ├── brute_force.py # Brute-force detection (>5 failed attempts per IP)
│ │ ├── port_scan.py # Port-scan detection (>10 distinct ports per IP)
│ │ ├── anomaly.py # Anomaly detection (rare user agents)
│ │ ├── blacklist_ip.py # Blacklisted IP cross-reference
│ │ └── report_generator.py # Per-file CSV report writer
│ │
│ ├── templates/ # Jinja2 HTML templates
│ │ ├── base.html
│ │ ├── dashboard.html
│ │ ├── upload.html
│ │ ├── alerts.html
│ │ ├── report.html
│ │ └── settings.html
│ │
│ ├── static/ # CSS, JavaScript, and images
│ ├── uploads/ # Uploaded log files (created at runtime)
│ ├── reports/ # Generated CSV reports (created at runtime)
│ └── database/
│ └── GeoLite2-Country.mmdb # MaxMind GeoIP database (add manually)
│
├── screenshots/ # README screenshots
├── blacklist.txt
└── README.md
```
## 依赖项
| 包 | 用途 |
|---------|---------|
| `Flask` | Web 框架 |
| `pandas` | 日志数据处理和 CSV I/O |
| `geoip2` | 通过 MaxMind GeoLite2 进行 IP 地理定位 |
| `numpy` | 异常检测的数值支持 |
| `requests` | HTTP 工具 |
| `python-dotenv` | 环境变量管理 |
| `elasticsearch` |(未来)Elasticsearch 集成 |
| `watchdog` |(未来)实时日志文件监控 |
安装所有依赖项:
```
pip install -r project/requirements.txt
```
## 未来的路线图与计划增强功能
- **数据库集成** — 使用 SQLite 或 PostgreSQL 替换基于 CSV 的警报存储,以提高性能和可扩展性
- **实时威胁情报** — 集成实时威胁情报 API(例如 AbuseIPDB),用于检查最新的全球黑名单
- **可配置的检测规则** — 允许用户从设置页面自定义检测阈值(例如暴力破解警报的失败登录次数)
- **实时警报与通知** — 检测到高严重性威胁时通过电子邮件或 Slack/Discord Webhook 发送实时警报
- **用户认证** — 安全的登录系统,限制对仪表板和设置的访问
- **交互式世界地图** — 在仪表板上展示威胁来源的地理可视化
- **Docker 容器化** — 提供 Dockerfile 以便在任何环境中轻松部署应用程序
## 许可证
本项目根据 MIT 许可证授权。
*仅供教育和研究使用。不适用于生产环境。*
标签:AMSI绕过, Apache日志, Flask, IP信誉, PFX证书, Python, Web安全, 交互式仪表盘, 免杀技术, 分页排序, 可视化图表, 告警管理, 地理定位, 威胁检测, 安全信息与事件管理, 开源安全工具, 异常检测, 搜索引擎爬取, 攻击检测, 无后门, 日志上传, 暴力破解检测, 样本数据生成, 端口扫描检测, 红队行动, 蓝队分析, 设置管理, 逆向工具, 逆向工程平台, 黑名单IP