一种基于eBPF的自动化访问控制方法、系统及设备

文档序号:31880554发布日期:2022-10-21 23:03阅读:146来源:国知局
一种基于eBPF的自动化访问控制方法、系统及设备
一种基于ebpf的自动化访问控制方法、系统及设备
技术领域
1.本发明涉及访问控制技术领域,尤其涉及一种基于ebpf的自动化访问控制方法、系统及设备。


背景技术:

2.访问控制技术是实现系统安全防御和系统权限分配的重要技术手段之一。在系统运行过程中,许多应用需要访问各种系统调用来完成自身的功能。为了全方位、细粒度地对各种应用所需的各类系统调用进行限制,提高系统的安全性,多种多样的访问控制模型被提出,如强制访问控制模型(mandatory access control,mac)、基于角色的访问控制模型(role-based access control,rbac)及基于属性的访问控制模型(attribute-based access control,abac)等。
3.在强制访问控制模型中,所有的权限由管理员预定义,并且由操作系统控制,因此用户对每条权限限制的编辑较为方便直观。然而,在权限控制系统中增加新用户时,需要在系统的权限控制列表中随之逐一更新该新用户的对应权限,这带来了极大的工作量。
4.为了减少强制访问控制模型中更新权限控制列表所带来的工作量,基于角色的权限控制模型被提出,并逐渐称为主流的访问控制模型。在该访问控制模型中,不同的角色对拥有多个权限,通过给不同用户分配角色的方式来对不同的用户分配权限。然而,在业务系统不断发展的过程中,为了应对不同的权限分配情况,不同的角色将不断被设计,最终面临角色爆炸的问题,给权限管理者带来极大的挑战。
5.为了进一步增加权限控制模型的灵活性,基于属性的访问控制模型被设计并提出,其根据用户属性、资源属性、环境属性、操作属性制定访问策略并基于访问策略对用户的访问请求进行授权。然而,该模型的访问控制策略需要手工制定,且需要在系统运行期间持续地添加新的访问规则,耗费人工。
6.上述模型都有一个共同的缺点,就是对于访问控制系统权限控制清单的编辑十分困难,具有极高的学习成本,并且难以完成完备的编辑,可能造成系统的漏洞。


技术实现要素:

7.本发明提供了一种基于ebpf的自动化访问控制方法、系统及设备,解决了现有访问控制系统存在权限控制清单配置困难、人力配置成本高及容易造成系统安全漏洞的可能性的缺陷的技术问题。
8.本发明第一方面提供一种基于ebpf的自动化访问控制方法,包括:
9.获取预置的访问控制策略并创建ebpf程序,将所述ebpf程序载入至linux系统内核,将所述访问控制策略存储于ebpf maps内;
10.监控各类系统调用行为,根据所述访问控制策略对监控到的系统调用行为执行对应的控制动作,并记录和保存对应的访问控制日志;其中,所述控制动作包括通过执行或拒绝执行,所述访问控制策略包括允许任何系统调用行为通过执行直至通过执行的系统调用
行为达到预置数量;
11.若存储的与通过执行的系统调用行为对应的访问控制日志数量达到所述预置数量,根据所存储的访问控制日志基于频繁项集挖掘算法进行访问控制策略挖掘,根据得到的访问控制策略挖掘结果更新存储于所述ebpf maps内的访问控制策略。
12.根据本发明第一方面的一种能够实现的方式,所述根据所述访问控制策略对监控到的系统调用行为执行对应的控制动作,包括:
13.对监控到的系统调用行为,利用linux安全模块的钩子函数确定是否满足所述访问控制策略对应的要求,在满足时通过执行。
14.根据本发明第一方面的一种能够实现的方式,所述根据所存储的访问控制日志基于频繁项集挖掘算法进行访问控制策略挖掘,根据得到的访问控制策略挖掘结果更新存储于所述ebpf maps内的访问控制策略,包括:
15.根据当前存储的访问控制日志基于频繁项集挖掘算法确定最优访问控制规则集合,根据所述最优访问控制规则集合更新存储于所述ebpf maps内的访问控制策略;
16.根据新存储的访问控制日志,采用频繁项集挖掘算法进行持续学习,根据得到的学习结果更新所述最优访问控制规则集合,并基于更新的最优访问控制规则集合更新存储于所述ebpf maps内的访问控制策略。
17.根据本发明第一方面的一种能够实现的方式,所述根据当前存储的访问控制日志基于频繁项集挖掘算法确定最优访问控制规则集合,包括:
18.步骤s10,根据所存储的访问控制日志确定对应的系统调用访问记录集合,设置待生成访问控制规则集合为空集,并设置待覆盖访问记录集合为所述系统调用访问记录集合;
19.步骤s20,根据所存储的访问控制日志,基于频繁项集挖掘算法生成关联集合并将候选规则集合置为空集;
20.步骤s30,对于所得的关联集合的每一项,生成对应的访问控制规则并添加至所述候选规则集合,根据候选规则与所述所存储的访问控制日志的相关性,对所述候选规则集合中的各候选规则进行分析评分,选取其中评分值最大的候选规则归入所述待生成访问控制规则集合;
21.步骤s40,从所述待覆盖访问记录集合中,删除所述最优访问控制规则集合的规则所能覆盖的系统调用访问记录,重复步骤s20和步骤s30,直至所述待覆盖访问记录集合中的所有系统调用访问记录被删除;
22.步骤s50,当所述待覆盖访问记录集合中的所有系统调用访问记录被删除后,将当前得到的待生成访问控制规则集合作为对应的最优访问控制规则集合。
23.根据本发明第一方面的一种能够实现的方式,所述根据候选规则与所述所存储的访问控制日志的相关性,对所述候选规则集合中的各候选规则进行分析评分,包括:
24.获取所述系统调用访问记录集合中每条系统调用访问记录对应的键值对,构建对应的键值对集合;
25.确定各所述候选规则的第一相关性数量和第二相关性数量;其中,所述第一相关性数量为对应候选规则在所述系统调用访问记录集合中能够覆盖的系统调用访问记录的数量,所述第二相关性数量为对应候选规则在所述键值对集合中能够覆盖的键值对的数
量;
26.根据所述第一相关性数量计算各所述候选规则的覆盖率,将候选规则包含的键值对总数与对应第二相关性数量的差值作为第三相关性数量,根据所述第三相关性数量计算各所述候选规则的过度特权率;其中,所述覆盖率为对应候选规则的第一相关性数量与所述系统调用访问记录集合的系统调用访问记录总数的比值,所述过度特权率为对应候选规则的第三相关性数量与所述键值对集合的键值对总数的比值;
27.根据所述覆盖率和过度特权率对各所述候选规则进行评分。
28.根据本发明第一方面的一种能够实现的方式,所述根据所述覆盖率和过度特权率对各所述候选规则进行评分,包括:
29.按照下式计算各所述候选规则的评分值:
30.si=ai+ω(1-bi)
31.式中,si为候选规则i的评分值,ai为候选规则i的覆盖率,bi为候选规则i的过度特权率。
32.根据本发明第一方面的一种能够实现的方式,所述对于所得的关联集合的每一项,生成对应的访问控制规则并添加至所述候选规则集合,包括:
33.对于所得的关联集合的每一项,生成对应的基于属性的访问控制规则并添加至所述候选规则集合。
34.本发明第二方面提供一种基于ebpf的自动化访问控制系统,包括:
35.内核程序载入模块,用于获取预置的访问控制策略并创建ebpf程序,将所述ebpf程序载入至linux系统内核,将所述访问控制策略存储于ebpf maps内;
36.访问监控模块,用于监控各类系统调用行为,根据所述访问控制策略对监控到的系统调用行为执行对应的控制动作,并记录和保存对应的访问控制日志;其中,所述控制动作包括通过执行或拒绝执行,所述访问控制策略包括允许任何系统调用行为通过执行直至通过执行的系统调用行为达到预置数量;
37.访问控制策略挖掘与更新模块,用于若存储的与通过执行的系统调用行为对应的访问控制日志数量达到所述预置数量,根据所存储的访问控制日志基于频繁项集挖掘算法进行访问控制策略挖掘,根据得到的访问控制策略挖掘结果更新存储于所述ebpf maps内的访问控制策略。
38.根据本发明第二方面的一种能够实现的方式,所述访问监控模块包括:
39.监控单元,用于对监控到的系统调用行为,利用linux安全模块的钩子函数确定是否满足所述访问控制策略对应的要求,在满足时通过执行。
40.根据本发明第二方面的一种能够实现的方式,所述访问控制策略挖掘与更新模块,包括:
41.初次挖掘与更新单元,用于根据当前存储的访问控制日志基于频繁项集挖掘算法确定最优访问控制规则集合,根据所述最优访问控制规则集合更新存储于所述ebpf maps内的访问控制策略;
42.迭代挖掘与更新单元,用于根据新存储的访问控制日志,采用频繁项集挖掘算法进行持续学习,根据得到的学习结果更新所述最优访问控制规则集合,并基于更新的最优访问控制规则集合更新存储于所述ebpf maps内的访问控制策略。
43.根据本发明第二方面的一种能够实现的方式,所述初次挖掘与更新单元具体用于:
44.步骤s10,根据所存储的访问控制日志确定对应的系统调用访问记录集合,设置待生成访问控制规则集合为空集,并设置待覆盖访问记录集合为所述系统调用访问记录集合;
45.步骤s20,根据所存储的访问控制日志,基于频繁项集挖掘算法生成关联集合并将候选规则集合置为空集;
46.步骤s30,对于所得的关联集合的每一项,生成对应的访问控制规则并添加至所述候选规则集合,根据候选规则与所述所存储的访问控制日志的相关性,对所述候选规则集合中的各候选规则进行分析评分,选取其中评分值最大的候选规则归入所述待生成访问控制规则集合;
47.步骤s40,从所述待覆盖访问记录集合中,删除所述最优访问控制规则集合的规则所能覆盖的系统调用访问记录,重复步骤s20和步骤s30,直至所述待覆盖访问记录集合中的所有系统调用访问记录被删除;
48.步骤s50,当所述待覆盖访问记录集合中的所有系统调用访问记录被删除后,将当前得到的待生成访问控制规则集合作为对应的最优访问控制规则集合。
49.根据本发明第二方面的一种能够实现的方式,所述初次挖掘与更新单元根据候选规则与所述所存储的访问控制日志的相关性,对所述候选规则集合中的各候选规则进行分析评分时,具体用于:
50.获取所述系统调用访问记录集合中每条系统调用访问记录对应的键值对,构建对应的键值对集合;
51.确定各所述候选规则的第一相关性数量和第二相关性数量;其中,所述第一相关性数量为对应候选规则在所述系统调用访问记录集合中能够覆盖的系统调用访问记录的数量,所述第二相关性数量为对应候选规则在所述键值对集合中能够覆盖的键值对的数量;
52.根据所述第一相关性数量计算各所述候选规则的覆盖率,将候选规则包含的键值对总数与对应第二相关性数量的差值作为第三相关性数量,根据所述第三相关性数量计算各所述候选规则的过度特权率;其中,所述覆盖率为对应候选规则的第一相关性数量与所述系统调用访问记录集合的系统调用访问记录总数的比值,所述过度特权率为对应候选规则的第三相关性数量与所述键值对集合的键值对总数的比值;
53.根据所述覆盖率和过度特权率对各所述候选规则进行评分。
54.根据本发明第二方面的一种能够实现的方式,所述初次挖掘与更新单元根据所述覆盖率和过度特权率对各所述候选规则进行评分时,具体用于:
55.按照下式计算各所述候选规则的评分值:
56.si=ai+ω(1-bi)
57.式中,si为候选规则i的评分值,ai为候选规则i的覆盖率,bi为候选规则i的过度特权率。
58.根据本发明第二方面的一种能够实现的方式,所述初次挖掘与更新单元对于所得的关联集合的每一项,生成对应的访问控制规则并添加至所述候选规则集合时,具体用于:
59.对于所得的关联集合的每一项,生成对应的基于属性的访问控制规则并添加至所述候选规则集合。
60.本发明第三方面提供了一种基于ebpf的自动化访问控制设备,包括:
61.存储器,用于存储指令;其中,所述指令用于实现如上任意一项能够实现的方式所述的基于ebpf的自动化访问控制方法;
62.处理器,用于执行所述存储器中的指令。
63.本发明第四方面一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任意一项能够实现的方式所述的基于ebpf的自动化访问控制方法。
64.从以上技术方案可以看出,本发明具有以下优点:
65.本发明将ebpf程序载入内核,并将已有访问控制策略存储于ebpf maps内;对各类系统调用行为进行拦截和记录,初始时该访问控制策略允许任何系统调用行为通过执行直至通过执行的系统调用行为达到预置数量;当对应的访问控制日志数量达到所述预置数量时,根据所存储的访问控制日志基于频繁项集挖掘算法进行访问控制策略挖掘,根据得到的访问控制策略挖掘结果更新存储于所述ebpf maps内的访问控制策略;本发明基于频繁项集挖掘算法,通过对系统调用访问记录的挖掘与学习,完成了系统权限控制清单的自主配置,能够大幅度地减少人力配置的成本,降低造成系统安全漏洞的可能性。
附图说明
66.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
67.图1为本发明一个可选实施例提供的一种基于ebpf的自动化访问控制方法的流程图;
68.图2为本发明一个可选实施例提供的根据当前存储的访问控制日志基于频繁项集挖掘算法确定最优访问控制规则集合的流程图;
69.图3为本发明一个可选实施例提供的示例1的访问控制列表的信息的示意图;
70.图4为本发明一个可选实施例提供的示例2的访问控制信息挖掘与更新的示意图;
71.图5为本发明一个可选实施例提供的一种基于ebpf的自动化访问控制系统的结构连接框图。
72.附图标记:
73.1-内核程序载入模块;2-访问监控模块;3-访问控制策略挖掘与更新模块。
具体实施方式
74.本发明实施例提供了一种基于ebpf的自动化访问控制方法、系统及设备,用于解决现有访问控制系统存在权限控制清单配置困难、人力配置成本高及容易造成系统安全漏洞的可能性的缺陷的技术问题。
75.为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明
实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
76.本发明提供了一种基于ebpf的自动化访问控制方法。
77.为更好地解释本技术,下面对本发明实施例中所应用到的系统程序进行解释。
78.ebpf,是extend bpf的简称,扩展的bpf。其作为linux内核中的虚拟机,极大地扩展了linux的能力,ebpf程序中的linux secure module,即lsm程序,改变了现代系统的安全访问机制,深入操作系统内核内部感知不同进程对于系统调用的访问行为,并可以选择是否放行,让庞大的、难以定制化的安全系统转变为了轻量级的、可定制化的系统调用安全系统。
79.对于ebpf程序,首先要编译成特定的字节码,由用户空间的程序,通过系统调用接口将bpf程序载入到内核。这期间内核会先通过verifier(验证工具)验证bpf代码,确保其不会影响到内核的正常工作,之后通过jit(准时制)对其进行优化,然后将其运行在内核的虚拟机中。
80.ebpf-lsm程序可以挂载到各种系统调用程序的执行跟踪点上,当程序或者操作系统访问到这些系统调用时,就会执行相应的ebpf-lsm程序。ebpf-lsm程序可以决定此次系统调用访问是否放行,若放行,则不做操作,若不放行,则调用linux中的安全模块机制拒绝该访问。
81.ebpf可以通过map存储信息,map能够在不同ebpf调用间共享信息,用户空间程序也可以访问map获取信息。在ebpf-lsm程序中,可以从用户空间向内核空间载入访问控制配置文件(即访问控制策略)到map中,从而决定放行和阻止的系统调用。
82.请参阅图1,图1示出了本发明实施例提供的一种基于ebpf的自动化访问控制方法的流程图。
83.本发明实施例提供的一种,包括:
84.本发明第一方面提供一种基于ebpf的自动化访问控制方法,包括步骤s1-s3。
85.步骤s1,获取预置的访问控制策略并创建ebpf程序,将所述ebpf程序载入至linux系统内核,将所述访问控制策略存储于ebpf maps内。
86.其中,可基于用户空间程序进行ebpf程序的编译。作为一种能够实现的方式,存储于ebpf maps内的该访问控制策略为基于abac的访问控制策略。
87.步骤s2,监控各类系统调用行为,根据所述访问控制策略对监控到的系统调用行为执行对应的控制动作,并记录和保存对应的访问控制日志;其中,所述控制动作包括通过执行或拒绝执行,所述访问控制策略包括允许任何系统调用行为通过执行直至通过执行的系统调用行为达到预置数量。
88.本发明实施例中,初始访问控制策略为允许一切请求,并且当请求通过时打印保存对应的日志,以备后续规则挖掘使用。
89.具体地,可以通过ebpf监控程序拦截各类系统调用,并进行记录,以结构化数据的形式进行记录存储,并根据已经载入内核的访问控制策略选择是否放行。
90.作为一种能够实现的方式,所述根据所述访问控制策略对监控到的系统调用行为
执行对应的控制动作,包括:
91.对监控到的系统调用行为,利用linux安全模块的钩子函数确定是否满足所述访问控制策略对应的要求,在满足时通过执行。
92.具体地,当对应的系统调用将要执行时,启动对应的linux安全模块的钩子函数,查询访问控制策略,若符合对应的访问控制策略要求则通过执行,函数return 0。若不符合对应的访问控制要求,则拒绝执行,函数return-1并且打印保存对应的日志。例如,当第x次监控到系统调用行为时,x《n,n为所述预置数量,则当前系统调用行为符合对应的访问控制策略要求,此时对当前系统调用行为通过执行。
93.本发明实施例中,以内核的角度审计拦截进程的系统调用访问控制请求,使用了基于ebpf技术中的lsm技术模块,以定制化、轻量化的方式在内核空间中实现对系统调用的访问控制,以较低的资源消耗完成对危险的系统调用行为的限制。通过ebpf+lsm钩子函数以已有的访问控制策略进行精细化的系统调用控制,内核原生支持,不需要依赖第三方软件,对用户透明。
94.步骤s3,若存储的与通过执行的系统调用行为对应的访问控制日志数量达到所述预置数量,根据所存储的访问控制日志基于频繁项集挖掘算法进行访问控制策略挖掘,根据得到的访问控制策略挖掘结果更新存储于所述ebpf maps内的访问控制策略。
95.作为一种能够实现的方式,所述根据所存储的访问控制日志基于频繁项集挖掘算法进行访问控制策略挖掘,根据得到的访问控制策略挖掘结果更新存储于所述ebpf maps内的访问控制策略,包括:
96.根据当前存储的访问控制日志基于频繁项集挖掘算法确定最优访问控制规则集合,根据所述最优访问控制规则集合更新存储于所述ebpf maps内的访问控制策略;
97.根据新存储的访问控制日志,采用频繁项集挖掘算法进行持续学习,根据得到的学习结果更新所述最优访问控制规则集合,并基于更新的最优访问控制规则集合更新存储于所述ebpf maps内的访问控制策略。
98.本发明实施例中,所存储的访问控制日志到一定数量后,使用基于频繁项集挖掘思想的规则挖掘方法,从已有的ebpf访问控制日志挖掘出对应访问控制策略,并更新存储于所述ebpf maps内的访问控制策略,随着程序的不断运行,访问控制策略将逐渐完备,从而形成一个精准的访问控制策略。
99.需要说明的是,挖掘出的访问控制策略也可以人为地进行校正。
100.作为一种能够实现的方式,如图2所示,所述根据当前存储的访问控制日志基于频繁项集挖掘算法确定最优访问控制规则集合,包括:
101.步骤s10,根据所存储的访问控制日志确定对应的系统调用访问记录集合,设置待生成访问控制规则集合为空集,并设置待覆盖访问记录集合为所述系统调用访问记录集合;
102.步骤s20,根据所存储的访问控制日志,基于频繁项集挖掘算法生成关联集合并将候选规则集合置为空集;
103.步骤s30,对于所得的关联集合的每一项,生成对应的访问控制规则并添加至所述候选规则集合,根据候选规则与所述所存储的访问控制日志的相关性,对所述候选规则集合中的各候选规则进行分析评分,选取其中评分值最大的候选规则归入所述待生成访问控
制规则集合;
104.步骤s40,从所述待覆盖访问记录集合中,删除所述最优访问控制规则集合的规则所能覆盖的系统调用访问记录,重复步骤s20和步骤s30,直至所述待覆盖访问记录集合中的所有系统调用访问记录被删除;
105.步骤s50,当所述待覆盖访问记录集合中的所有系统调用访问记录被删除后,将当前得到的待生成访问控制规则集合作为对应的最优访问控制规则集合。
106.其中,可以采用基于fp-growth的频繁项集挖掘算法生成关联集合。fp-growth算法采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(fp-tree),但仍保留项集关联信息。
107.作为一种能够实现的方式,所述根据候选规则与所述所存储的访问控制日志的相关性,对所述候选规则集合中的各候选规则进行分析评分,包括:
108.获取所述系统调用访问记录集合中每条系统调用访问记录对应的键值对,构建对应的键值对集合;
109.确定各所述候选规则的第一相关性数量和第二相关性数量;其中,所述第一相关性数量为对应候选规则在所述系统调用访问记录集合中能够覆盖的系统调用访问记录的数量,所述第二相关性数量为对应候选规则在所述键值对集合中能够覆盖的键值对的数量;
110.根据所述第一相关性数量计算各所述候选规则的覆盖率,将候选规则包含的键值对总数与对应第二相关性数量的差值作为第三相关性数量,根据所述第三相关性数量计算各所述候选规则的过度特权率;其中,所述覆盖率为对应候选规则的第一相关性数量与所述系统调用访问记录集合的系统调用访问记录总数的比值,所述过度特权率为对应候选规则的第三相关性数量与所述键值对集合的键值对总数的比值;
111.根据所述覆盖率和过度特权率对各所述候选规则进行评分。
112.作为一种能够实现的方式,所述根据所述覆盖率和过度特权率对各所述候选规则进行评分,包括:
113.按照下式计算各所述候选规则的评分值:
114.si=ai+ω(1-bi)
115.式中,si为候选规则i的评分值,ai为候选规则i的覆盖率,bi为候选规则i的过度特权率。
116.作为一种能够实现的方式,所述对于所得的关联集合的每一项,生成对应的访问控制规则并添加至所述候选规则集合,包括:
117.对于所得的关联集合的每一项,生成对应的基于属性的访问控制规则并添加至所述候选规则集合。
118.需要说明的是,根据新存储的访问控制日志,采用频繁项集挖掘算法进行持续学习,根据得到的学习结果更新所述最优访问控制规则集合时,同样利用图2所示的方法得到最优访问控制规则集合,以实现最优访问控制规则集合的更新。
119.为更好地理解本发明上述的方法,下面以两个具体示例进行阐述。
120.示例1
121.示例为开发的ebpf-esx其中的lsm系统调用控制组件,它基于rust编写,利用
libbpf-rs库调用libbpf的功能,来实现对ebpf部分程序的载入。该程序可以通过直接载入基于toml格式的访问控制列表(access control list,acl)到内核中,内核根据该访问控制列表的信息对进程的系统调用请求进行限制。
122.访问控制列表的信息如图3所示。
123.其使用方式是限定fs或net的访问规则。fs即file system即用于限制文件系统访问的规则,net为用于限制网络访问的规则。对于文件系统的规则,access有许多种,主要操作有r,即read,读文件;w,write,写文件;x,execute,执行文件;a,append,追加文件内容;d,delete,删除文件;c,chmod,修改文件或目录属性;l,link,对文件或目录进行链接操作;i,ioctl,管理设备io通道共八种与文件系统相关的系统调用;
124.对于网络访问的规则,有send,即发送网络包;recv,即接收网络包;client,即作为客户端,拥有connect系统调用权限;server,即作为服务器,拥有create、bind、listen、accept、shutdown系统调用权限;
125.uid为用户在系统中的id标识,gid为用户在系统中的组id标识,满足标识时即执行规则。当uid为-1时,意味着任意uid的用户都满足执行这一规则,gid同理。
126.本示例的具体步骤如下:
127.(1)将编写好的ebpf监控程序装载入内核,将需要监听并且同意放行的文件或目录位置、用户或用户组以及需要限制的操作保存至内核中的ebpf maps中。
128.(2)当与文件系统和网络等相关的系统调用执行时,ebpf拦截该系统调用,并根据用户-用户组-操作-地址的四元组在ebpf maps中进行查询,查看是否需要对该操作进行限制,并且对该操作进行监控,生成结构化记录存储在本地文件中。
129.这部分利用了ebpf中的lsm程序模块的拦截方式,在系统调用开始之前进行ebpf程序的逻辑处理,同时,获得这些系统调用的参数。除了这些参数,还可以调用一些ebpf程序的帮助程序来获取当前访问该系统调用的用户和用户组,所有的这些信息可以被利用来筛选出所关心的、有危险的系统调用的访问操作,而过滤掉不关注的其它系统调用操作。
130.ebpf程序之间的交流利用了ebpf maps与inline函数。以监听inode(inode智能客户端)创建,即create系统调用为例子,ebpf程序获取了该系统调用的输入参数,从而获得了该系统调用的目标目录或文件,同时使用ebpf的辅助函数获取了访问该系统调用的进程id与用户id等信息,聚合起来利用inline函数查询map中保存的访问控制信息,并且将该聚合完成的信息进行记录,利用ebpf中的ringbuff函数进行相关信息的输出,保存至用户空间。
131.可以使用ebpf环形缓冲区(ring-buffer)程序聚合收集到的系统调用访问相关信息,并输出到用户空间进行保存。相比于现有技术使用的perf buffer程序,ebpf环形缓冲区程序有着降低内存开销、保证事件顺序与减少数据复制三大优势。
132.将聚合后的系统调用访问相关信息保存至本地后,可以用于后续使用机器学习方法进行分析,生成对应的访问控制列表或用作其他用途。
133.其中,根据用户-用户组-操作-地址的四元组在ebpf maps中进行查询,查看是否需要对该操作进行限制,具体为:
134.根据聚合后的系统调用访问相关信息,向保存访问控制策略的ebpf map进行查询,若无查询结果则默认不进行放行,若有查询结果,则根据查询结果来决定是否对该次系
统调用访问放行,以及决定是否对该次系统调用访问进行记录。
135.所记录的信息可以包括发生时间、是否放行、用户与用户组信息、操作类型、进程信息、操作对象地址等信息。通过开源的kibana软件可以连接elasticsearch数据库,将存储的访问控制日志以表格的形式可视化展示出来。
136.示例2
137.为了能够自主生成访问控制配置文件,完成自动配置的访问控制,可以利用基于频繁项集挖掘的机器方法对系统调用访问记录进行挖掘,得到安全访问控制列表,通过再次载入列表的方式,更新内核中ebpf map所存储的访问控制信息,如图4所示。
138.具体步骤如下:
139.(1)以类似放行所有系统调用的初始访问控制配置文件进行esx程序的初始启动,运行一段时间,保存这段时间的系统调用访问记录。
140.(2)根据存储该段时间的系统调用访问记录,规则学习引擎以基于频繁项集挖掘的方法进行规则学习,生成具体的访问控制规则。访问控制规则生成完毕后,规则分析引擎利用审计日志(audit log)对访问控制规则进行分析评分。
141.(3)分析完毕后,将评分高的规则更新到访问控制配置文件中,并且更新到内核中,同时对于这些访问控制配置文件也可以进行人工调整;
142.(4)根据新生成的访问日志信息,进行持续学习,不断地更新访问控制规则。
143.本发明还提供了一种基于ebpf的自动化访问控制系统,该系统可用于实现上述实施例所述的基于ebpf的自动化访问控制方法。
144.请参阅图5,图5示出了本发明实施例提供的一种基于ebpf的自动化访问控制系统的结构连接框图。
145.本发明实施例提供的一种基于ebpf的自动化访问控制系统,包括:
146.内核程序载入模块1,用于获取预置的访问控制策略并创建ebpf程序,将所述ebpf程序载入至linux系统内核,将所述访问控制策略存储于ebpf maps内;
147.访问监控模块2,用于监控各类系统调用行为,根据所述访问控制策略对监控到的系统调用行为执行对应的控制动作,并记录和保存对应的访问控制日志;其中,所述控制动作包括通过执行或拒绝执行,所述访问控制策略包括允许任何系统调用行为通过执行直至通过执行的系统调用行为达到预置数量;
148.访问控制策略挖掘与更新模块3,用于若存储的与通过执行的系统调用行为对应的访问控制日志数量达到所述预置数量,根据所存储的访问控制日志基于频繁项集挖掘算法进行访问控制策略挖掘,根据得到的访问控制策略挖掘结果更新存储于所述ebpf maps内的访问控制策略。
149.在一种能够实现的方式中,所述访问监控模块2包括:
150.监控单元,用于对监控到的系统调用行为,利用linux安全模块的钩子函数确定是否满足所述访问控制策略对应的要求,在满足时通过执行。
151.在一种能够实现的方式中,所述访问控制策略挖掘与更新模块3,包括:
152.初次挖掘与更新单元,用于根据当前存储的访问控制日志基于频繁项集挖掘算法确定最优访问控制规则集合,根据所述最优访问控制规则集合更新存储于所述ebpf maps内的访问控制策略;
153.迭代挖掘与更新单元,用于根据新存储的访问控制日志,采用频繁项集挖掘算法进行持续学习,根据得到的学习结果更新所述最优访问控制规则集合,并基于更新的最优访问控制规则集合更新存储于所述ebpf maps内的访问控制策略。
154.在一种能够实现的方式中,所述初次挖掘与更新单元具体用于:
155.步骤s10,根据所存储的访问控制日志确定对应的系统调用访问记录集合,设置待生成访问控制规则集合为空集,并设置待覆盖访问记录集合为所述系统调用访问记录集合;
156.步骤s20,根据所存储的访问控制日志,基于频繁项集挖掘算法生成关联集合并将候选规则集合置为空集;
157.步骤s30,对于所得的关联集合的每一项,生成对应的访问控制规则并添加至所述候选规则集合,根据候选规则与所述所存储的访问控制日志的相关性,对所述候选规则集合中的各候选规则进行分析评分,选取其中评分值最大的候选规则归入所述待生成访问控制规则集合;
158.步骤s40,从所述待覆盖访问记录集合中,删除所述最优访问控制规则集合的规则所能覆盖的系统调用访问记录,重复步骤s20和步骤s30,直至所述待覆盖访问记录集合中的所有系统调用访问记录被删除;
159.步骤s50,当所述待覆盖访问记录集合中的所有系统调用访问记录被删除后,将当前得到的待生成访问控制规则集合作为对应的最优访问控制规则集合。
160.在一种能够实现的方式中,所述初次挖掘与更新单元根据候选规则与所述所存储的访问控制日志的相关性,对所述候选规则集合中的各候选规则进行分析评分时,具体用于:
161.获取所述系统调用访问记录集合中每条系统调用访问记录对应的键值对,构建对应的键值对集合;
162.确定各所述候选规则的第一相关性数量和第二相关性数量;其中,所述第一相关性数量为对应候选规则在所述系统调用访问记录集合中能够覆盖的系统调用访问记录的数量,所述第二相关性数量为对应候选规则在所述键值对集合中能够覆盖的键值对的数量;
163.根据所述第一相关性数量计算各所述候选规则的覆盖率,将候选规则包含的键值对总数与对应第二相关性数量的差值作为第三相关性数量,根据所述第三相关性数量计算各所述候选规则的过度特权率;其中,所述覆盖率为对应候选规则的第一相关性数量与所述系统调用访问记录集合的系统调用访问记录总数的比值,所述过度特权率为对应候选规则的第三相关性数量与所述键值对集合的键值对总数的比值;
164.根据所述覆盖率和过度特权率对各所述候选规则进行评分。
165.在一种能够实现的方式中,所述初次挖掘与更新单元根据所述覆盖率和过度特权率对各所述候选规则进行评分时,具体用于:
166.按照下式计算各所述候选规则的评分值:
167.si=ai+ω(1-bi)
168.式中,si为候选规则i的评分值,ai为候选规则i的覆盖率,bi为候选规则i的过度特权率。
169.在一种能够实现的方式中,所述初次挖掘与更新单元对于所得的关联集合的每一项,生成对应的访问控制规则并添加至所述候选规则集合时,具体用于:
170.对于所得的关联集合的每一项,生成对应的基于属性的访问控制规则并添加至所述候选规则集合。
171.本发明还提供了一种基于ebpf的自动化访问控制设备,包括:
172.存储器,用于存储指令;其中,所述指令用于实现如上任意一项实施例所述的基于ebpf的自动化访问控制方法;
173.处理器,用于执行所述存储器中的指令。
174.本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任意一项实施例所述的基于ebpf的自动化访问控制方法。
175.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程,上述描述的系统、设备和模块的具体有益效果,可以参考前述方法实施例中的对应有益效果,在此不再赘述。
176.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
177.所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
178.另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
179.所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
180.以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1