profile picture

CWPP中Audit的升级换代

May 09, 2022 - Linux

技术背景是CWPP(Cloud Workload Protection Platforms)云工作负载保护平台,通常基于代理在计算机中永久运行,收集与安全相关的数据和事件,并将其发送到基于云服务分析后通知用户相应的潜在安全威胁。

其中的一个子系统audit,是一个用于收集记录系统、内核、用户进程发生的行为事件的被动防御的安全审计系统。该系统可以可靠地收集有关上任何与安全相关事件的信息,如记录文件访问、网络访问、用户指令、系统调用和系统安全事件。

随着时间的推移,内核的发展,其存在问题日显突出

  1. 性能开销大:开启服务的支付卡安全标准,系统吞吐率下降30%,系统调用开销下降50%,上下文切换下降10%,其他下降%2-10%左右
  2. 不能灵活调节性能:只是开启服务但不执行,系统吞吐率下降20%,系统调用开销下降35%,其他下降%2-10%左右
  3. 对docker容器支持不够,且对docker及其服务的监测达不到安全发现的效果

audit系统子系统

audit

可替代的5种技术比较

发布年份采集框架性能可编程控制稳定性内置于内核
2004Linux Audit差否高是
2009SystemTap良是低否
2006LTTng良否低否
2009Perf/ftrace优否高是
2014BPF优是高是

性能低的原因

Audit独立于kprobe、tracepoint之外的数据源,通过syscall和文件操作等内核源码上插入自定义的钩子函数实现监控,于2004年加入内核,相比于其他技术性能差

BPF技术的优势

BPF的劣势

用BPF替代Audit的方案

  1. 使用BPF实现已有linux audit子系统功能。实现细节见下一节
  2. 根据系统版本选择安装,老系统使用原有audit或perf,V4.x及以上系统使用BPF
  3. 提供自监测系统,监控和配置性能指标,超过指标后,执行对应缓解措施
  4. 提供实时通知机制,遇到配置项,通知其他接入系统协同完成对应缓解措施
  5. 提供docker内监测和多docker间聚合事件能力,尤其是cgroup和网络等事件,增强docker的审计功能

BPF对linux audit子系统实现细节

                   Agent        
策略下发  |  事件聚合 |   通知协同  |  性能监测 
                    BPF        
    Ring Buffer ↑    |     ↓ BPF Map    
         System call | syscall 系统调用    挂载点
     VFS/File system | 文件操作    挂载点
                  硬件驱动        
  1. 针对audit的监控syscall和文件操作,BPF也增加相同接入监控
  2. Agent通过BPF map设置配置策略到BPF驱动,动态管控监控行为
  3. 通过RingBuffer将BPF驱动实时发送事件到监控应用agent
  4. Agent分成4部分策略下发、事件聚合、通知协同、性能监测

主机审计系统流程

                  ↓
                策略下发
在后台服务中,管理员配置设计策略并下发
                  ↓
    主机agent接收策略,写入BPF map
                  ↓
        主机BPF驱动执行策略
                  ↓
BPF驱动收集系统调用syscal和文件系统操作事件
                事件聚合
在后台服务中,聚合分类这些事件
                  ↑
在后台服务中,收集多台主机上报的审计事件
                  ↑
        由agent上报发送给后台服务
                  ↑
            事件内容写入Ring Buffer
                  ↑
由BPF驱动收集系统调用syscal和文件系统操作事件
                  ↑
        主机agent根据下发策略要求
                通知协同
将聚合分类安全事件通知其他安全服务,如威胁狩猎分析
                  ↓
        其他安全服务生成对应的安全策略
                  ↓
        将安全策略通知系统审计服务
                  ↓
    优化更新主机审计系统自身的安全策略
                性能监测
    主机agent采集主机自身性能指标
                  ↓
    根据下发策略扩大或减小监测挂载点
                  ↓
    动态控制审计系统的对系统的负荷

升级替换后的有益效果

  1. 高性能的收集安全信息
  2. 可动态加载的探针,动态分配系统开销
  3. 可兼容新旧系统的技术栈,适应老系统(老系统不支持新的技术)
  4. 可实时发现安全威胁,及时上报或紧急处理
  5. 可以与系统其他安全服务协同