logo
0
1
WeChat Login
docs: 更新文档

rho-aias

基于 eBPF/XDP 的高性能网络防火墙系统,在网络驱动层(L3)拦截和过滤数据包。

功能特性

  • eBPF XDP 包过滤:驱动层高性能拦截
  • 威胁情报:IPSum / Spamhaus 等多源黑名单自动同步
  • 地域封禁:GeoIP 国家级白名单/黑名单过滤
  • 手动规则:支持通过 API 添加 IP/CIDR 封禁规则
  • WAF 联动:监控 Caddy + Coraza WAF 日志,自动封禁恶意 IP
  • SSH 防爆破:类 fail2ban 机制,自动检测并封禁暴力破解
  • 异常流量检测:SYN Flood / UDP Flood / ICMP Flood / ACK Flood 等攻击自动识别与阻断
  • 频率限制联动:监控 Rate Limit 日志,高频请求自动封禁
  • RESTful API:完整的管理接口(JWT 认证 + RBAC 权限控制)
  • 持久化存储:规则自动落盘,支持离线启动

快速开始

系统要求

要求说明
Linux 内核5.10+(需支持 XDP 与 BTF)
Docker24.0+ 及 Docker Compose v2
网络权限host 网络模式 + 特定 Linux Capability
网卡需确认本机网卡名称(如 ens33eth0

⚠️ 本项目依赖 eBPF XDP 技术,仅支持 Linux 系统,不支持 macOS / Windows。

WAF IP 封禁清理机制

WAF 模块通过监控 Caddy + Coraza WAF 日志和 Rate Limit 日志,自动触发 IP 封禁。封禁的完整生命周期如下:

日志触发 → banIP() 添加 XDP 封禁规则 → 封禁记录写入内存(带过期时间) ↓ cleanupExpiredBans() 每隔 5 分钟扫描 ↓ 过期 IP 移除 XDP 规则 + 清除内存记录

⚠️ 重要:清理间隔为固定 5 分钟

cleanupExpiredBans() 使用硬编码的 5 分钟清理间隔。当封禁到期后,XDP 规则不会立即移除,而是等待下一个清理周期才执行移除。

这意味着实际封禁时长 = BanDuration + 最多 5 分钟的清理延迟。

配置建议:

BanDuration实际封禁时长范围建议
30s30s ~ 5m30s❌ 不推荐,XDP 规则滞留过久
60s60s ~ 6m⚠️ 清理延迟占比过大
300s(5 分钟)5m ~ 10m✅ 可接受
600s(10 分钟)10m ~ 15m✅ 推荐
3600s(1 小时,默认)1h ~ 1h5m✅ 推荐

最佳实践: 建议将 ban_duration 设置为 300 秒(5 分钟)或更长,使清理延迟在整体封禁时长中的占比合理。

使用预构建镜像部署

克隆代码后直接在项目目录下执行

# 直接启动(拉取预构建镜像) docker compose up -d # 查看日志 docker compose logs -f

从源码构建部署

# 从源码构建并启动 docker compose -f docker-compose-build-run.yml up -d --build # 查看日志 docker compose -f docker-compose-build-run.yml logs -f

安全说明

  • rho-aias 容器使用最小权限能力(CAP_BPFCAP_PERFMONCAP_NET_ADMINCAP_NET_RAW),不使用 privileged 模式
  • caddy 容器仅保留 NET_BIND_SERVICE 能力,启用 no-new-privileges
  • 两个容器均使用 network_mode: host 以支持 XDP 驱动层拦截