littlewolf9527/xsight

GitHub: littlewolf9527/xsight

一个基于 XDP/eBPF 与流数据的分布式 DDoS 检测与响应平台,实现线速分析与自动缓解。

Stars: 5 | Forks: 0

xSight

xSight

基于 XDP/eBPF 的分布式 DDoS 检测与响应平台——线速流量分析并具备自动缓解能力。

[![Go](https://img.shields.io/badge/Go-1.24%2B-00ADD8?logo=go)](https://go.dev) [![Vue](https://img.shields.io/badge/Vue-3-4FC08D?logo=vuedotjs)](https://vuejs.org) [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Built with Claude Code](https://img.shields.io/badge/Built%20with-Claude%20Code-orange?logo=anthropic)](https://claude.com/product/claude-code) [中文文档](README.zh.md)
## 什么是 xSight? xSight 是一个分布式 DDoS 检测与响应平台,结合了 XDP/eBPF 线速包计数与基于流的分析(sFlow、NetFlow、IPFIX)。它监控镜像/ERSPAN 端口上的流量或从路由器与交换机摄取流数据,使用硬阈值与动态基线检测体积攻击,并触发自动响应——从 BPF 层面防火墙规则到 BGP 黑洞宣告。 系统包含两个组件: - **Node** — 部署在每个观测点,通过 XDP 或接收流数据,按 IP/协议统计计数,并通过 gRPC 流式传输到控制器 - **Controller** — 中央管理平面,运行检测引擎,将时间序列数据存储于 TimescaleDB,触发响应动作,并提供 Web UI | 经典主题 | 琥珀主题 | |:---:|:---:| | ![Classic](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/8bf8ea7d03022424.png) | ![Amber](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/5bac91e251022425.png) | ``` ┌──────────────────────────────────────────────────────────────────────────┐ │ Controller (Detection Plane) │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐ │ │ │ Web UI │ │ HTTP API │ │Detection │ │ Response │ │TimescaleDB│ │ │ │ (Vue 3 + │ │ (Gin) │ │ Engine │ │ Actions │ │ (PG) │ │ │ │ EPlus) │ │ │ │ │ │ │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └───────────┘ │ └────────────────────────────────┬─────────────────────────────────────────┘ │ gRPC (stats streaming + config publish) ┌───────────────────┼───────────────────┐ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Node 1 │ │ Node 2 │ │ Node N │ │ (XDP mode) │ │ (Flow mode) │ │ (XDP mode) │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │ BPF/XDP │ │ │ │ sFlow │ │ │ │ BPF/XDP │ │ │ │ counter │ │ │ │ NetFlow │ │ │ │ counter │ │ │ └─────────┘ │ │ └─────────┘ │ │ └─────────┘ │ └─────────────┘ └─────────────┘ └─────────────┘ Mirror/ERSPAN Router/Switch Mirror/ERSPAN ``` ## 关键特性 ### 双重捕获模式 | 模式 | 工作原理 | 适用场景 | |------|-------------|----------| | **XDP** | 在镜像/ERSPAN 端口上的 BPF 程序以线速计数数据包 | 高精度、每包可见性 | | **流** | 支持 sFlow、NetFlow v5/v9、IPFIX 接收与多源集成 | 路由器/交换机集成,无需内核依赖 | ### 检测引擎 - **硬阈值检测** — 为 TCP、TCP SYN、UDP、ICMP 和 IP(基于 PPS 与 BPS)设置每解码器限制 - **动态基线检测** — 使用 168 槽每周剖面(每小时一个槽);基于学习基线的百分比偏差触发告警 - **双向检测** — 独立监控入向与出向流量 - **全局地毯式轰炸检测** — 0.0.0.0/0 聚合阈值,可捕获分散至多个 IP 的分布式攻击 - **每解码器粒度** — 为每个协议解码器设置独立阈值与基线 ### 响应系统 | 动作 | 描述 | |--------|-------------| | **xDrop** | 向 xDrop 节点推送 BPF 防火墙规则,实现线速阻断 | | **BGP RTBH** | 通过 BGP 宣告 /32 黑洞路由,实现上游空路由 | | **Webhook** | HTTP 回调至外部系统(SIEM、Slack、PagerDuty 等) | | **Shell** | 执行本地脚本以实现自定义自动化 | - **自动 `tcp_flags` 注入** — SYN 泛洪事件自动在 xDrop 规则中添加 `tcp_flags=SYN`,实现精准阻断且避免 collateral damage - **动态过期** — 响应规则自动过期,并在每次检测周期重新评估 ### 流量分析 - **流指纹** — 攻击期间进行 5 元组采样,识别 top talkers 与协议分布 - **传感器日志** — 包含完整解码器分类的每事件结构化日志 - **每 IP 跟踪** — 可配置聚合窗口下的实时每目标 PPS/BPS ### Web UI - **双主题** — 经典(Stripe 风格简洁)与琥珀(DSEG14 LCD 复古美学) - **国际化** — 完整支持英文与中文(ZH/EN 切换) - **实时仪表板** — 流量概览、逐 IP 深入分析、告警时间线与响应历史 - **配置管理** — 在浏览器中管理检测配置、响应动作与节点配置 ### 数据管道 - **TimescaleDB** — 用于高效时间范围查询的连续聚合、自动压缩与可配置保留策略 - **配置发布管道** — 控制器通过 gRPC `ControlStream` 向节点推送检测/响应配置,确保所有节点无需轮询即可保持同步 ## 仓库结构 ``` xsight/ ├── controller/ # Management plane (Go + Vue 3) │ ├── internal/ # API, detection engine, tracker, actions, store │ └── web/ # Vue 3 + Element Plus frontend ├── node/ # Data plane (Go + BPF/XDP) │ ├── internal/ # BPF loader, reporter, sampler, flow decoder │ └── bpf/ # XDP kernel program (C) ├── shared/ # Shared decoder package ├── proto/ # gRPC service definition ├── scripts/ # Build & service management ├── deploy/ # systemd unit files └── .github/assets/ # Logo, screenshots, sponsor ``` ## 要求 | 组件 | 要求 | |-----------|-------------| | 控制器 | Go 1.25+、Node.js 18+(前端构建)、PostgreSQL 15+ 搭配 TimescaleDB | | 节点(XDP 模式) | Linux 内核 5.4+、clang/llvm 11+、Go 1.25+、root / CAP_NET_ADMIN | | 节点(流模式) | Go 1.25+,无需特殊内核或 root 权限 | **硬件(控制器 — 包含 PostgreSQL + TimescaleDB):** | | CPU | 内存 | 磁盘 | 用途 | |--|-----|-----|------|----------| | **最低** | 4 核 | 8 GB | 40 GB SSD | 小型网络,前缀较少 | | **推荐** | 8 核 | 16 GB | 80 GB SSD | 生产环境,高流量场景 | **硬件(节点):** | | CPU | 内存 | 磁盘 | 说明 | |--|-----|-----|------|-------| | XDP 模式 | 2+ 核 | 2 GB+ | 10 GB | 轻量级——大部分工作在 BPF 内核空间 | | 流模式 | 2+ 核 | 2 GB+ | 10 GB | 随流导出器数量线性扩展 | 如需逐步环境搭建指南,请参考 **[入门](GETTING_STARTED.md)**。 ## 快速开始 ### 1. 构建 ``` # 构建控制器 (前端 + Go 二进制文件) ./scripts/build-controller.sh # 构建节点 (BPF 程序 + Go 二进制文件) — 在 Linux 主机上运行 ./scripts/build-node.sh ``` ### 2. 配置 ``` # 控制器 cp controller/config.example.yaml controller/config.yaml # 编辑:设置数据库 DSN、gRPC 监听地址、检测配置文件 # 节点 cp node/config.example.yaml node/config.yaml # 编辑:设置捕获模式 (xdp/flow)、接口、控制器 gRPC 地址 ``` ### 3. 启动 ``` # 控制器 (无需 root 权限) ./scripts/controller.sh start # 节点 — XDP 模式 (需要 root 权限) sudo ./scripts/node.sh start # 节点 — Flow 模式 (无需 root 权限) ./scripts/node.sh start # 检查状态 ./scripts/controller.sh status ./scripts/node.sh status ``` Web UI 可在 `http://:8080` 访问。默认登录:**admin / admin** — 首次登录后请立即修改密码。 ## 许可证 MIT — 参见 [LICENSE](LICENSE)。 BPF/C 内核程序(`node/bpf/`)需遵循 GPL-2.0 许可,符合 Linux 内核 BPF 子系统要求。 ## 赞助方 本项目由 [Hytron](https://www.hytron.io/) 赞助,提供开发工具支持。 Hytron 完全使用 Claude Code 构建——包括 XDP/BPF 内核程序、gRPC 流式传输、检测引擎与 Vue 前端。
标签:BGP黑洞, BPF防火墙, DDoS响应, Docker镜像, ERSPAN, EVTX分析, Go, gRPC, IPFIX, NetFlow, pipx 安装, pip 包, Python工具, Ruby工具, sFlow, TimescaleDB, Vue, Wire-speed, XDP, 中心管理平台, 中文文档, 分布式DDoS检测, 动态基线, 安全研究社区, 实时检测, 按IP统计, 按协议统计, 文件系统扫描, 日志审计, 流量监控, 硬阈值, 自动化缓解, 观测点, 镜像端口