netreon-io/netreon
GitHub: netreon-io/netreon
一款面向 MikroTik RouterOS 的自包含网络威胁检测与自动响应引擎,无需外部数据库或云服务即可实现实时威胁检测与路由器层面的自动封锁。
Stars: 0 | Forks: 0
# Netreon
[](https://eupl.eu/1.2/en)
[-dea584.svg)](https://www.rust-lang.org)
[](https://github.com/netreon-io/NETREON/actions/workflows/ci.yml)
[](https://kit.svelte.dev)
**用于 MikroTik RouterOS 设备的网络安全管理系统。**
Netreon 将自动发现与封锁受感染主机、流量遥测收集、ML 异常检测和 AI 分析结合在一个单一的 self-contained 应用程序中——无需
外部数据库、队列或云服务。所有数据都保留在您的网络中。
## 🎯 Netreon 的用途
当网络中的主机受到感染(僵尸网络、C2 连接、DNS 隧道、恶意流量)时,
Netreon 会:
1. **检测**威胁——通过 syslog/IPFIX 收集器、DGA 启发式算法、
threat intelligence feeds 和 ML Half-Space Trees 实时进行。
2. **封锁**受感染主机——立即在 MikroTik 路由器的 firewall 层级通过
带有 circuit breaker 和 sync engine(期望状态 vs 观察状态)的 actor 模型执行。
3. **情境化**事件——构建档案(firewall + DNS + flows + NAT + baseline)
并利用 IPFIX 进行回溯性流量分析。
4. **通知**操作员(Telegram),并通过 AI 助手提供建议。
## 👥 目标受众
- 基于 MikroTik RouterOS 的网络系统管理员
- 中小规模网络的 SOC 分析师
- 需要**无需云服务**且能完全控制数据的自动响应网络威胁的组织
## ⭐ 核心差异
| 特性 | Netreon | 典型解决方案 |
|-------------|---------|----------------|
| 部署方式 | 单一 binary + config | Docker 技术栈或云服务 |
| 外部依赖 | 无(内置数据库:SQLite + DuckDB) | PostgreSQL, Kafka, Elasticsearch |
| 自动封锁 | 即时,在 router 层级 | 手动或通过 SIEM 关联 |
| 流量分析 | 内置 ML + AI | 独立产品 |
| 界面语言 | 乌克兰语(原生) | 英语 |
| 隐私保护 | 全部本地化,数据不离开网络 | 云端处理 |
## 🧩 功能
- **遥测收集** — Syslog(SIMD 解析器)、IPFIX(基于 template,IANA IE fields)、
DNS 分析、GeoIP(MaxMind MMDB)。
- **威胁检测** — DGA 评分(Aho-Corasick)、DNS 隧道检测、threat
intelligence feeds、基于 15 维特征向量的 ML Half-Space Trees。
- **自动响应** — 带有 circuit breaker、retry/backoff、bulkhead 的 MikroTik actor;
sync engine desired↔observed;address-list 管理(`NETREON_*`)。
- **分析与档案** — 5 轴 radar 评分、destination/domain 风险评分、
Jaccard 聚类、渐进式 rollup(7天/30天/365天)。
- **AI 助手** — tool-calling loop(OpenAI 兼容 LLM)、DuckDB tool provider、
异常解释器(ML→LLM 桥接)、反馈至 knowledge base。
- **Web UI** — SvelteKit 2 SPA,14 个页面,7 个 ECharts 图表,RBAC,深色模式,
i18n(乌克兰语),导出 CSV/XLSX/PDF/JSON。
- **通知** — Telegram 机器人,在检测点配置 NotificationDispatcher。
- **Captive Portal** — 用于重定向被封锁主机的 ManagedService。
- **Security** — JWT HS256(fail-fast)、RBAC role-sets、session enforcement、rate-limiting、
AppError sanitization boundary、SHA-256(非 SHA-1)。
## 🏛️ 架构
扁平化 Rust workspace,`resolver = "3"`,edition 2024。**14 个 crates:**
| Crate | 角色 |
|-------|------|
| `netreon` | Binary:CLI + ServiceRegistry 配置(~15+ 个服务) |
| `netreon-types` | DTO, ApiResponse, AppError, RBAC,领域类型 |
| `netreon-config` | AppConfig(13 个子配置),TOML,验证 |
| `netreon-platform` | CPU affinity, CachePadded, load-test |
| `netreon-mikrotik` | MikrotikActor, CircuitBreaker, sync engine |
| `netreon-net` | Syslog/IPFIX 解析器,DNS/DGA,GeoIP,threat feed |
| `netreon-inventory` | DHCP/ARP,DNS 缓存,设备合并,拓扑 |
| `netreon-database` | SQLite + DuckDB 连接池,14 个迁移,分析 |
| `netreon-runtime` | ServiceRegistry, ManagedService,调度器 |
| `netreon-ai` | LLM 客户端,tool-calling,异常解释器 |
| `netreon-analytics-core` | ML (HST),特征,评分,聚类,档案 |
| `netreon-web` | Axum handlers,auth,RBAC,SSE,SPA fallback |
| `netreon-ui` | SvelteKit SPA (rust-embed) |
| `test-support` | Fixtures,e2e,proptest,golden snapshots,benches |
**技术栈:** Rust 2024 · Axum · SQLite (OLTP) · DuckDB (OLAP) ·
SvelteKit 2 + Svelte 5 runes · Tailwind CSS 4 · ECharts 5 · Bits UI · Criterion。
## 🚀 快速开始
### 要求
- Rust toolchain (edition 2024)
- 网络中的 MikroTik RouterOS router
- (可选)用于 AI 助手的 LLM 提供商、MaxMind GeoIP 数据库、Telegram 机器人
### 构建与运行
```
# 1. 复制并编辑配置
cp config.toml.example config.toml
cp .env.example .env # обов'язково задайте NETREON_JWT_SECRET
# 2. 构建
cargo build --release
# 3. 运行服务器
cargo run --release -- serve
# 或者通过 Docker
docker build -t netreon .
docker run -p 47291:47291 --env-file .env netreon
```
### 首次运行设置向导
首次运行时,打开 Web 界面(`http://:47291`)—— 设置向导
(`POST /setup/config`)将引导您完成管理员、网络、MikroTik 以及
Telegram 的配置。
### CLI 命令
```
netreon serve # Запуск сервера
netreon backup # Бекап БД
netreon restore # Відновлення з бекапу
netreon migrate # Запуск міграцій
netreon doctor # Діагностика середовища
```
### 开发命令
```
cargo check --workspace --all-targets --all-features
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-targets --all-features
# Frontend 测试
cd crates/netreon-ui/frontend && npx vitest run
```
## 📊 指标(基线 v27)
| 指标 | 数值 |
|---|---|
| Rust `.rs` / LOC | ~195 / ~92 000 |
| `#[test]` 函数 | ~2 448 passed / 0 failed (21+ suites) |
| Clippy 警告 | 0 (`-D warnings`) |
| 前端测试 | 220/220 (28 个文件) |
| Workspace crates / SQLite 迁移 | 14 / 14 |
| Criterion benches | 5 |
| 有效的 ADRs | 007–041 |
## 📚 文档
详细文档位于 `docs/`:
- [`01_introduction/`](docs/01_introduction/) — 目的、理念、目标受众
- [`02_architecture/`](docs/02_architecture/) — 系统架构
- [`03_security/`](docs/03_security/) — 安全模型
- [`04_data_collection/`](docs/04_data_collection/) — 数据收集 (syslog/IPFIX/DNS)
- [`05_analytics/`](docs/05_analytics/) — 分析与 ML
- [`06_features/`](docs/06_features/) — 功能(资产盘点、通知、UI、导出)
- [`deployment.md`](docs/deployment.md) — 部署
## 🇺🇦 乌克兰语
界面、文档和代码注释均为乌克兰语。代码实体名称为英语。详情:[`docs/01_introduction/ukrainian_language.md`](docs/01_introduction/ukrainian_language.md)。
## 📄 许可证
Licensed under the **European Union Public Licence (EUPL) v. 1.2** —
[SPDX: EUPL-1.2](https://spdx.org/licenses/EUPL-1.2.html)。请参阅 [`LICENSE`](LICENSE)。
EUPL 是一种与 GPL/AGPL/MPL 兼容的 copyleft 许可证(参见许可证附录)。
这使得 Netreon 适用于公共部门的用例,并保护其免受
衍生产品的私有侵占。
该项目的开发侧重于隐私和对数据的完全本地控制——
没有任何遥测字节会离开您的网络。
## 👤 作者身份 (Authorship)
**主要作者:** Vladymyr M. (Volodymyr M.),乌克兰 `` —
2026。完整作者及贡献者列表请见 [`AUTHORS`](AUTHORS),项目的官方
声明请见 [`NOTICE`](NOTICE)。
根据 **EUPL v1.2 第 5 条**,衍生作品、fork 和分发
**必须**保留所有版权声明、`NOTICE` 文件以及 `LICENSE` 文件。
每个代码文件都包含相应的许可证头部。
## 🔒 漏洞
请前往 [Security](SECURITY.md) 板块报告安全漏洞。
**请勿针对漏洞创建公开的 issue。**
标签:AMSI绕过, IP 地址批量处理, MikroTik, Rust, 威胁检测, 网络安全, 网络流量分析, 网络流量审计, 自动化扫描, 自动响应, 通知系统, 隐私保护