Agent 使用 Linux eBPF 技术在运行时监控系统和应用程序,分析收集的数据以检测可疑行为。它具备性能分析、容器集群网络可视化、容器安全警报、一键部署和持久化存储监控等功能,支持多种 eBPF 追踪点,且易于扩展。核心导出器和命令行工具的二进制程序最小仅需约 4MB,能够在支持的 Linux 内核上运行。
[1] Are we there yet? An Industrial Viewpoint on Provenance-based Endpoint Detection and Response Tools[C]. The 30th ACM Conference on Computer and Communications Security (CCS) (ACM CCS 2023, CCF-A 信息安全四大顶会)
[2] DISTDET: A Cost-Effective Distributed Cyber Threat Detection System[C]. Proceedings of The 32th USENIX Security Symposium (USENIX Security 2023, CCF-A 信息安全四大顶会)
[3] NODLINK: An Online System for Fine-Grained APT Attack Detection and Investigation Network and Distributed System Security (NDSS) Symposium 2024(NDSS 2024, CCF-A 信息安全四大顶会)
基于eBPF的容器异常检测Agent
简介
Agent是一个基于eBPF技术的容器异常检测框架,旨在通过收集容器的行为特征和指标特征,利用人工智能算法自动识别具有异常行为的容器。
Agent 使用 Linux eBPF 技术在运行时监控系统和应用程序,分析收集的数据以检测可疑行为。它具备性能分析、容器集群网络可视化、容器安全警报、一键部署和持久化存储监控等功能,支持多种 eBPF 追踪点,且易于扩展。核心导出器和命令行工具的二进制程序最小仅需约 4MB,能够在支持的 Linux 内核上运行。
在企业生产环境中应用Agent项目,可以提升系统安全性和可靠性,优化性能,简化运维管理,并增强合规性,通过实时监控、自动化异常检测和详细审计日志,帮助企业及时发现和处理安全威胁,优化资源配置,降低运维成本,确保符合行业标准和法规。
技术说明
团队长期聚焦在终端异常检测方向,具备一定技术积累。本项目使用到的异常检测方法是基于终端自适应画像的异常检测技术在容器工作负载和eBPF采集技术上的扩展,该技术目前已适配linux和windows平台,相关成果发表在领域顶级会议。首先从工业界实际场景应用的角度识别出现有异常检测工具客户端占用高、告警数量和图规模难以平衡以及服务端内存占用高的三大技术瓶颈,该工作发表在ACM CCS 2023[1](CCF-A类 信息安全顶级会议)。其次,团队在国际上首次提出通过分布式架构设计,解决了终端溯源图检测成本高的难题,系统中有机结合了全局模型、告警聚合、告警语义相似和告警打分和大模型等方法的告警过滤方法,突破了异常检测方法面临的告警疲劳问题,该工作发表在USENIX Security 2023[2](CCF-A类 信息安全顶级会议)和NDSS 2024[3](CCF-A类 信息安全顶级会议).
基于终端自适应画像的异常检测技术不仅获得学术界认可,也在实际场景中得到广泛的应用,产生较大价值。原型系统在1130台实验室终端集群上检测效果不低于现有方法的情况下,检测成本降低56倍,在某企业2w+台终端上检测出900+真实攻击。告警降噪技术在国内某头部家电和某头部物流企业真实告警数据上达到95%以上的降噪率和99%以上的降噪准确率。相关技术以《基于自适应画像的异构终端安全检测技术》入选华为OpenHarmony TSC年度课题,并进行汇报。
[1] Are we there yet? An Industrial Viewpoint on Provenance-based Endpoint Detection and Response Tools[C]. The 30th ACM Conference on Computer and Communications Security (CCS) (ACM CCS 2023, CCF-A 信息安全四大顶会)
[2] DISTDET: A Cost-Effective Distributed Cyber Threat Detection System[C]. Proceedings of The 32th USENIX Security Symposium (USENIX Security 2023, CCF-A 信息安全四大顶会)
[3] NODLINK: An Online System for Fine-Grained APT Attack Detection and Investigation Network and Distributed System Security (NDSS) Symposium 2024(NDSS 2024, CCF-A 信息安全四大顶会)
目的
Agent项目的目标是解决容器环境中常见的性能不稳定、系统崩溃和安全问题。通过高效的数据采集和准确的异常检测算法。同时,Agent还可以帮助开发者和运维人员迅速识别和处理容器异常事件。
使用场景
Agent适用于以下使用场景:
功能列表
技术栈
Agent项目使用了以下技术、框架和库:
安装编译指南
配置要求
在编译之前,确保您的 Kconfig 包含以下选项:
建议的内核版本为 5.10 或更高。如果使用较旧的内核版本,可能需要安装额外的 BTF 信息。
使用预编译的二进制文件
您可以使用我们预编译的二进制文件(请参见最新发布版本)来启动 Agent 服务器:
此命令将启用核心 eBPF 跟踪器,包括进程、TCP 和文件,同时启动安全引擎以检测潜在的安全问题。
您也可以使用 Agent 运行单个 eBPF 跟踪器,例如:
该命令将在默认间隔 3 秒内跟踪系统中所有文件的读取或写入,并输出结果:
在Linux上编译
请按照以下步骤安装和设置Agent项目:
使用 Docker 部署 Prometheus 和 Grafana
快速启动
构建并运行Agent Docker镜像:
部署 Prometheus
拉取 Prometheus 镜像:
配置 Prometheus:
运行 Prometheus 容器:
部署 Grafana
拉取 Grafana 镜像:
运行 Grafana 容器:
非生产环境快速部署quickstart
正常部署逻辑是在若干待观测容器中运行agent,通过配置文件将所有容器运行信息收集至prometheus。在非生产环境快速测试可行性时,使用如下操作:
构建并运行Agent Docker镜像
运行Agent与prometheus 将prometheus和Agent在同一个container中运行,这样在默认配置条件下就不需要改动网络配置,直接对本容器进行信息采集和监控。
在webui中访问localhost:9090查看prometheus dashboard。
Prometheus和Grafana运行结果
在 Promtheus 上展示和容器信息关联的 tcp 连接延时
对于容器中进程的跟踪结果,记录开始和结束时间
grafana dashboard: tcp files syscall 每分钟计数统计图

设计文档
系统框架与ebpf探针设计
容器追踪模块设计
兼容性
Agent支持以下操作系统和环境:
依赖关系
项目运行所需的依赖项包括:
Benchmark
为了评估Agent的性能,我们使用了以下基准测试方法:
使用 top 查看内存和CPU占用情况
通过 top 命令查看系统在运行Agent时的内存和CPU占用情况。
环境设置
在本机上使用 OpenResty 和 APISIX 启动一个包含6个容器和负载均衡的网络服务,使用 Prometheus 和 Grafana 进行监控,并使用 wrk 进行压力测试。
测试环境配置如下:
测试过程
未开启Agent的情况
首先,在未启动Agent的情况下进行测试,获得基线性能数据:
启动Agent后的情况
接下来,启动Agent,并启用默认配置中的 process/container、tcp、files、ipc 等探针,在相同的环境下再次进行测试:
结果分析
可以观测到,启动Agent之后,服务的性能损耗仅约为 3-4%。这表明,Agent在提供全面监控和安全检测的同时,对系统资源的占用非常低,不会显著影响系统的整体性能。