koodoxz/tameng

GitHub: koodoxz/tameng

一款使用 Go 编写的单二进制、ML 辅助 Web 应用防火墙,无需 Python sidecar 即可实现实时威胁检测与多层防护。

Stars: 0 | Forks: 0

CI Status Go 1.26+ License: AGPL-3.0 Single Binary Made in Indonesia

🛡️ Tameng

一个单一二进制文件、ML 辅助的 Web Application Firewall,使用 Go 编写。
无需用于实时威胁检测的 Python sidecar。无需用于 WAF 评分的外部推理服务。也没有需要 12 个容器的复杂技术栈。仅需一个二进制文件,一个 YAML 文件,一个 systemd unit。

🇮🇩 由一位独立的安全工程师在印度尼西亚公开设计并开发。

Tameng starting up and blocking a SQLi+XSS attack live

Bahasa Indonesia · English · 快速开始 · 参与贡献 · 许可证

# Bahasa Indonesia ## 目录 - [关于 Tameng](#tentang-tameng) - [为什么 Tameng 与众不同](#differensiator-teknis) - [核心安全功能](#fitur-keamanan-inti) - [快速开始](#mulai-cepat) - [配置说明](#konfigurasi) - [API 端点](#endpoint-api) - [架构设计](#arsitektur) - [测试](#testing) - [安全与漏洞报告](#keamanan--pelaporan-kerentanan) - [可选预测功能](#forecasting-opsional) - [路线图](#roadmap) - [参与贡献](#berkontribusi) - [关于作者](#tentang-pembuat) - [许可证](#lisensi) ## 关于 Tameng 🛡️ **基于 ML 威胁检测的 Web Application Firewall 防护盾** Tameng 是一个高性能的 Web Application Firewall (WAF),具备基于 machine learning 的威胁检测功能,使用 Go 编写,以实现内存安全性和卓越的性能。 Tameng 通过单个 Go 二进制文件、一个 YAML 文件和一个 systemd 服务提供全面的应用层防护 —— 无需依赖外部 sidecar。 ### 为什么叫 "Tameng"? **Tameng** 在印尼语中是 *盾牌* 的意思 —— 一种矗立在前方、在攻击触及受保护目标之前将其阻挡的防护工具。这个名字是经过深思熟虑后选择的:该项目由一位印尼开发者构建,其初衷很简单 —— 成为数字基础设施的一面真正的盾牌,从保护作者自己构建的项目开始,再扩展到任何需要它的人。这不仅仅是一个产品名称,更是一种愿景:诞生并成长于印尼的高质量网络安全工具,并向所有人开放。 ## 技术差异化 与其他开源 WAF(例如 **Coraza**,一个兼容 ModSecurity 的纯 WAF 库)相比: - **开箱即用:** 单个二进制文件集成了 WAF signature 引擎 + ML 威胁评分 + 两阶段 actor 追踪 + 3 阶段 DDoS 升级响应 + honeypot/deception 层 + threat intelligence 集成 (STIX/TAXII) + MITRE ATT&CK 映射 - **Regex 安全性:** WAF 引擎使用 Go 的 RE2 regex 引擎(而不是 Oniguruma/PCRE)—— ReDoS(灾难性 regex 回溯)在结构上是不可能的,而不仅仅是得到了缓解 - **原生 ML:** 基于 LightGBM 的模型推理在 Go 中原生运行(通过 `leaves` 库),用于实时的按请求威胁评分 —— 请求路径中没有 Python sidecar 进程。Tameng 还包含一个可选的、基于 Prophet 的趋势预测功能(用于预测 gray-zone/alert 的数量),该功能确实需要本地的 Python 3 运行时 —— 这是一个独立的可选子系统(默认不启用),不是核心 WAF/评分路径的一部分。请参阅 [可选预测功能](#forecasting-opsional) - **Actor 追踪:** 分两个阶段(轻量级计数器 → 完整的行为档案)追踪 actor,采用内存安全的 LRU 驱逐机制,即使在遭受 DDoS 攻击的负载下也能保持稳定 - **对抗性测试透明度:** 拥有深入的 Red-Team 历史记录,并配有专门构建的配套攻击工具。我们也会发布失败的优化尝试 —— 大多数安全工具在某种方法无效时往往绝口不提。 ### 对抗性 Red-Teaming (Ratatoskr) ⚡ Tameng 在内部使用 **Ratatoskr** 进行测试 —— 这是一款定制的 payload 生成器和攻击模拟工具(由同一作者构建,本身尚未开源),旨在高负载和真实的 evasion 场景下对 WAF 的功能边界进行压力测试,而不仅仅是运行合成的单元测试。 | 测试指标 | 结果 | Red-Team 方法论 | | :--- | :---: | :--- | | 🎯 **Evasion Payload 拦截** | **100% (13/13)** | 现实世界中经过混淆的攻击变体和 evasion 技术,在整个测试过程中均通过同一个端点发射 | | 📥 **STIX/TAXII Payload 摄取** | **100% (13/13)** | 通过真实、已注册的 TAXII 端点(设计上为无需身份验证)进行 SQLi/XSS/traversal/command-injection —— 该端点此前曾受到 block-threshold 配置错误的影响,现已修复并经过实时验证 | | 🔐 **生态系统端点完整性** | **100% (4/4)** | 伪造的 HEIMDALL/DNS 报告被 IP allowlist 拒绝;未经身份验证的读取源被 auth middleware 拒绝 | | 🧪 **资源耗尽 / 崩溃安全性** | **0 次绕过,0 次崩溃** | 针对真实 handler 的有界 body-size、JSON 嵌套和 limit 参数探测;目标在测试前后均保持健康状态 | | 🛡️ **ReDoS Fuzzing 稳定性** | **0 次崩溃** | 在 Go 的 RE2 regex 引擎上,对整个检测面执行了超过 800 万次 fuzzing payload | | 🔧 **真实生产修复** | **16+ 项修复** | 包括我们在第一次尝试中失败的案例,而不仅仅是那些立即生效的案例 | ## 核心安全功能 | 功能 | 描述 | |-------|-----------| | **WAF 引擎 (200+ signature)** | SQL Injection, XSS, Path Traversal, Command Injection, SSRF, Log4Shell, Scanner/Bot 检测 | | **DDoS 防护** | EWMA 速率检测 + 3 阶段升级响应 (Challenge → Throttle → Block) | | **Actor 追踪** | 具备行为 DNA 指纹识别的两个阶段追踪、内存安全存储、Reserse 集成 | | **Deception 层** | 100+ honeypot 和 canary token,用于重定向并识别攻击者 | | **指纹识别** | JA3 TLS + HTTP 行为分析 | | **Kill Chain 检测** | 多阶段攻击关联,Command & Control (C2) 检测 | | **Threat Intelligence** | STIX/TAXII 集成,MITRE ATT&CK 映射,IOC 源 | | **协议守卫** | Request smuggling 检测,GraphQL 深度限制,WebSocket 速率限制 | | **行为分析** | 基线偏差检测,撞库识别,异常关联 | ## 快速开始 ### 前置条件 - **Go 1.26+** (从源码构建) - **Docker & Docker Compose** (Docker 部署) — 无需安装 Go - **SQLite3** (内嵌于 Go 二进制文件中,构建时需要 CGO) ### 选项 1:Docker (推荐) ``` # Clone repo git clone https://github.com/koodoxz/tameng.git cd tameng # 复制 environment 模板 cp .env.example .env # 编辑 .env 并填入您的值(SVALINN_GOD_KEY, SVALINN_API_KEY, 等) nano .env # Build 并运行 docker-compose up -d # 检查 health curl http://localhost:10000/health # 查看 logs docker-compose logs -f svalinn ``` **默认端口:** `10000` (HTTP), `10443` (HTTPS) ### 选项 2:从源码构建 ``` # Prerequisites:Go 1.26+,需为 sqlite3 启用 CGO git clone https://github.com/koodoxz/tameng.git cd tameng cp .env.example .env nano .env CGO_ENABLED=1 go build -o tameng ./cmd/svalinn ./tameng -config configs/svalinn.yaml ``` ## 配置说明 所有配置均通过 **环境变量** 和 `configs/svalinn.yaml` 文件进行。请查看 `.env.example` 获取完整列表。 **必填项:** - `SVALINN_GOD_KEY` — 用于 `/api/v9/*` 端点的身份验证密钥 (仅限管理员) - `SVALINN_API_KEY` — 用于程序化访问的密钥 (威胁报告、actor 查询) - `SVALINN_RESERSE_USER` / `SVALINN_RESERSE_PASS` — 高级 actor 追踪模块 的凭证。如果为空,服务器将拒绝启动 (基于设计实现 fail-closed)。 **可选项 (MECOB 生态系统):** - `ODIN_API_KEY` — 与内部 MECOB 生态系统 gateway/DNS 服务进行可选集成的密钥 (尚未公开发布) **高级调优:** WAF/DDoS 的 threshold、内存中的 actor 数量限制以及功能开关 (ML 评分、deception 等) 均直接通过 `configs/svalinn.yaml` 配置 —— 而不是通过环境变量。请查看该文件以获取完整的选项列表 (WAF, DDoS, ML, deception, SIEM, CVE 源, TLS 等)。 ### 在您的应用前端运行 (反向代理) 从此版本开始,Tameng 可以直接驻留在您应用的流量路径中,而不仅仅是作为独立的“情报即服务”运行。请在 `configs/svalinn.yaml` 中设置 `server.backend_url`: ``` server: backend_url: "http://127.0.0.1:8080" # aplikasi Anda ``` 未匹配到 Tameng 自身路由 (health, metrics, TAXII, API 等) 的请求,会在 **经过完整 middleware 链之后** (WAF, DDoS, actor-tracking, deception) 被转发到 `backend_url` —— 而不是在此之前。将其留空 (默认值) 即可像以前一样独立运行 Tameng。 **我们坦诚说明的局限性 (此初始实现):** - 尚不支持针对后端的 WebSocket upgrade 或流式传输 SSE/chunked (将失败或被缓冲) —— 尚不适用于基于 WebSocket 的后端。 - 超过 8 KiB 的 request body 将被拒绝 (413) —— 尚不支持流式上传。 - 如果您的应用使用了相同的路径,Tameng 内置的几个管理/诱饵路径将始终覆盖您的后端 —— 在最终确定应用的路由结构之前,请检查 `configs/svalinn.yaml` 和 `internal/server/server.go` 源码以获取完整列表。 - 只有当 TLS 直接在 Tameng 本身终止时,转发到后端的 `X-Forwarded-Proto` 才是准确的 —— 如果 TLS 在 Tameng 前方的 nginx/反向代理处终止,后端将始终看到 "http"。 - 不要将 `backend_url` 指向 Tameng 自身的监听器 (会造成环路) 或您无法控制的地址。 - 与通常的 WAF 一样,在后端前方进行的 IP 信誉封锁具有固定的持续时间,并适用于整个源 IP —— 在具有共享出口 IP 的网络中 (NAT/企业代理/CDN),这可能会影响试图访问您应用且位于同一 IP 后的其他用户。完整说明请见 [核心安全功能](#fitur-keamanan-inti)。 ## API 端点 | 端点 | 方法 | 描述 | |----------|--------|-----------| | `/health` | GET | 健康检查 | | `/metrics` | GET | Prometheus 指标 | | `/api/v1/stats` | GET | 服务器统计信息 | | `/api/v1/threats` | GET | 最近的威胁 | | `/api/v1/actors` | GET | 活跃的 actor | | `/api/v1/config` | GET | 当前配置 | | `/api/v9/reload` | POST | 重新加载配置 (God Mode) | | `/api/v9/block` | POST | 封禁 IP (God Mode) | | `/reserse/actors` | GET | Reserse actor 详情 (Basic Auth) | | `/reserse/actors/{id}/timeline` | GET | 单个 actor 档案的时间轴事件 (Basic Auth) | | `/reserse/actors/by-ip/{ip}/timeline` | GET | 基于 IP 的时间轴事件 (Basic Auth) | | `/reserse/graph` | GET | Actor 关系图谱 (Basic Auth) | | `/taxii` | GET | TAXII 发现文档 | | `/taxii/collections` | GET | TAXII 集合列表 | | `/taxii/collections/default/objects` | GET | 读取 STIX 指标 (公开) | | `/taxii/collections/default/objects` | POST | 提交 STIX 指标 (需要 `SVALINN_API_KEY`) | ## 架构设计 ``` internal/ ├── actor/ # Two-stage actor tracking (lightweight → full profiles) ├── behavior/ # Behavioral baseline + deviation analysis ├── collector/ # Threat intelligence collectors ├── config/ # YAML config loader with env expansion ├── countermeasures/ # Active response mechanisms ├── db/ # SQLite persistence ├── ddos/ # EWMA + 3-phase escalation ├── deception/ # Honeypots + canary tokens ├── detect/ # Kill chain + C2 detection ├── ecosystem/ # MECOB ecosystem integration (internal gateway/DNS services) ├── egress/ # Egress filtering ├── fingerprint/ # JA3 + HTTP fingerprinting ├── geoip/ # MaxMind GeoIP lookups ├── hardening/ # Memory + security hardening ├── heuristics/ # Threat scoring heuristics ├── honeypot/ # Dedicated honeypot engine ├── intel/ # MITRE ATT&CK + IOC + STIX ├── logger/ # zerolog structured logging ├── logic/ # Business logic abuse detection ├── malware/ # Malware behavior analysis ├── ml/ # LightGBM ML bridge (native Go) ├── observatory/ # Top actors cache (Hall of Fame) ├── orchestrator/ # Detection orchestration ├── payload/ # YARA/Sigma/Snort signatures ├── preattack/ # Pre-attack detection (recon/scanning) ├── protocol/ # Request smuggling, GraphQL depth, WebSocket ├── response/ # Response encryption + PoW challenges ├── security/ # Security hardening utilities ├── semantic/ # Semantic payload analysis ├── server/ # HTTP/TLS server + middleware pipeline ├── session/ # Session tracking ├── siem/ # SIEM integration └── waf/ # WAF signature engine (200+) ``` ``` graph LR Req[Incoming Request] --> Pipeline subgraph Pipeline[Middleware Pipeline] direction LR Regex["WAF Engine
RE2 Regex (ReDoS-safe)"] --> ML["ML Scoring
LightGBM via leaves"] ML --> ActorTrack["Actor Tracking
Two-Stage (ringan → profil penuh)"] ActorTrack --> DDoS["DDoS Escalation
Challenge → Throttle → Block"] end Pipeline --> Deception{Trap / Honeypot?} Deception -- Ya --> Block[Block / Challenge / Encrypt] Deception -- Tidak --> Backend[Forward to Backend] ``` **数据流:** 传入请求 → middleware pipeline → WAF signature 检查 + ML 评分 → actor 追踪 + 行为分析 → DDoS 检测 → deception/honeypot 检查 → 响应塑造 (加密、PoW) → SIEM/情报日志记录 → 转发到后端 (或拦截/challenge)。 ## 测试 ``` go test ./internal/... # Unit tests go test -race ./internal/... # Dengan race detector go test -coverprofile=coverage.out ./internal/... # Coverage go tool cover -func=coverage.out go test ./internal/waf/... # Specific package go test -bench=. -benchmem ./internal/... # Benchmarks ``` 有关差分 fuzz 测试、mutation 测试对抗性测试用例,请参见 `*_test.go` 文件。 ## 安全与漏洞报告 每个运行中的 Tameng 实例都会提供 `/.well-known/security.txt` (有关完整政策请参见 `/security-policy`)。要报告漏洞或意外行为 (包括上述 IP 信誉封锁设计的影响),请联系 **koodoxz@gmail.com**。初步响应目标:24 小时。分类处理:72 小时。 请勿为未修补的漏洞发布公开的 issue —— 请先通过电子邮件报告。 ## 可选预测功能 Tameng 包含一个可选的趋势预测子系统 (`internal/ml/prophet.go`, `anomaly.go`),该系统会向本地 Python 3 进程发起 shell 调用,以预测 gray-zone/alert 的数量趋势。此功能 **默认不启用**,且对于 WAF 防护、signature 匹配或 LightGBM 威胁评分来说 **不是必需的** —— 这三者完全在单个 Go 二进制文件内运行,无需任何外部进程。 启用预测需要在主机上安装 Python 3,并在 `.harvest/scripts/` 下提供相应的脚本 (基于 Prophet)。如果您不需要趋势预测,您依然可以开箱即用地获得完全的单二进制、无 sidecar 体验。 ## 路线图 - [x] 发布完全验证的 CI 构建 (GitHub Actions,跨平台) - [ ] 可按类别配置的 IP 信誉封锁持续时间 (而不是单一固定的持续时间) - [x] 反向代理部署文档 (位于通用后端前方) - [ ] 扩展针对 LFI/RFI 类别的 WAF signature 有其他建议?请发起 [issue](.github/ISSUE_TEMPLATE/feature_request.md)。 ## 关于作者 Tameng 由一位印尼的独立开发者/安全工程师开发和维护,这是其首个公开发布的开源项目。它是在公开环境下构建、经过对抗性测试并透明地记录下来的 —— 包括其中的失败之处。联系方式:**koodoxz@gmail.com**。 ## 许可证 **AGPL-3.0** — 必须向所有运行修改后版本的用户提供源代码,**包括当其作为网络服务运行时** (这正是 AGPL 与普通 GPL 的区别所在)。托管/云服务提供商不能拿走这段代码、进行修改,然后在不发布其修改内容的情况下将其作为竞争性服务提供。全文请见:[LICENSE](LICENSE)。 # English ## 目录 - [关于 Tameng](#about-tameng) - [为什么 Tameng 与众不同](#technical-differentiation) - [核心安全功能](#core-security-features) - [快速开始](#quick-start-en) - [配置说明](#configuration) - [API 端点](#api-endpoints) - [架构设计](#architecture) - [测试](#testing-en) - [安全与漏洞报告](#security--vulnerability-reporting) - [可选预测功能](#optional-forecasting-en) - [路线图](#roadmap-en) - [参与贡献](#contributing-en) - [关于作者](#about-the-author) - [许可证](#license) ## 关于 Tameng 🛡️ **具备 ML 威胁检测功能的 Web Application Firewall** Tameng 是一款高性能的 Web Application Firewall (WAF),具有由 machine learning 驱动的威胁检测功能,并使用 Go 编写以实现内存安全和出色的性能。 Tameng 通过单个 Go 二进制文件、一个 YAML 文件和一个 systemd 服务提供全面的应用层防护 —— 无需依赖任何外部 sidecar。 ### 为什么叫 "Tameng"? **Tameng** 在印尼语中意为 *盾牌* —— 一种矗立在前方,在攻击触及受保护目标之前将其吸收的工具。这个名字是经过深思熟虑后选择的:该项目由一位印尼开发者构建,其背后的希望很简单 —— 成为数字基础设施的一面真正的盾牌,从保护其作者构建的项目开始,再扩展到任何需要它的人。这不仅仅是一个产品名称,更是一种意图:诞生并成长于印尼的、真正优秀的安全工具,并将其免费提供给所有人。 ## 技术差异化 与其他开源 WAF(如 **Coraza**,一个兼容 ModSecurity 的纯 WAF 库)相比: - **开箱即用:** 单个二进制文件结合了 WAF signature 引擎 + ML 威胁评分 + 两阶段 actor 追踪 + 3 阶段 DDoS 升级响应 (Challenge → Throttle → Block) + honeypot/deception 层 + STIX/TAXII threat intelligence + MITRE ATT&CK 映射 - **Regex 安全性:** WAF 引擎使用 Go 的 RE2 regex 引擎 (非 Oniguruma/PCRE) —— ReDoS (灾难性回溯) 在结构上是不可能的,而不仅仅是得到了缓解 - **原生 ML:** LightGBM 模型推理在 Go 中原生运行 (通过 `leaves` 库),用于实时的按请求威胁评分 —— 请求路径中没有 Python sidecar。Tameng 还提供了一个可选的、基于 Prophet 的趋势预测功能 (预测 gray-zone/alert 量),该功能确实需要本地 Python 3 运行时 —— 这是一个独立的可选子系统 (默认禁用),不是核心 WAF/评分路径的一部分。请参阅 [可选预测功能](#optional-forecasting-en) - **Actor 追踪:** 分两个阶段 (轻量级计数器 → 完整的行为档案) 追踪威胁 actor,具有内存安全的 LRU 驱逐机制,即使在 DDoS 受害者负载下也是如此 - **对抗性测试透明度:** 拥有深入的 Red-Team 历史记录,并配有专门构建的配套攻击工具。我们也会发布失败的优化尝试 —— 大多数安全工具在某种方法无济于事时从不发声。 ### 对抗性 Red-Teaming (Ratatoskr) ⚡ Tameng 在内部使用 **Ratatoskr** 进行测试 —— 这是一款定制的 payload 生成器和攻击模拟工具 (由同一作者构建,本身并未开源),旨在对高负载和真实 evasion 场景下的 WAF 功能边界进行压力测试,而不仅仅是运行合成的单元测试。 | 测试指标 | 结果 | Red-Team 方法论 | | :--- | :---: | :--- | | 🎯 **Evasion Payload 拦截** | **100% (13/13)** | 现实世界中经过混淆的攻击变体和 evasion 技术,通过整个测试过程使用的同一端点发射 | | 📥 **STIX/TAXII Payload 摄取** | **100% (13/13)** | 通过真实、已注册的 TAXII 端点 (设计上无需身份验证) 进行 SQLi/XSS/traversal/command-injection —— 该端点此前曾受到 block-threshold 配置错误的影响,现已修复并经过实时验证 | | 🔐 **生态系统端点完整性** | **100% (4/4)** | 伪造的 HEIMDALL/DNS 报告被 IP allowlist 拒绝;未经身份验证的读取源被 auth middleware 拒绝 | | 🧪 **资源耗尽 / 崩溃安全性** | **0 次绕过,0 次崩溃** | 针对真实 handler 的有界 body-size、JSON 嵌套和 limit 参数探测;目标在测试前后均保持健康状态 | | 🛡️ **ReDoS Fuzzing 稳定性** | **0 次崩溃** | 在 Go 的 RE2 regex 引擎上,对整个检测面执行了超过 800 万次 fuzzing payload | | 🔧 **真实生产修复** | **16+ 项修复** | 包括我们在第一次尝试中失败的案例,而不仅仅是那些立即生效的案例 | ## 核心安全功能 | 功能 | 描述 | |---------|-------------| | **WAF Signatures (200+)** | SQL Injection, XSS, Path Traversal, Command Injection, SSRF, Log4Shell, Scanner/Bot 检测 | | **DDoS 防护** | EWMA 速率检测 + 3 阶段升级响应 (Challenge → Throttle → Block) | | **Actor 追踪** | 两阶段追踪,具备行为 DNA 指纹识别、内存安全存储、Reserse 集成 | | **Deception 层** | 100+ honeypot 和 canary token,用于重定向并识别 actor | | **指纹识别** | JA3 TLS + HTTP 行为分析 | | **Kill Chain 检测** | 多阶段攻击关联,Command & Control (C2) 检测 | | **Threat Intelligence** | STIX/TAXII 集成,MITRE ATT&CK 映射,IOC 源 | | **协议守卫** | Request smuggling 检测,GraphQL 深度限制,WebSocket 速率限制 | | **行为分析** | 基线偏差检测,撞库识别,异常关联 | ## 快速开始 (EN) ### 前置条件 - **Go 1.26+** (从源码构建) - **Docker & Docker Compose** (Docker 部署) — 无需 Go - **SQLite3** (内嵌于 Go 二进制文件中;构建时需要 CGO) ### 选项 1:Docker (推荐) ``` git clone https://github.com/koodoxz/tameng.git cd tameng cp .env.example .env nano .env # SVALINN_GOD_KEY, SVALINN_API_KEY, etc. docker-compose up -d curl http://localhost:10000/health docker-compose logs -f svalinn ``` **默认端口:** `10000` (HTTP), `10443` (HTTPS) ### 选项 2:从源码构建 ``` # Prerequisites:Go 1.26+,需为 sqlite3 启用 CGO git clone https://github.com/koodoxz/tameng.git cd tameng cp .env.example .env nano .env CGO_ENABLED=1 go build -o tameng ./cmd/svalinn ./tameng -config configs/svalinn.yaml ``` ## 配置说明 所有配置均通过 **环境变量** 和 `configs/svalinn.yaml` 文件进行。请查看 `.env.example` 获取完整列表。 **必填项:** - `SVALINN_GOD_KEY` — 用于 `/api/v9/*` 端点的身份验证密钥 (仅限管理员) - `SVALINN_API_KEY` — 用于程序化访问的密钥 (威胁报告、actor 查询) - `SVALINN_RESERSE_USER` / `SVALINN_RESERSE_PASS` — 高级 actor 追踪模块 的凭证。如果为空,服务器将拒绝启动 (基于设计实现 fail-closed)。 **可选项 (MECOB 生态系统):** - `ODIN_API_KEY` — 与内部 MECOB 生态系统 gateway/DNS 服务进行可选集成的密钥 (尚未公开发布) **高级调优:** WAF/DDoS 的 threshold、actor 内存限制以及功能开关 (ML 评分、deception 等) 均直接在 `configs/svalinn.yaml` 中配置 —— 而不是通过环境变量。请查看该文件以获取完整的选项列表 (WAF, DDoS, ML, deception, SIEM, CVE 源, TLS 等)。 ### 在您的应用前端运行 (反向代理) 从此版本开始,Tameng 可以直接驻留在您应用的流量路径中,而不仅仅是作为独立的“情报即服务”运行。请在 `configs/svalinn.yaml` 中设置 `server.backend_url`: ``` server: backend_url: "http://127.0.0.1:8080" # your application ``` 任何不匹配 Tameng 自身路由 (health, metrics, TAXII, API 等) 的请求都会在 **通过完整的 middleware 链 (WAF, DDoS, actor-tracking, deception) 之后** 被转发到 `backend_url` —— 绝不会在此之前。将其留空 (默认值) 即可像以前一样独立运行 Tameng。 **此初始实现存在的一些坦诚的局限性:** - 尚不支持针对后端的 WebSocket upgrade 或 SSE/chunked 流式传输 (将失败或被缓冲) —— 尚不适用于基于 WebSocket 的后端。 - 超过 8 KiB 的 request body 将被拒绝 (413) —— 尚不支持流式上传。 - 如果您的应用使用了相同的路径,Tameng 已经拥有的几个内置管理/诱饵路径将始终遮蔽您的后端 —— 在最终确定应用路由之前,请检查 `configs/svalinn.yaml` 和 `internal/server/server.go` 源码以获取完整列表。 - 只有当 TLS 直接在 Tameng 处终止时,转发到后端的 `X-Forwarded-Proto` header 才是准确的 —— 如果 TLS 在 Tameng 前方的上游 nginx/反向代理处终止,后端将始终看到 "http"。 - 不要将 `backend_url` 指向 Tameng 自身的监听器 (会产生环路) 或您无法控制的地址。 - 与通常的 WAF 封锁一样,后端前方的 IP 信誉封锁采用了适用于整个源 IP 的固定持续时间 —— 在具有共享出口 IP (NAT、企业代理、CDN) 的网络上,这可能会影响尝试访问您应用且位于同一 IP 后的其他用户。完整说明请见 [核心安全功能](#core-security-features)。 ## API 端点 | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/health` | GET | 健康检查 | | `/metrics` | GET | Prometheus 指标 | | `/api/v1/stats` | GET | 服务器统计信息 | | `/api/v1/threats` | GET | 最近的威胁 | | `/api/v1/actors` | GET | 活跃的 actor | | `/api/v1/config` | GET | 当前配置 | | `/api/v9/reload` | POST | 重新加载配置 (God Mode) | | `/api/v9/block` | POST | 封禁 IP (God Mode) | | `/reserse/actors` | GET | Reserse actor 详情Basic Auth) | | `/reserse/actors/{id}/timeline` | GET | 单个 actor 档案的时间轴事件 (Basic Auth) | | `/reserse/actors/by-ip/{ip}/timeline` | GET | 基于 IP 的时间轴事件 (Basic Auth) | | `/reserse/graph` | GET | Actor 关系图谱 (Basic Auth) | | `/taxii` | GET | TAXII 发现文档 | | `/taxii/collections` | GET | 列出 TAXII 集合 | | `/taxii/collections/default/objects` | GET | 读取 STIX 指标 (公开) | | `/taxii/collections/default/objects` | POST | 提交 STIX 指标 (需要 `SVALINN_API_KEY`) | ## 架构设计 ``` internal/ ├── actor/ # Two-stage actor tracking (lightweight → full profiles) ├── behavior/ # Behavioral baseline + deviation analysis ├── collector/ # Threat intelligence collectors ├── config/ # YAML config loader with env expansion ├── countermeasures/ # Active response mechanisms ├── db/ # SQLite persistence ├── ddos/ # EWMA + 3-phase escalation ├── deception/ # Honeypots + canary tokens ├── detect/ # Kill chain + C2 detection ├── ecosystem/ # MECOB ecosystem integration (internal gateway/DNS services) ├── egress/ # Egress filtering ├── fingerprint/ # JA3 + HTTP fingerprinting ├── geoip/ # MaxMind GeoIP lookups ├── hardening/ # Memory + security hardening ├── heuristics/ # Threat scoring heuristics ├── honeypot/ # Dedicated honeypot engine ├── intel/ # MITRE ATT&CK + IOC + STIX ├── logger/ # zerolog structured logging ├── logic/ # Business logic abuse detection ├── malware/ # Malware behavior analysis ├── ml/ # LightGBM ML bridge (native Go) ├── observatory/ # Top actors cache (Hall of Fame) ├── orchestrator/ # Detection orchestration ├── payload/ # YARA/Sigma/Snort signatures ├── preattack/ # Pre-attack detection (recon/scanning) ├── protocol/ # Request smuggling, GraphQL depth, WebSocket ├── response/ # Response encryption + PoW challenges ├── security/ # Security hardening utilities ├── semantic/ # Semantic payload analysis ├── server/ # HTTP/TLS server + middleware pipeline ├── session/ # Session tracking ├── siem/ # SIEM integration └── waf/ # WAF signature engine (200+) ``` ``` graph LR Req[Incoming Request] --> Pipeline subgraph Pipeline[Middleware Pipeline] direction LR Regex["WAF Engine
RE2 Regex (ReDoS-safe)"] --> ML["ML Scoring
LightGBM via leaves"] ML --> ActorTrack["Actor Tracking
Two-Stage (lightweight → full profile)"] ActorTrack --> DDoS["DDoS Escalation
Challenge → Throttle → Block"] end Pipeline --> Deception{Trap / Honeypot?} Deception -- Yes --> Block[Block / Challenge / Encrypt] Deception -- No --> Backend[Forward to Backend] ``` **数据流:** 传入请求 → middleware pipeline → WAF signature 检查 + ML 评分 → actor 追踪 + 行为分析 → DDoS 检测 → deception/honeypot 检查 → 响应塑造 (加密、PoW) → SIEM/情报日志记录 → 转发到后端 (或拦截/challenge)。 ## 测试 (EN) ``` go test ./internal/... # Unit tests go test -race ./internal/... # With race detector go test -coverprofile=coverage.out ./internal/... # Coverage go tool cover -func=coverage.out go test ./internal/waf/... # Specific package go test -bench=. -benchmem ./internal/... # Benchmarks ``` 有关差分 fuzz 测试、mutation 测试和对抗性测试用例,请参见 `*_test.go` 文件。 ## 安全与漏洞报告 每个运行中的 Tameng 实例都会提供 `/.well-known/security.txt` (有关完整政策请参见 `/security-policy`)。要报告漏洞或意外行为 (包括上述 IP 信誉封锁设计的影响),请联系 **koodoxz@gmail.com**。初步响应目标:24 小时。分类处理:72 小时。 请勿为未修补的漏洞发布公开的 issue —— 请先发送电子邮件。 ## 可选预测功能 (EN) Tameng 包含一个可选的趋势预测子系统 (`internal/ml/prophet.go`, `anomaly.go`),该系统会调用本地 Python 3 进程进行 gray-zone/alert 数量的趋势预测。此功能 **默认禁用**,且对于 WAF 防护、signature 匹配或 LightGBM 威胁评分 **不是必需的** —— 这三者完全在单个 Go 二进制文件内运行,没有任何外部进程。 启用预测需要本地安装 Python 3,并在主机上提供 `.harvest/scripts/` 下的脚本 (基于 Prophet)。如果您不需要趋势预测,您依然可以开箱即用地获得完整的单二进制、无 sidecar 体验。 ## 路线图 (EN) - [x] 完全验证的 CI 构建 (GitHub Actions,跨平台) - [ ] 可按类别配置的 IP 信誉封锁持续时间 (而不是单一固定的持续时间) - [x] 反向代理部署文档 (位于通用后端前方) - [ ] 扩展针对 LFI/RFI 类别的 WAF signature 有其他想法?请发起 [功能请求](.github/ISSUE_TEMPLATE/feature_request.md)。 ## 参与贡献 (EN) 有关完整的指南,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md):包括 issue/PR 流程、Go 代码风格、运行测试。 简而言之: - Fork、分支、使用描述性信息进行提交 - 运行 `go fmt`, `go vet`, `go test -race` - 新代码的覆盖率至少达到 80% - 在 PR 中清晰地描述更改,包括任何潜在的安全影响 ## 关于作者 Tameng 由一位印尼的独立开发者/安全工程师构建和维护,这是他们作为开源项目向公众发布的第一个项目。经过构建、对抗性测试和透明的文档记录 —— 包括失败在内。联系方式:**koodoxz@gmail.com**。 ## 许可证 **AGPL-3.0** — 必须向任何修改版本的所有用户提供源代码,**包括当作为网络服务运行时** (这正是 AGPL 与普通 GPL 的区别所在)。云/托管服务提供商不能拿走这段代码、进行修改,然后在不发布其修改内容的情况下将其作为竞争性服务提供。全文请见:[LICENSE](LICENSE)。

🇮🇩 印度尼西亚制造。

标签:Apex, AppImage, DDoS防护, EVTX分析, Go语言, Web应用防火墙, 安全防护, 日志审计, 机器学习, 程序破解, 自定义请求头, 蜜罐, 证书利用, 请求拦截