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, 内核开发, 可视化界面, 安全渗透, 异常检测, 数据包过滤, 日志审计, 机器人缓解, 流量清洗, 游戏防护, 网络协议栈, 网络安全, 网络流量审计, 自定义请求头, 连接跟踪, 配置错误, 隐私保护, 零拷贝