xanhxanh25/xanhxanh25-anm-suricata-ml-webshield

GitHub: xanhxanh25/xanhxanh25-anm-suricata-ml-webshield

这是一个结合Suricata日志、XGBoost机器学习和规则融合的实时网站保护演示系统,用于检测和防御网络攻击。

Stars: 0 | Forks: 0

# xanhxanh25-anm-suricata-ml-webshield 实时网站保护演示系统 结合 Suricata EVE 日志、XGBoost 机器学习模型、融合规则、FastAPI、PostgreSQL、Docker 和 WordPress 警报/封锁集成的实时网站保护演示系统。 网站 ## 目录 - 总体架构 - 主要功能 - 目录结构 - 环境要求 - 安装和运行系统 - 主要 API - WordPress 集成 - 机器学习模型 - 测试 - 相关文档 ## 总体架构 ``` ┌────────────────┐ │ Suricata EVE │ │ eve.json │ └───────┬────────┘ │ tail / batch ingest ▼ ┌──────────────────────────────┐ │ Docker IDS Engine │ │ - Parse EVE │ │ - Extract CIC-style features │ │ - XGBoost prediction │ │ - Rule / pattern fusion │ │ - Alert policy │ └───────┬──────────────┬───────┘ │ │ ▼ ▼ ┌──────────────┐ ┌────────────────┐ │ PostgreSQL │ │ JSON logs │ │ suricata_events │ │ alerts/app logs │ └───────┬──────┘ └────────────────┘ │ ▼ ┌──────────────────────────────┐ │ FastAPI │ │ /health /stats /events /docs │ └───────┬──────────────────────┘ │ ▼ ┌──────────────────────────────┐ │ WordPress │ │ - ANM Alerts plugin │ │ - Alert table / toast │ │ - IP block policy panel │ └──────────────────────────────┘ ``` ## 主要功能 - 实时读取 Suricata `eve.json` 日志或从输入目录批量导入。 - 从 EVE 日志和流状态中提取 CIC 风格的特征。 - 使用 XGBoost 多类分类对流量进行分类。 - 融合机器学习、Suricata 签名、负载模式和阈值量以减少误报。 - 将事件存储到 PostgreSQL 并通过 FastAPI 暴露给前端/WordPress 读取数据。 - WordPress 插件显示警报表、实时 toast 提示和 IP 封锁面板。 - Docker Compose 用于运行引擎和数据库。 - 针对解析器、特征提取器、预测器、融合、事件策略和 WordPress 自动封锁计划进行测试。 ## 目录结构 ``` . ├── README.md ├── ARCHITECTURE.md ├── RUN_LOCAL.md ├── Model/ │ ├── xgb_ids2017.json │ ├── model_manifest.json │ ├── feature_schema.json │ └── *.png / *.joblib │ ├── Docker/ │ ├── README.md │ ├── THEORY.md │ ├── MODEL_CAPABILITY.md │ ├── Dockerfile │ ├── docker-compose.yml │ ├── requirements.txt │ ├── .env.example │ ├── app/ │ │ ├── main.py # Entry point: python -m app.main │ │ ├── api/server.py # FastAPI routes │ │ ├── core/config.py # Runtime settings │ │ ├── db/ # SQLAlchemy + PostgreSQL │ │ ├── ingest/ # Tail eve.json / input watcher │ │ ├── ml/ # Predictor + model bundle loader │ │ ├── pipeline/ # Parser, feature, fusion, alerting │ │ ├── integrations/ # WordPress block policy integration │ │ └── tools/ # CLI ingest / logic tools │ ├── models/ # Converted runtime model bundle │ ├── sql/init.sql │ ├── scripts/ │ ├── training/ # Train / convert / audit utilities │ └── tests/ │ ├── wordpress-server/ │ ├── wp-plugin/anm-alerts/ # WordPress plugin: alerts + block policy │ ├── wp-theme/anm-control/ # WordPress theme pages │ ├── scripts/ │ └── requirements.txt │ └── *.py # Remote deploy / maintenance helpers ``` ## 环境要求 | 组件 | 版本 / 备注 | |---|---| | Docker Desktop / Docker Engine | 用于运行 IDS 引擎和 PostgreSQL | | Docker Compose | 在 `Docker/` 中运行堆栈 | | Python | 推荐 3.12 | | PostgreSQL | 通过 Compose 运行时使用 16 | | Suricata | 以 NDJSON 格式记录 EVE 日志 | | WordPress | 使用 `wordpress-server/` 中的插件/主题 | ## 安装和运行系统 ### 1. 使用 Docker 运行 IDS 引擎 ``` cd Docker cp .env.example .env docker compose up --build ``` 在 Windows PowerShell 中可使用: ``` cd Docker Copy-Item .env.example .env docker compose up --build ``` 主要 URL: | URL | 用途 | |---|---| | `http://127.0.0.1:8000/health` | 检查引擎状态 | | `http://127.0.0.1:8000/docs` | Swagger UI | | `http://127.0.0.1:8000/events?limit=20` | 最新事件 | | `http://127.0.0.1:8000/stats` | 快速统计 | ### 2. 准备 Suricata EVE 数据 默认实时文件: ``` Docker/data/input/eve.json ``` 要求格式:每行是 Suricata 的一个 JSON 事件。 如果想一次性批量导入: ``` cd Docker python -m app.tools.batch_ingest_eve --eve-file ./data/input/eve.json ``` 或使用脚本: ``` bash scripts/import_eve.sh ``` ### 3. 不使用 Docker 本地运行 ``` cd Docker python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt Copy-Item .env.example .env python -m app.main ``` 如果只想测试管道而不使用 PostgreSQL/API,在 `.env` 中调整: ``` DB_ENABLED=false API_ENABLED=false ``` ## 主要 API | 端点 | 用途 | |---|---| | `GET /health` | 引擎状态、模型版本、标签类别 | | `GET /stats?minutes=5` | 最近事件概览 | | `GET /events?limit=100` | 获取最新事件列表 | | `GET /events?after_id=N` | 获取指定 ID 之后的新事件 | | `GET /events/max_id` | 获取最新 ID | | `GET /docs` | Swagger UI | 示例: ``` curl http://127.0.0.1:8000/health curl "http://127.0.0.1:8000/events?limit=20" ``` ## WordPress 集成 仓库包含现成的插件和演示主题: ``` wordpress-server/wp-plugin/anm-alerts/ wordpress-server/wp-theme/anm-control/ ``` 插件 `ANM Alerts` 支持: - 从 FastAPI `/events` 获取事件。 - 使用短代码显示警报表。 - 在公共页面右上角显示实时 toast 警报。 - 管理 IP 封锁策略。 - REST 端点用于封锁策略。 常用短代码: ``` [anm_alerts_table limit="20" source="ids" filter="attacks"] [anm_block_panel] ``` 在 WordPress 管理后台,进入 `设置 -> ANM Alerts` 配置 FastAPI URL,默认为: ``` http://127.0.0.1:8000/events ``` ## 机器学习模型 部署的模型是 XGBoost 多类分类。主要运行时标签: | 标签 | 备注 | |---|---| | `BENIGN` | 正常流量 | | `Bot` | 机器人流量 | | `DDoS` | 分布式拒绝服务攻击 | | `DoS` | 拒绝服务攻击 | | `PortScan` | 端口扫描 | | `Web Attack` | 在 UI 中显示为 `通用 Web 攻击` | | `Patator` | 暴力破解 / 凭证类活动 | 注意:SQLi、XSS、CSRF、RCE 在此模型中不是单独的 ML 类别。这些迹象在规则/模式/融合层处理。 详情请参阅: - `Docker/MODEL_CAPABILITY.md` - `Docker/THEORY.md` - `Docker/README.md` ## 测试 ``` cd Docker pytest tests -q ``` 现有测试覆盖主要部分: - EVE 解析器 - 特征提取器 - 预测器 - 决策融合 - 事件策略 - 负载模式 - 源警报上下文 - WordPress 自动封锁计划 ## 运营流程 1. Suricata 将事件写入 `eve.json`。 2. IDS 引擎实时跟踪文件或批量导入。 3. 管道解析 EVE,更新流状态并提取特征。 4. 预测器运行 XGBoost。 5. 融合层结合 ML + 规则 + 模式 + 阈值量。 6. 事件写入 PostgreSQL 和 JSON 日志。 7. FastAPI 暴露 `/events`、`/stats`、`/health`。 8. WordPress 插件读取 API,显示警报并同步封锁策略。 ## 相关文档 - `ARCHITECTURE.md` - 系统简要架构。 - `RUN_LOCAL.md` - 实用运行指南。 - `Docker/README.md` - 运行引擎详情。 - `Docker/THEORY.md` - 管道和融合逻辑解释。 - `Docker/MODEL_CAPABILITY.md` - 部署模型的实际能力。 - `Docker/docs/THUYET_TRINH_KICH_BAN_DE_HIEU.md` - 演示文档。 - `Docker/docs/PATATOR_SAFE_TEST_UBUNTU.md` - 安全 Patator 测试场景。 ## 安全备注 这是一个演示/课程项目。实际部署时,需要重新配置 secret、API 密钥、数据库密码、反向代理、TLS、备份 PostgreSQL,以及如果要在 WordPress HTTP 范围外封锁,需在防火墙层设置封锁策略。
标签:AMSI绕过, Apex, API服务, AppImage, AV绕过, Docker, EVE日志, FastAPI, Metaprompt, PostgreSQL, Suricata, Web保护, Web应用防火墙, WordPress集成, XGBoost, 入侵检测系统, 威胁检测, 安全数据湖, 安全防御评估, 安全防护, 实时IDS, 容器化部署, 文件完整性监控, 机器学习, 测试用例, 现代安全运营, 网络安全, 规则融合, 警报系统, 请求拦截, 逆向工具, 速率限制, 隐私保护