k4ran909/Aegisshield

GitHub: k4ran909/Aegisshield

基于 Rust/eBPF 和 Go 构建的多层 DDoS 防护系统,实现线速 L3/L4 过滤、智能异常检测和 Minecraft 专用 Bot 缓解。

Stars: 0 | Forks: 1

# 🛡️ AegisShield — 基于 XDP 的 DDoS 防护系统 ## ⚡ 架构 ``` Internet Traffic │ â–¼ ┌──────────────────┐ │ NIC (10/40 GbE) │ └──────┬───────────┘ │ â–¼ ┌──────────────────────────────────────────┐ │ XDP Data Plane (Rust/eBPF) │ │ │ │ ┌──────────┐ ┌──────────┐ ┌───────`─┐ │ │ │ Blocklist│→ │ Fragment │→ │Conntrack│ │ │ │ Filter │ │ Filter │ │ Lookup │ │ │ └──────────┘ └──────────┘ └──────-──┘ │ │ │ │ │ │ │ â–¼ â–¼ â–¼ │ │ ┌──────────┐ ┌──────────┐ ┌────────┐ │ │ │ ACL │→ │Protocol │→ │ Stats │ │ │ │ Engine │ │Filters │ │Counter │ │ │ └──────────┘ │SYN/UDP/ │ └────────┘ │ │ │DNS/ICMP/ │ │ │ │GRE │ │ │ └──────────┘ │ │ ↓ PASS ↓ DROP │ └────────┬─────────────┬─────────────────-─┘ │ │ â–¼ ✗ (wire speed) ┌──────────────────┐ │ HAProxy L7 │ │ TLS + JA4+ + │ │ HTTP/2 Shield │ └──────┬───────────┘ │ â–¼ ┌──────────────────┐ │ Origin Server │ │ (Minecraft/Web) │ └──────────────────┘ ``` ## 🚀 功能特性 ### L3/L4 — XDP 数据平面 (线速) - **IP 黑名单** — 对已知恶意 IP 进行即时 DROP (65K 条目) - **SYN 代理** — 针对 SYN 洪水的无状态 SYN cookie 验证 - **UDP 速率限制器** — 基于 IP,针对放大端口设置特定阈值 - **DNS 放大过滤器** — 深度载荷检测 + TxID 跟踪 - **ICMP 洪水过滤器** — 阻止重定向,速率限制回显请求 - **GRE 洪水过滤器** — 头部验证 + 隧道端点白名单 - **分片攻击过滤器** — Teardrop、微小分片及绕过检测 - **连接跟踪** — LRU 5-tuple 跟踪,对已知流量绕过过滤器 - **ACL 防火墙** — 按优先级排序的规则,支持协议/端口匹配 ### L7 — HAProxy 反向代理 - **TLS 1.3 终止**,采用现代加密套件 - **JA4+ 指纹识别** — 通过 TLS Client Hello 分析进行 Bot 检测 - **HTTP/2 Rapid Reset 防护** — 流创建/取消比率跟踪 - **单 IP 速率限制** — Stick-table + 基于 Lua 的路径速率限制 ### 控制平面 (Go) - **EWMA 异常检测器** — 学习流量基线,在 3σ 偏差时告警 - **分级自动响应器** — LOW→通知,MEDIUM→收紧策略,HIGH→紧急状态 - **REST API** — 状态 + 管理接口,可选 Bearer 认证 - **Prometheus 指标** — 默认本地的指标端点 - **告警通知** — Discord webhook + Telegram Bot API - **BGP 管理器 (实验性)** — Anycast/Flowspec/RTBH 脚手架 - **隧道管理器 (实验性)** — GRE/IPIP/WireGuard 交付脚手架 - **Minecraft Bot 检测器** — 5 因子行为评分引擎 ### 🎮 Minecraft 专用 - 协议感知握手验证 - 单 IP 连接 + Ping 速率限制 - Bot 检测:名称轮换、时间分析、协议版本聚类 - 独立的保护配置文件及调优后的阈值 ## 📁 项目结构 ``` aegisshield/ ├── data-plane/ # Rust eBPF/XDP │ ├── aegis-ebpf/src/ # Kernel-space XDP programs │ │ ├── main.rs # XDP entry point (6-stage pipeline) │ │ ├── acl.rs # ACL firewall engine │ │ ├── syn_proxy.rs # SYN cookie SYNPROXY │ │ ├── udp_filter.rs # UDP rate limiter │ │ ├── dns_filter.rs # DNS amplification filter │ │ ├── icmp_filter.rs # ICMP flood filter │ │ ├── gre_filter.rs # GRE flood filter │ │ ├── fragment_filter.rs # IP fragment attack filter │ │ └── conntrack.rs # Connection tracking │ ├── aegis-userspace/src/ # Userspace XDP loader │ └── aegis-common/src/ # Shared types ├── control-plane/ # Go control plane │ ├── cmd/aegisd/ # Daemon binary │ ├── cmd/aegis/ # CLI tool │ └── internal/ │ ├── api/ # REST API server │ ├── alerts/ # Discord/Telegram notifier │ ├── bgp/ # BGP session manager │ ├── bpf/ # BPF map manager │ ├── config/ # YAML config parser │ ├── engine/ # Mitigation engine + detector + responder │ ├── metrics/ # Prometheus exporter │ ├── minecraft/ # Protocol parser + bot detector │ └── tunnel/ # GRE/IPIP/WG tunnel manager ├── l7-proxy/ # HAProxy L7 protection │ ├── haproxy.cfg │ └── lua/ # JA4+, HTTP/2 shield, rate limiter ├── configs/ # Configuration files │ ├── aegis.yaml # Master config │ ├── minecraft.yaml # Minecraft profile │ └── grafana-dashboard.json # Grafana dashboard ├── deploy/ # Deployment scripts │ ├── systemd/ # Service units │ └── scripts/install.sh └── Makefile # Build system ``` ## 🔧 快速开始 ### 前置条件 - Linux 内核 ≥ 5.15 (XDP 支持) - Rust nightly + `bpf-linker` - Go ≥ 1.21 - HAProxy ≥ 3.0 (可选,用于 L7) ### 构建与安装 ``` # 构建所有内容 make all # 安装(复制 binaries + configs + systemd units) sudo make install # 或使用安装脚本 sudo bash deploy/scripts/install.sh ``` ### 配置 ``` # 编辑 master config sudo nano /etc/aegis/aegis.yaml # 对于 Minecraft 服务器,使用专门的 profile: sudo cp configs/minecraft.yaml /etc/aegis/aegis.yaml ``` ### 运行 ``` # 启动 XDP data plane sudo systemctl start aegis-xdp # 启动 control plane daemon sudo systemctl start aegisd # 检查状态 aegis status # 封禁 IP aegis block 10.0.0.1 # 查看 dashboard # 将 configs/grafana-dashboard.json 导入 Grafana ``` ## 📊 监控 | 端点 | 描述 | |----------|-------------| | `http://localhost:9090/api/v1/status` | 当前防护状态 | | `http://127.0.0.1:9100/metrics` | Prometheus 指标 | | `http://127.0.0.1:9100/health` | 健康检查 | 将 `configs/grafana-dashboard.json` 导入 Grafana 即可获得完整的可视化仪表板,包含 12 个面板,涵盖数据包吞吐量、各过滤器丢包情况、攻击历史以及 Minecraft Bot 评分。 ## ⚙️ 配置 完整配置参考及行内注释请参见 [`configs/aegis.yaml`](configs/aegis.yaml)。 关键部分: - **thresholds** — 速率限制 PPS 阈值 - **blocklist** — 静态 IP 黑名单 - **acl_rules** — 边缘网络防火墙规则 - **minecraft** — Minecraft 协议感知设置 - **alerts** — Discord/Telegram 通知 Webhook - **bgp** — BGP Anycast (可选,用于多节点) - **tunnel** — 清洗流量交付 (可选) ## 📜 许可证 MIT 许可证 — 详情请见 [LICENSE](LICENSE)。
标签:Anti-DDoS, DDoS 防护, Docker镜像, EVTX分析, EVTX分析, Go, L3/L4 防护, Minecraft 服务器, rizin, Ruby工具, Rust, XDP, 内核开发, 可视化界面, 安全渗透, 异常检测, 数据包过滤, 日志审计, 机器人缓解, 流量清洗, 游戏防护, 网络协议栈, 网络安全, 网络流量审计, 自定义请求头, 连接跟踪, 配置错误, 隐私保护, 零拷贝