eBPF技术实践白皮书精选:基于eBPF的新一代主机安全解决方案
在当今数字化时代,操作系统安全的重要性愈发突显。Linux操作系统漏洞曝出频率呈现逐年上涨的趋势,新型攻击层出不穷,攻击者利用漏洞实现权限提升、业务关键信息的获取等,严重破坏了操作系统的机密性、可用性和完整性。
传统解决方案面临挑战
传统安全检测和防御方案采用内核模块技术,内核模块技术是通过编写内核模块来扩展操作系统的功能,内核模块可以直接访问和修改操作系统内核,可以实现高级别控制和丰富的功能,但编写不当的内核模块可能导致内核崩溃或引入安全漏洞。
eBPF提供了一种安全、可编程的方式来扩展内核功能,eBPF程序在内核中运行时会受到严格的安全限制,因此不会对系统的稳定性和安全性产生直接影响,可以实现深度的系统观测能力和自定义扩展能力。
基于eBPF的新一代主机安全解决方案
浪潮信息云峦服务器操作系统KeyarchOS提供轻量化的安全防御组件KSecure,采用eBPF技术路线,提供主机安全检测和防御能力,在增强操作系统安全性和合规性的同时,解决传统内核模块方式带来的系统稳定性和性能问题。
主要功能
KSecure安全防御组件的主要功能如下:
- 关键文件/进程防护:支持文件和目录的防护,防止核心业务文件被篡改、删除等行为。支持关键进程防护,保护核心业务进程不被恶意终止、删除、信息注入;
- 主机入侵检测:基于规则引擎可以对黑客的入侵行为进行检测和自动处置。基于“诱饵”行为监测的勒索病毒防御,及时发现和阻止勒索病毒加密行为;
- 安全基线检测:基于等保和CIS标准形成知识库,提供基于模板的基线检测、修复和回退功能。帮助发现身份鉴别、访问控制、安全审计、入侵防范、剩余信息保护等方面潜在的安全风险,支持基线值自定义和灵活扩展;
- 安全管理:支持安全特性动态加载、对安全组件CPU资源占用限制、安全策略热加载、服务启停等管理等功能。
整体架构
基于eBPF的系统内多层次hook技术,将eBPF程序hook到操作系统内核的多个层级(LSM、syscall、network、kprobe内核函数),其中LSM、syscall、network的hook点具有监控和拦截能力,kprobe内核函数hook点只具有监控能力。通过在各个hook点加载安全策略实现对系统和应用程序行为的监控和拦截。
图 KSecure安全组件技术架构图
关键技术
eBPF-LSM hook技术
LSM(Linux Security Modules)是Linux内核中用于支持各种计算机安全模型的框架,用于在Linux内核中实现安全策略和强制访问控制。Linux Kernel 5.7引入了LSM扩展eBPF(简称BPF-LSM),而无需配置LSM模块(SELinux、AppArmor等)或加载自定义内核模块,通过在LSM层面的文件、进程、网络等hook加载eBPF程序,获取应用的异常行为,通过与内置和自定义的安全策略对比后,进行细粒度的(函数级)实时拦截,实现入侵检测和关键文件和进程防御功能。
图 关键业务防护架构图
以文件防护为例,介绍KSecure安全组件如何进行文件防护,如下图所示:
- 加载eBPF程序:KSecure安全组件用户态Agent程序将eBPF程序加载到LSM的Hook点上;
- 配置策略:通过KSecure安全组件的策略配置文件(YAML格式)进行策略设置;
- 下发策略:安全组件的Agent将YAML策略解析至内核态创建的eBPF-map;
- 黑客入侵:攻击者对被保护的文件进行编辑或删除等操作,进入内核LSM hook点,触发对应的eBPF程序;
- 策略匹配:内核中eBPF程序获取主体进程和客体路径等信息,与存储在eBPF-map安全策略和匹配。在获取主体进程时,采用进程链跟踪技术,跟踪进程的调用过程,信任进程调用的进程/脚本等均继承权限;
- 操作拦截:hook点对应的eBPF程序阻止编辑和删除被保护文件的操作;
- 上报信息:eBPF程序通过eBPF-map(Ring buffer类型)上报给Agent;
- 记录日志:Agent封装匹配策略信息并记录到安全日志文
基于eBPF的内核监控技术
将eBPF程序通过kprobe、tracepoint技术挂载至内核,监控系统中的文件操作、进程创建、网络连接等行为。基于MITRE ATT&CK(Adversarial Tactics, Techniques and Common Knowledge,即对抗战术和技术知识库)框架构建入侵检测内置规则,结合自定义的检测规则为入侵检测引擎提供判断依据,实现入侵事件识别和攻击阻断。KSecure安全组件入侵检测功能主要由数据采集、数据缓冲、预处理、规则引擎等模块构成。
- 数据采集:借助eBPF程序采集文件、进程、网络等系统调用入参以及返回值,并上传至数据缓冲区;
- 数据缓冲:设置Ring buffer类型的缓冲区用于已采集数据临时存储,eBPF程序可将采集数据写入缓冲区,预处理模块循环读取缓冲区数据;
- 预处理:将缓冲区数据根据不同的系统调用解析成特定的数据结构,并通过事件类型等条件,丢弃不符合条件的数据,便于规则引擎执行规则匹配;
- 规则引擎:将已加载的规则解析成内存对象,拉取预处理后的数据与内存中的规则对象进行比对,与规则匹配的数据诊断为入侵行为,格式化后输出。
以反弹shell入侵检测为例,介绍KSecure安全组件如何检测入侵行为,如下图所示:
图 反弹shell入侵检测示例流程图
- 规则:读取yaml格式的检测规则至内存,逐条解析规则,将规则关键字解析为数据对象,并将规则内容保存至对象内,便于规则匹配,以下为反弹shell入侵行为匹配条件;
- BPF程序:规则引擎将eBPF程序通过tracepoint和kprobe技术挂载至系统调用函数。具体而言,对于反弹shell的检测,则挂载至connect系统调用;
- 反弹shell:反弹shell是一种网络攻击技术,用于通过远程主机上的Shell(命令行终端)与攻击者建立连接,从而控制受攻击主机;
- 日志:将系统产生的网络连接上传至数据缓冲区。监听Ring buffer中网络连接信息,通过BPF辅助函数循环读取数据,并将数据转交预处理模块;
- 匹配:将解析并经过滤后的网络连接日志对象与规则对象比对,匹配规则的网络连接诊断为反弹shell入侵;
- 告警:将日志信息按照规则配置的格式输出为告警信息。
应用场景
基于eBPF技术安全增强组件具以下几个方面的应用场景:
- 安全加固:提升操作系统的合规性和安全性。支持用户结合实际的安全需求选择实施加固和扩展,以便更好地满足对不同用户不同场景的配置安全基准要求。
- 黑客入侵:降低因系统漏洞利用导致的提权攻击、Rootkit攻击、进程注入等风险。及时发现并阻止勒索病毒加密行为,减少勒索病毒对业务文件的进一步破坏,成为勒索病毒防护最后一道屏障。
- 业务防护:为关键业务服务器提供保护,仅允许合法应用程序对客户的关键业务文件进行操作,限制系统超级管理员权限,防止误操作或账号泄露导致的重要文件/配置的破坏。
基于eBPF技术的安全组件KSecure已在龙蜥社区系统安全SIG中开源,我们热忱欢迎广大热爱技术创新、关注安全研究的同行伙伴们一同加入这场探索之旅,共同挖掘eBPF技术在安全防护领域的无限潜能,携手优化并推广前沿的安全解决方案,以共建更为可靠、安全的操作系统生态环境。
龙蜥社区系统安全SIG网址:https://openanolis.cn/sig/syssecurity
编辑于 2024-07-25 17:03・IP 属地山东