jagdishtripathy/SMEs-CyberShield
GitHub: jagdishtripathy/SMEs-CyberShield
面向中小企业的轻量级 SIEM 仪表板,整合 Suricata 日志解析与 Elasticsearch 存储,提供基础的安全告警管理与实时日志监控功能。
Stars: 0 | Forks: 1
# SMEs-CyberShield
适用于中小企业的轻量级 SIEM + 用户仪表板。本仓库包含一个基于 Flask 的仪表板、一个简单的告警管理器、Suricata EVE 日志解析工具,以及可选的 Elasticsearch 日志索引功能。
本 README 说明了如何在本地(Windows PowerShell)设置项目、配置 Elasticsearch 以及运行该应用程序。
## 前置条件
- 已安装 Python 3.10+(支持 3.11/3.12/3.13)并添加到 PATH
- Git
- Elasticsearch(可选但推荐)— 默认预期地址为 `http://localhost:9200`
- (可选)Suricata,如果您计划使用 Suricata EVE JSON 日志
## 快速设置(Windows PowerShell)
1. 克隆仓库并切换目录:
```
git clone https://github.com/jagdishtripathy/SMEs-CyberShield.git
cd d:\project_SMEs
```
2. 创建并激活虚拟环境(PowerShell):
```
python -m venv .\myvenv
. .\myvenv\Scripts\Activate.ps1
```
3. 安装 Python 依赖:
```
pip install -r requirements.txt
```
4. 在项目根目录创建 `.env` 文件(可选)以覆盖默认配置。示例 `.env` 内容:
```
# Flask
FLASK_SECRET_KEY=change_this_to_a_secure_random_value
# Elasticsearch
ELASTICSEARCH_HOST=localhost
ELASTICSEARCH_PORT=9200
ELASTICSEARCH_SCHEME=http
ELASTICSEARCH_USERNAME=elastic
ELASTICSEARCH_PASSWORD=
# Log files
AUTH_LOG_FILE=C:\path\to\auth.log # adjust for your environment
SURICATA_EVE_LOG_FILE=C:\path\to\eve.json
PDF_SAVE_PATH=C:\temp\save_reports
```
5. 确保 `AUTH_LOG_FILE` 和 `SURICATA_EVE_LOG_FILE` 路径存在(或将环境变量更新为有效路径)。
## Elasticsearch 说明
该应用程序需要一个名为 `siem-logs` 的索引来存储和查询日志。如果您使用 Elasticsearch,请创建索引映射,以便将 `timestamp` 设为 `date` 字段。如果缺少映射,应用程序会优雅降级,但通过映射进行排序/时间范围查询会更可靠。
创建映射的 curl 示例(Linux/macOS/curl;在 Windows 上使用等效的 PowerShell curl):
```
curl -X PUT "http://localhost:9200/siem-logs" -H 'Content-Type: application/json' -d'
{
"mappings": {
"properties": {
"timestamp": { "type": "date", "format": "strict_date_optional_time||epoch_millis" },
"message": { "type": "text" }
}
}
}'
```
或使用 Python Elasticsearch 客户端(示例):
```
from elasticsearch import Elasticsearch
es = Elasticsearch(["https://localhost:9200"]) # add auth if required
mapping = {
"mappings": {
"properties": {
"timestamp": {"type": "date", "format": "strict_date_optional_time||epoch_millis"},
"message": {"type": "text"}
}
}
}
es.indices.create(index='siem-logs', body=mapping, ignore=400)
```
如果您未创建映射,应用程序代码会在排序子句中包含 `unmapped_type` 以避免 BadRequest 错误;不过,为了获得最佳效果,建议创建映射。
## 运行应用程序
启动 Flask 应用(PowerShell):
```
# 激活 venv(如果尚未激活)
. .\myvenv\Scripts\Activate.ps1
# 运行 app
python d:\project_SMEs\mainback.py
```
打开浏览器并访问 `http://127.0.0.1:5000`。
注意:
- 该应用程序注册了一个用户蓝图;请查看 `users/` 以了解登录/注册页面。使用位于 `users/cybersecurity.db` 的数据库管理用户账户。
- 实时日志的 SSE 端点为 `/stream-realtime-logs`(在 UI 中需要管理员权限)。
## 故障排除
- 关于 `timestamp` 映射的 Elasticsearch 错误:请创建上述索引映射。否则,应用程序在排序时会设置 `unmapped_type` 以避免立即失败。
- 如果 `stream-realtime-logs` 抛出关于 `get_wsgi_app` 的 AttributeError,请确保您运行的是包含流式回退修复的仓库版本(Response 通过 `.response` 进行迭代)。
- 如果日志未显示,请确认 `AUTH_LOG_FILE` 和 `SURICATA_EVE_LOG_FILE` 路径正确且进程可读取。
## 开发说明
- 后台日志收集器(`collect_logs`)会 tail(持续读取)`AUTH_LOG_FILE`,并在 Elasticsearch 可用时将日志行索引到 `siem-logs` 中。
- Suricata EVE JSON 解析位于 `get_suricata_alerts` 和 Suricata 报告生成路由中。
## 贡献
请提交 issue 或 pull request。请遵循仓库风格,并尽可能为非简单逻辑包含测试。
标签:Elasticsearch, EVE JSON, Flask, Metaprompt, Python, Suricata, Windows PowerShell, 中小企业安全, 告警管理, 安全仪表盘, 开源安全工具, 无后门, 日志解析, 现代安全运营, 用户界面, 网络安全, 证书伪造, 轻量级SIEM, 逆向工具, 逆向工程平台, 隐私保护