pushkar-gr/Aegis

GitHub: pushkar-gr/Aegis

一个基于eBPF/XDP的高性能分布式零信任防火墙,通过身份认证动态开启临时网络路径,实现基于用户身份的细粒度微隔离。

Stars: 38 | Forks: 0

# Aegis **高性能零信任网络控制器** ![License](https://img.shields.io/badge/License-AGPL_3.0-blue.svg) ![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/fcdc0b3460133734.svg) ![Rust](https://img.shields.io/badge/rust-%23000000.svg?style=flat&logo=rust&logoColor=white) ![Go](https://img.shields.io/badge/go-%2300ADD8.svg?style=flat&logo=go&logoColor=white) ![Platform](https://img.shields.io/badge/platform-linux-lightgrey) Aegis 是一个分布式、内核 bypass 防火墙,旨在利用 **eBPF** 技术实施**基于身份的微隔离 (Identity-Based Micro-Segmentation)**。它轻量、高效,可以直接**部署在路由器**或边缘网关中。与依赖静态 IP 规则的传统防火墙不同,Aegis 采用“默认丢弃 (Default Drop)”姿态,仅在用户通过安全的 Control Plane 认证后,才动态开启临时的网络路径。 专为**网络安全**设计,Aegis 弥合了身份提供商 与原始网络执行之间的鸿沟。它将您的网络网关转化为一个身份感知的执行点。 ### 应用场景 * **关键基础设施:** 对数据库、SSH 跳板机 和内部仪表盘等敏感资产进行微隔离。 * **零信任迁移:** 用基于用户身份的动态、临时访问取代静态防火墙规则 (IP 白名单)。 ### 工作原理 1. **部署:** 在中央运行 **Controller**,并在您的网络网关(路由器/服务器)上运行 **Agent**。 2. **配置:** 通过管理 UI 定义受保护的服务 (IP:Port) 和用户角色。 3. **连接:** 用户通过 Web 门户进行认证,并点击以“激活”服务。 4. **执行:** Agent 立即更新内核级的 eBPF maps,仅在用户处于活动状态期间,允许流量*仅*从该用户传输到该服务。 ## 架构 包含两个组件,**Control Plane**(用户认证与策略)和 **Data Plane**(数据包执行)。 1. **认证:** 客户端访问 **Controller**(位于私有区域),通过 Web 界面进行认证。 2. **策略分发:** 有效登录后,Controller 通过 gRPC 将已签名的“会话”推送给 **Agent**。 3. **执行:** **Agent**(网关)更新内核中的 eBPF maps,立即允许来自该特定用户 IP 的流量访问请求的服务。 4. **自动撤销:** 如果用户变为非活动状态,Agent 会自动清除规则,关闭防火墙洞口。 [![](https://mermaid.ink/img/pako:eNqlV3lvm0gU_yojoiiORAhgDhulkXwkrbWO7fXR7rZerQYYbGQMaMBt0jTffd_MALZxWrVb_IeZd_zem3fN8Cx5iU8kRzo_fw7jMHfQ80W-Jlty4aALH9PNhYwE4T2mIXYjkgHnWfAeQBVWOd0RkHKxt1nRZBf7TPdMI-zH1FMabjF9mpPHvJdECeVsorIfY0dhTPZ03HZtz2L0IInzWfiVe6JZ6ePFy8vL-fkyDqLki7fGNEfz7jJG8Jyfo6urK_RxPLpDHQdNFt3hoMdIgp3t3BXF6RpNdm4Uep-W0sckJlySE9AgzgmNSb6U_hEa7FlkhDYaS4n9o2vUi0ISg8Tl5V6kk-ewZ0IBcRHjXb5OKPjro46XJ7QCI7G_jE8d7TloOl7M76avODpNdjmH5Y4ySU4AN-78FUEjiPuRr35IiZeHSVyFhD37twr4D7bPaJZijwC6WCG-PMJjz12-VkGGxyYAAQcRoNy49LYxiFeUZNnlic5f_Qmo3Li38ILeJcnm5tq9ZSoTFqcc3YcR20ajd6randw_4PRTg6sTWCFYluqdCHKOhmHGEnCgeBDaV-LHMldulWfx9Y12VpBY4fZ0l-ViXVpeTSe9Kvd1yz_IbheKazp435nfvVaHNPyMc1Lml8kKSlGJOEIjkn9J6Ob_ZbkHnUOTaBLhmBkploivT7ZfcCNebxCDt8kB6SgMM0I_s-yZqmpql4z8gbhoMUCNltpST1Pa7xbpnP05DGFz_S6DeyWDp1thpkKeOFCf0CSHjUNjFeTSqwZRVgqazd7JiHnSSdPLH3TdfNq5v4e5cD8cfxBJqdiagoqaRg2oNTSnOAhCr2h1XjsAsJRA7oCNGsNkFcbXhVdgG6RueeMIxXI-oCsFlB8wzJow2WWlPsgrR_KVP7pSdCoURuKBW2G8Qg1R1YVTTIubg1YTFNZz3MshNN4uRYNJ4ZBorZqJpoLu4iChHoz2OIfJwtDBTA1LxwrqkwzOhYOiYKEXLdmBoXfdmQzKve-F6jiuAg2de2sHdYaQAI4hgGvhK5Y1dw1wgyYpYhH3BFVsS8R2lAj0IqRMtBvGjQZ7KSd25Qu8_NufjsvwFMK1aumNR_PpeIgmww4b1uOHh8Vo0OvMB-NRrXhMZd-2sxy6WHD2oUA3YObbUpoQmsEIK4Skb9AQtV1aipg-oJxQP4wx7_YG677LE9Q3b2AvkMZZTgneokXqA2xWSkvAvxVoRTFyYB4ACKaQZjO2ViRHQZjN_x4ORm_3I8yLcJb1SYBScXIGYRQ5Z5quubohZ-DZhjhnho7NwCyWV19CP187evooe-yQd86CIKiBUXG6CTDdaurNVgUWBNjWrV8AS4tRWrjm6qbmVmiW5boW_gW0TcbOjAKsaRu2EVRgpmERuwamAVhB8HEGtxSKnxxkIrM04XlezcTuBybsVltte79twku2KZw0kH9hRfUNG2v7qBiuGVinVr4bFd8tgAxTt7FaAbnNtu-7vwLEelpAubbmaV4FRQKzaapHmge6fCbL1XwV1XjILy5MorIOGeVJW5TJIevgclTk_RSxulMUaTuU2PemzJtNLkaZzGa1zMZPlYdDtX5XLkaZ7x7RxVziMTroy2EYb6Dnn6JqWMPbhhEI8kmAd1GOyiCKy_RJudfVVPST_SHYzAt-Jr6lhMR1MA3VUlgHY-oic2hK_Lq69TPq_Ch4Rdn-HeX2PmyuYbu1rmt-r-sYJL8eTXY0jYgkSysa-pLDv4qkLaFbzJbSM7O3lPi31FJy4JV9Qi2lZfwCOimOPybJtlSDul2tJSfAUQarHR_W_RDD9W4vAjccQnvwvZVLjtXmEJLzLD1KzpWhqUpTVe2Wppuy9ASUtmLp8FNt0zYMS2-1X2TpKzeoKXpbb9mm2mrDNa6pGy1ZIn4IXzAP4suQfyC-_AeaJVfe?type=png)](https://mermaid.live/edit#pako:eNqlV3lvm0gU_yojoiiORAhgDhulkXwkrbWO7fXR7rZerQYYbGQMaMBt0jTffd_MALZxWrVb_IeZd_zem3fN8Cx5iU8kRzo_fw7jMHfQ80W-Jlty4aALH9PNhYwE4T2mIXYjkgHnWfAeQBVWOd0RkHKxt1nRZBf7TPdMI-zH1FMabjF9mpPHvJdECeVsorIfY0dhTPZ03HZtz2L0IInzWfiVe6JZ6ePFy8vL-fkyDqLki7fGNEfz7jJG8Jyfo6urK_RxPLpDHQdNFt3hoMdIgp3t3BXF6RpNdm4Uep-W0sckJlySE9AgzgmNSb6U_hEa7FlkhDYaS4n9o2vUi0ISg8Tl5V6kk-ewZ0IBcRHjXb5OKPjro46XJ7QCI7G_jE8d7TloOl7M76avODpNdjmH5Y4ySU4AN-78FUEjiPuRr35IiZeHSVyFhD37twr4D7bPaJZijwC6WCG-PMJjz12-VkGGxyYAAQcRoNy49LYxiFeUZNnlic5f_Qmo3Li38ILeJcnm5tq9ZSoTFqcc3YcR20ajd6randw_4PRTg6sTWCFYluqdCHKOhmHGEnCgeBDaV-LHMldulWfx9Y12VpBY4fZ0l-ViXVpeTSe9Kvd1yz_IbheKazp435nfvVaHNPyMc1Lml8kKSlGJOEIjkn9J6Ob_ZbkHnUOTaBLhmBkploivT7ZfcCNebxCDt8kB6SgMM0I_s-yZqmpql4z8gbhoMUCNltpST1Pa7xbpnP05DGFz_S6DeyWDp1thpkKeOFCf0CSHjUNjFeTSqwZRVgqazd7JiHnSSdPLH3TdfNq5v4e5cD8cfxBJqdiagoqaRg2oNTSnOAhCr2h1XjsAsJRA7oCNGsNkFcbXhVdgG6RueeMIxXI-oCsFlB8wzJow2WWlPsgrR_KVP7pSdCoURuKBW2G8Qg1R1YVTTIubg1YTFNZz3MshNN4uRYNJ4ZBorZqJpoLu4iChHoz2OIfJwtDBTA1LxwrqkwzOhYOiYKEXLdmBoXfdmQzKve-F6jiuAg2de2sHdYaQAI4hgGvhK5Y1dw1wgyYpYhH3BFVsS8R2lAj0IqRMtBvGjQZ7KSd25Qu8_NufjsvwFMK1aumNR_PpeIgmww4b1uOHh8Vo0OvMB-NRrXhMZd-2sxy6WHD2oUA3YObbUpoQmsEIK4Skb9AQtV1aipg-oJxQP4wx7_YG677LE9Q3b2AvkMZZTgneokXqA2xWSkvAvxVoRTFyYB4ACKaQZjO2ViRHQZjN_x4ORm_3I8yLcJb1SYBScXIGYRQ5Z5quubohZ-DZhjhnho7NwCyWV19CP187evooe-yQd86CIKiBUXG6CTDdaurNVgUWBNjWrV8AS4tRWrjm6qbmVmiW5boW_gW0TcbOjAKsaRu2EVRgpmERuwamAVhB8HEGtxSKnxxkIrM04XlezcTuBybsVltte79twku2KZw0kH9hRfUNG2v7qBiuGVinVr4bFd8tgAxTt7FaAbnNtu-7vwLEelpAubbmaV4FRQKzaapHmge6fCbL1XwV1XjILy5MorIOGeVJW5TJIevgclTk_RSxulMUaTuU2PemzJtNLkaZzGa1zMZPlYdDtX5XLkaZ7x7RxVziMTroy2EYb6Dnn6JqWMPbhhEI8kmAd1GOyiCKy_RJudfVVPST_SHYzAt-Jr6lhMR1MA3VUlgHY-oic2hK_Lq69TPq_Ch4Rdn-HeX2PmyuYbu1rmt-r-sYJL8eTXY0jYgkSysa-pLDv4qkLaFbzJbSM7O3lPi31FJy4JV9Qi2lZfwCOimOPybJtlSDul2tJSfAUQarHR_W_RDD9W4vAjccQnvwvZVLjtXmEJLzLD1KzpWhqUpTVe2Wppuy9ASUtmLp8FNt0zYMS2-1X2TpKzeoKXpbb9mm2mrDNa6pGy1ZIn4IXzAP4suQfyC-_AeaJVfe) ## 核心特性 * **内核旁路速度:** 使用 **eBPF/XDP** (C) 在网络驱动层过滤数据包,发生在 OS 处理内存分配之前。 * **分布式设计:** 将 **Control Plane** (Go/gRPC) 与 **边缘 Data Plane** (Rust/libbpf-rs) 解耦,以实现可扩展性。 * **细粒度访问控制:** 执行严格的 `用户 IP -> 服务 IP:Port` 路径。不授予广泛的网络访问权限。 * **自动化生命周期:** 边缘 Agent 在非活动 60 秒后自动撤销规则,防止过期的权限残留。 ## 技术栈 * **Control Plane:** Go (Golang 1.25), gRPC, SQLite. * **Edge Agent:** Rust, libbpf-rs, Tokio, Tonic. * **内核 Hook:** C (eBPF XDP). ## 文档与设置 Aegis 分为两个组件。请参阅它们各自的目录以获取详细的构建和配置说明。 | 组件 | 描述 | 文档 | | :--- | :--- | :--- | | **Controller** | 处理认证 (SSO)、策略管理以及向 agents 分发规则的中央权威机构。 | [Controller 文档](./controller/README.md) | | **Agent** | 运行在路由器/服务器上的边缘节点守护进程。它将 eBPF 程序附加到网络接口并执行规则。 | [Agent 文档](./agent/README.md) | ## 快速开始 对于包含 Controller、Agent 和模拟客户端/服务区域的本地设置: ``` docker-compose -f deploy/docker-compose.yml up --build -d ``` ### 性能与基准测试 Aegis 针对极低延迟环境和最小足迹进行了优化。在 [基准测试文档](./BENCHMARKING.md) 中阅读详细的基准测试结果。 **复现基准测试:** 要运行所有综合基准测试(需要 root 权限以进行 XDP hook): ``` cd agent sudo -E cargo test -- --ignored --nocapture ``` 或 ``` sudo ./run_benchmarks.sh ``` **可用的基准测试:** 1. **攻击场景** - 测试当所有流量均为恶意(被丢弃)时的数据包处理 sudo -E cargo test benchmark_attack_scenario_dropped_packets -- --ignored --nocapture 2. **合法流量** - 测试当所有流量均已授权(被接受)时的数据包处理 sudo -E cargo test benchmark_legitimate_traffic_accepted_packets -- --ignored --nocapture 3. **混合流量** - 测试 50% 合法流量和 50% 攻击流量的现实场景 sudo -E cargo test benchmark_mixed_traffic -- --ignored --nocapture 4. **Map 操作** - 对 eBPF map 插入/查找/删除性能进行基准测试 sudo -E cargo test benchmark_map_operations -- --ignored --nocapture 5. **可扩展性** - 测试不同 map 大小(100 到 5000 条条目)对性能的影响 sudo -E cargo test benchmark_scalability_varying_map_sizes -- --ignored --nocapture **预期结果:** ``` BENCHMARK: Attack Scenario (Dropped Packets) Pre-filled session map with 5000 entries Generating 100 unique random packets... Map contains 5000 authorized sessions Running benchmark: 100 unique packets x 10000 repeats each ATTACK SCENARIO RESULTS Average Latency: 39.37 ns/packet Throughput: 25400051 packets/sec Map Size: 5000 sessions Packets Tested: 1000000 (all accepted) Status: PASS (< 2µs) ``` 构建优化后的二进制文件并检查大小: ``` cargo build --release ``` **关键特性:** - 随机 IP 生成以模拟真实流量 - 预填充 maps 以模拟真实场景 - 延迟测量(每包纳秒) - 吞吐量测量(每秒包数) ## 未来目标与改进 ### 高级网络与发现 * **动态服务发现:** 从静态 IP 定义切换为基于 DNS 的主机名解析(`db-prod.local`),允许与 Kubernetes 和 Docker Swarm 等动态环境集成。 * **IPv6 支持:** eBPF/XDP 数据平面处理 IPv6 头部和路由。 ### 增强安全态势 * **出站流量防护:** 实施 Traffic Control (TC) BPF 程序来过滤*出站*连接。这可以通过确保受保护的服务无法发起到 Command and Control (C2) 服务器的未授权连接,从而防止“反向 Shell”攻击。 * **七层深度包检测 (WAF):** 超越 L3/L4 头部,检查数据包载荷中的应用层威胁(例如 SQL 注入、Log4j 载荷),将防火墙与入侵防御 (IPS) 相结合。 ### 身份与管理 (IAM) * **OIDC 集成:** 用 OpenID Connect (OIDC)(例如 Google Workspace、Okta、Azure AD)取代本地数据库认证,以启用多因素认证 (MFA) 和集中式用户管理。 * **上下文感知访问:** 增加身份之外的条件策略,例如设备健康状况(OS 版本、补丁级别)或地理位置。 ### 企业级运营 * **集群管理:** 解耦 1:1 的 Controller-Agent 关系,以支持由单个高可用性 Controller 集群管理的 Edge Router 网格。 * **可观测性仪表盘:** 添加 Prometheus/Grafana 导出端点,以可视化全网的实时带宽使用情况、丢包计数和活跃会话趋势。
标签:CISA项目, Docker镜像, EVTX分析, EVTX分析, EVTX分析, Go, JSONLines, Prompt框架, Python工具, Ruby工具, Rust, SDP, Streamlit, XDP, 内核旁路, 分布式系统, 动态防御, 可视化界面, 响应大小分析, 微隔离, 日志审计, 网关, 网络分段, 网络安全, 网络流量审计, 网络流量过滤, 访问控制, 请求拦截, 路由器, 身份感知, 软件定义边界, 防火墙, 隐私保护, 零信任, 默认拒绝