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, 逆向工具, 逆向工程平台, 隐私保护