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 范围外封锁,需在防火墙层设置封锁策略。
## 目录
- 总体架构
- 主要功能
- 目录结构
- 环境要求
- 安装和运行系统
- 主要 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, 容器化部署, 文件完整性监控, 机器学习, 测试用例, 现代安全运营, 网络安全, 规则融合, 警报系统, 请求拦截, 逆向工具, 速率限制, 隐私保护