1.本公开涉及芯片
技术领域
:
:,具体涉及一种基于微内核操作系统的安全监控方法、装置、设备及芯片。
背景技术
:
::2.审计是事后认定违反安全规则的分析技术,安全审计为管理员在
用户违反安全法则时提供及时的警告
信息,实现对系统信息的追踪、审查、统计和报告等功能。目前有一些开源操作系统已经实现了审计功能。3.linux提供了用来记录系统安全事件的审计系统,审计系统包括用户空间审计系统和内核空间审计系统,用户空间审计系统由一些用户空间的审计程序组成,用来开启内核审计功能、设置审计规则和审计系统状态、接收内核审计系统发送来的审计消息并写入log文件,以及审计消息的检索和生成审计总结报告。内核审计系统用于产生和过滤内核的各种审计消息。4.linux的安全审计系统分为syslog和audit两个部分。audit部分主要记录安全信息,包括文件的读写、权限的修改等,syslog部分主要用来记录系统中的各种信息,如硬件警报和软件日志等。日志的数据主要包含了三类:内核及系统日志、用户日志、程序日志。5.syslog属于应用层的服务,专门用来记录日志,我们可以把每一个程序理解为子系统,syslog可以根据日志的类别和优先级将日志保存在不同的文件中。另外syslog有两个进程,syslogd专门负责记录非内核的其他设置产生的日志,klogd专门负责内核产生的日志,通过系统调用syslog读出这些信息,记录在日志文件中。6.除了linux以外,还有snare(systemintrusionandreportingenvironment)审计系统,它是一个开源的安全审计和事件日志软件。snare系统主要分为三个模块:内核动态加载模块auditmodule.o;在用户空间运行的审计监控程序auditd;图形截面的配置和报告工具snare。此系统将审计从内核中分离出来,构成一个独立于内核的模块。它重新编写了要审计的系统调用,在新的系统调用中实现对审计信息的收集以及将审计记录放入缓冲池,加载模块后,通过将系统调用表中的函数指针指向新的系统调用函数来使得新的带审计功能的系统调用代替原有的系统调用。7.此外,windowsnt审计系统能够检测和记录与安全性有关的任何创建、访问或删除系统资源的事件,并记录实施这些行为的用户。在审计过程中对象管理器可以根据审计策略生成审计事件,这是一个被动的过程,也可以在用户程序中利用审计函数主动生成审计事件。8.linux操作系统作为一个宏内核架构,系统的主要核心组件都在内核实现,安全审计系统的部分模块也是在内核中实现的,这样的设计思想与本发明针对的微内核操作系统是不同的,不利于模块化设计。9.snare系统的审计事件较少,不够全面,同时其采用系统调用来分离审计系统的方式是建立在系统调用表的基础上,当内核模块中不能再引用系统调用表时,此方式也就不可行了。10.因此,针对微内核操作系统,需要在用户层设计一个安全审计监控系统,在保证隔离性的基础上,维护操作系统的安全性和可靠性。技术实现要素:11.本公开实施例提供一种基于微内核操作系统的安全监控方法、装置、设备及芯片。12.第一方面,本公开实施例中提供了一种基于微内核操作系统的安全监控方法,其中,包括:响应于用户空间的执行对象对微内核操作系统中的系统调用接口的调用请求,在内核空间将
所述调用请求对应的系统调用事件类型与预先配置的审计配置信息进行匹配;在所述系统调用事件类型与所述审计配置信息相匹配时,将所述系统调用接口进入内核空间运行时的入口审计信息记录在所述执行对象的审计上下文结构中,并将所述系统调用接口退出时的出口审计信息也记录在所述执行对象的审计上下文结构中;在退出所述系统调用接口时将所述审计上下文结构中的入口审计信息和出口审计信息从所述内核空间输出至用户空间的审计
缓冲区。13.进一步地,所述方法还包括:在所述调用请求对应的系统调用事件类型与所述审计配置信息不相匹配时,将所述系统调用接口在内核空间执行过程中所产生的第一内核态日志信息写入用户空间的日志缓冲区中。14.进一步地,所述方法还包括:将用户空间产生的用户态日志信息写入所述日志缓冲区中;和/或,将内核空间产生的第二内核态日志信息写入所述日志缓冲区中;其中,所述第二内核态日志信息为非系统调用接口在内核空间产生的日志信息。15.进一步地,所述方法还包括:在用户空间读取所述日志缓冲区中的日志信息;调用文件系统接口将所述日志缓冲区中的所述日志信息输出至控制台或日志文件中。16.进一步地,所述方法还包括:获取用户空间产生的用户空间审计信息;将所述用户空间审计信息与所述审计配置信息进行匹配;在所述用户空间审计信息与所述审计配置信息相匹配时,将所述用户空间审计信息写入所述审计缓冲区中。17.进一步地,所述方法还包括:接收用户在用户空间通过预设接口输入的用户配置信息;基于所述用户配置信息更新在用户空间存储的所述审计配置信息。18.进一步地,所述方法还包括:接收用户在用户空间对日志文件的查看请求;基于所述查看请求向用户输出所述日志文件。19.进一步地,所述方法还包括:在用户空间读取所述审计缓冲区中的审计信息;调用文件系统接口将所述审计缓存区中的所述审计信息输出至审计文件中。20.进一步地,所述方法还包括:接收用户在用户空间对所述审计文件的查看请求;基于所述审计文件中的审计信息向用户输出审计报告。21.进一步地,所述方法还包括:在用户空间设置审计缓冲区链表;所述审计缓冲区链表用于存储指向所述审计缓冲区的指针;调用文件系统接口将所述审计缓存区中的所述审计信息输出至审计文件中,包括:在所述审计缓冲区链表中的指针个数超过预设阈值后,在用户空间基于所述审计缓冲区链表中的指针,调用文件系统接口将所述审计缓冲区中的审计信息输出至所述审计文件中;删除所述审计缓冲区链表中对应的指针。22.进一步地,所述方法还包括:建立空闲的审计缓冲区;将指向所述空闲的审计缓冲区的指针存储在空闲审计缓冲区链表中;在退出所述系统调用接口时将所述审计上下文结构中的入口审计信息和出口审计信息从所述内核空间输出至用户空间的审计缓冲区,包括:从所述空闲审计缓冲区链表中请求空闲的审计缓冲区;将所述审计上下文结构中的审计信息写入空闲的所述审计缓冲区中。23.进一步地,所述方法还包括:在所述空闲审计缓冲区链表中没有空闲的审计缓冲区时,重新分配审计缓冲区;将所述审计上下文结构中的审计信息写入重新分配的所述审计缓冲区中。24.进一步地,所述方法还包括:在所述审计文件中的内容超过预设存储容量后,建立新的审计文件;在所述审计文件的个数超过预设数量后,按照时间先后顺序删除最先建立的一个或多个审计文件。25.第二方面,本公开实施例中提供了一种基于微内核操作系统的安全监控装置,其中,包括:响应模块,被配置为响应于用户空间的执行对象对微内核操作系统中的系统调用接口的调用请求,在内核空间将所述调用请求对应的系统调用事件类型与预先配置的审计配置信息进行匹配;记录模块,被配置为在所述系统调用事件类型与所述审计配置信息相匹配时,将所述系统调用接口进入内核空间运行时的入口审计信息记录在所述执行对象的审计上下文结构中,并将所述系统调用接口退出时的出口审计信息也记录在所述执行对象的审计上下文结构中;第一输出模块,被配置为在退出所述系统调用接口时将所述审计上下文结构中的入口审计信息和出口审计信息从所述内核空间输出至用户空间的审计缓冲区。26.进一步地,所述装置还包括:第一写入模块,被配置为在所述调用请求对应的系统调用事件类型与所述审计配置信息不相匹配时,将所述系统调用接口在内核空间执行过程中所产生的第一内核态日志信息写入用户空间的日志缓冲区中。27.进一步地,所述装置还包括:第二写入模块,被配置为将用户空间产生的用户态日志信息写入所述日志缓冲区中;和/或,第三写入模块,被配置为将内核空间产生的第二内核态日志信息写入所述日志缓冲区中;其中,所述第二内核态日志信息为非系统调用接口在内核空间产生的日志信息。28.进一步地,所述装置还包括:第一读取模块,被配置为在用户空间读取所述日志缓冲区中的日志信息;第一调用模块,被配置为调用文件系统接口将所述日志缓冲区中的所述日志信息输出至控制台或日志文件中。29.进一步地,所述装置还包括:获取模块,被配置为获取用户空间产生的用户空间审计信息;匹配模块,被配置为将所述用户空间审计信息与所述审计配置信息进行匹配;第四写入模块,被配置为在所述用户空间审计信息与所述审计配置信息相匹配时,将所述用户空间审计信息写入所述审计缓冲区中。30.进一步地,所述装置还包括:第一接收模块,被配置为接收用户在用户空间通过预设接口输入的用户配置信息;更新模块,被配置为基于所述用户配置信息更新在用户空间存储的所述审计配置信息。31.进一步地,所述装置还包括:第二接收模块,被配置为接收用户在用户空间对日志文件的查看请求;第二输出模块,被配置为基于所述查看请求向用户输出所述日志文件。32.进一步地,所述装置还包括:第二读取模块,被配置为在用户空间读取所述审计缓冲区中的审计信息;第二调用模块,被配置为调用文件系统接口将所述审计缓存区中的所述审计信息输出至审计文件中。33.进一步地,所述装置还包括:第三接收模块,被配置为接收用户在用户空间对所述审计文件的查看请求;第三输出模块,被配置为基于所述审计文件中的审计信息向用户输出审计报告。34.进一步地,所述装置还包括:设置模块,被配置为在用户空间设置审计缓冲区链表;所述审计缓冲区链表用于存储指向所述审计缓冲区的指针;所述第二调用模块,包括:调用子模块,被配置为在所述审计缓冲区链表中的指针个数超过预设阈值后,在用户空间基于所述审计缓冲区链表中的指针,调用文件系统接口将所述审计缓冲区中的审计信息输出至所述审计文件中;删除子模块,被配置为删除所述审计缓冲区链表中对应的指针。35.进一步地,所述装置还包括:第一建立模块,被配置为建立空闲的审计缓冲区;存储模块,被配置为将指向所述空闲的审计缓冲区的指针存储在空闲审计缓冲区链表中;所述第一输出模块,包括:请求子模块,被配置为从所述空闲审计缓冲区链表中请求空闲的审计缓冲区;写入子模块,被配置为将所述审计上下文结构中的审计信息写入空闲的所述审计缓冲区中。36.进一步地,所述装置还包括:分配模块,被配置为在所述空闲审计缓冲区链表中没有空闲的审计缓冲区时,重新分配审计缓冲区;第五写入模块,被配置为将所述审计上下文结构中的审计信息写入重新分配的所述审计缓冲区中。37.进一步地,所述装置还包括:第二建立模块,被配置为在所述审计文件中的内容超过预设存储容量后,建立新的审计文件;删除模块,被配置为在所述审计文件的个数超过预设数量后,按照时间先后顺序删除最先建立的一个或多个审计文件。38.所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。39.在一个可能的设计中,上述装置的结构中包括存储器和处理器,所述存储器用于存储一条或多条支持上述装置执行上述对应方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。上述装置还可以包括通信接口,用于上述装置与其他设备或通信网络通信。40.第三方面,本公开实施例提供了一种电子设备,包括存储器、处理器以及存储在存储器上的计算机程序,其中,所述处理器执行所述计算机程序以实现上述任一方面所述的方法。41.第四方面,本公开实施例提供了一种计算机可读存储介质,用于存储上述任一装置所用的计算机指令,该计算机指令被处理器执行时用于实现上述任一方面所述的方法。42.第五方面,本公开实施例提供了一种计算机程序产品,其包含计算机指令,该计算机指令被处理器执行时用于实现上述任一方面所述的方法。43.第六方面,本公开实施例提供了一种芯片,该芯片用于执行指令以实现上述任一方面所述的方法。44.本公开实施例提供的技术方案可以包括以下有益效果:本公开实施例设计和实现了基于微内核操作系统的安全监控方案,通过记录和分析操作系统的运行时信息,来保证操作系统安全。已有技术中,少有针对微内核操作系统设计完善的安全审计方案,而本公开实施例设计与实现了符合操作系统安全标准的基于微内核操作系统的安全监控方案,并利用该安全监控方案实时地记录操作系统运行时的状态和信息。本公开实施例通过在用户空间提供配置审计规则服务,权限用户根据需求对需要进行审计的事件、格式等做配置,内核系统运行过程中仅针对权限用户所配置的相关事件进行有条件的记录,在尽可能最大化简化内核的前提下对操作系统进行安全监控。45.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明46.结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中。47.图1示出根据本公开一实施方式的基于微内核操作系统的安全监控方法的流程图。48.图2示出根据本公开一实施方式的日志缓冲区和/或审计缓冲区的实现效果示意图。49.图3(a)-图3(c)示出根据本公开一实施方式中微内核操作系统的安全监控系统包括的日志系统和审计系统的一种实现示意图。50.图4示出根据本公开一实施方式的基于微内核操作系统的安全监控装置的结构框图。51.图5示出根据本公开一实施方式的电子设备的结构框图。52.图6是适于用来实现根据本公开一实施方式的基于微内核操作系统的安全监控方法的计算机系统的结构示意图。具体实施方式53.下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。54.在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。55.另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。56.下面通过具体实施例详细介绍本公开实施例的细节。57.图1示出根据本公开一实施方式的基于微内核操作系统的安全监控方法的流程图。如图1所示,该基于微内核操作系统的安全监控方法包括以下步骤:在步骤s101中,响应于用户空间的执行对象对微内核操作系统中的系统调用接口的调用请求,在内核空间将所述调用请求对应的系统调用事件类型与预先配置的审计配置信息进行匹配;在步骤s102中,在所述系统调用事件类型与所述审计配置信息相匹配时,将所述系统调用接口进入内核空间运行时的入口审计信息记录在所述执行对象的审计上下文结构中,并将所述系统调用接口退出时的出口审计信息也记录在所述执行对象的审计上下文结构中;在步骤s103中,在退出所述系统调用接口时将所述审计上下文结构中的入口审计信息和出口审计信息从所述内核空间输出至用户空间的审计缓冲区。58.本实施例中,对于微内核操作系统来说,内核部分被最大限度的简化。内核部分仅包括了最基本的ipc(进程间通信)机制、地址空间管理和调度机制等用于实现操作系统服务的基本功能,而在服务层面,比如设备驱动、文件系统、应用程序间通信等都将通过用户态服务程序的方式实现。当普通的应用程序需要操作系统的相关服务时,其需要通过发起进程间通信给相应的服务程序,由这些服务程序进行相关操作,必要时服务程序也会通过执行内核提供的系统调用接口陷入到内核态运行,以便完成一些基本的操作,并把结果再通过进程间通信反馈给应用程序。59.本公开实施例首先考虑应用场景为微内核操作系统,在微内核操作系统架构上增加了安全监控系统,并尽可能简化内核部分,将安全监控系统的功能作为用户空间服务程序来实现。60.本公开实施例中的安全监控系统至少包括审计系统。审计系统用于安全跟踪,并且审计系统的设计以尽可能最大化地简化内核为目标,将相关审计服务设计在用户空间。61.审计事件是系统审计用户动作的最小单位,审计事件的收集就是指一定安全级别审计标准下的审计事件的确立。从主体角度来说,系统需要记录用户进行的所有活动,从客体角度来说,系统要记录某一客体的所有存取活动。62.审计事件可主要分为系统调用类事件和用户可信事件,本公开实施例针对系统调用类事件作出了如下设计:系统调用类事件的主体为线程。系统调用类事件可以理解为用户空间的执行对象比如线程等对微内核操作系统所提供的系统调用接口的调用事件。因此,本公开实施例中,安全监控系统在检测到系统调用类事件,也即检测到用户空间的执行对象对系统调用接口的调用请求之后,可以利用本公开实施例针对系统调用类事件设计的审计系统进行审计信息的收集,并将审计信息输出至用户空间的日志文件中,以便后续相关权限用户基于日志文件对微内核操作系统的使用进行审计。63.本公开实施例在用户空间可以为相关权限用户提供配置审计配置信息的管理工具,该管理工具可以提供审计信息配置接口或者命令输入接口,相关权限用户可以通过该审计信息配置接口或者输入命令的方式,配置相应的审计规则,还可以配置审计信息的输出格式等。相关权限用户配置的审计配置信息可以存储在相应的存储文件中,以便后续由安全监控系统进行读取。64.本公开实施例中,安全监控系统可以通过编程实现,安全监控系统运行后,可以通过在用户空间启动一个或多个检测线程检测系统调用类事件。安全监控系统中的该一个或多个检测线程在检测到系统调用类事件之后,可以将该系统调用事件的类型与存储文件中审计配置信息中设定的规则进行匹配,如果当前检测到的系统调用类事件是相关权限用户预先配置的需要进行审计的内容相关的事件,也即当前系统调用事件类型与预先配置的审计配置信息相匹配时,将当前调用的系统调用接口进入内核态运行时的入口审计信息写入该执行对象对应的审计上下文结构中,而在该系统调用接口执行完成并退出时的出口审计信息也写入该执行对象对应的审计上下文结构中。65.该审计上下文结构可以在编程时,在执行对象的源代码中编写好,并且在安全监控系统运行后,该执行对象被创建时所建立,系统调用接口退出时,由安全监控系统运行后启动的一个或多个信息输出线程将相应的该上下文结构中的入口审计信息和出口审计信息从内核空间输出至用户空间的审计缓冲区中。该审计上下文结构则可以清空。66.在一些实施例中,审计上下文结构可以如下所示:structaudit_context{ꢀꢀꢀenumaudit_statestate;//审计状态ꢀꢀꢀunsignedintserial;//记录的序列号ꢀꢀꢀstructtimespecctime;//系统调用进入的时间ꢀꢀꢀintmajor;//系统调用号ꢀꢀꢀunsignedlongargv[4];//系统调用参数ꢀꢀꢀlongreturn_code;//系统调用返回代码ꢀꢀꢀintauditable;//是否已被写入审计缓冲区的标志}。[0067]其中,入口审计信息和出口审计信息可以基于审计上下文结构而定,也即审计上下文结构中预先定义了入口审计信息和出口审计信息分别包括哪些。如上文中的审计上下文结构所示,入口审计信息可以包括但不限于审计上下文结构中的审计状态、序列号、系统调用进入时间、系统调用号、系统调用参数等;出口审计信息可以包括但不限于系统调用返回代码和审计上下文结构中的内容是否输出至审计缓冲区的标志等。在一些实施例中,用户空间的审计缓冲区可以在安全监控系统初始化时创建,并且由安全监控系统初始化时启动的读写线程对该审计缓冲区进行读写操作。[0068]本公开实施例设计和实现了基于微内核操作系统的安全监控方案,通过记录和分析操作系统的运行时信息,来保证操作系统安全。已有技术中,少有针对微内核操作系统设计完善的安全审计方案,而本公开实施例设计与实现了符合操作系统安全标准的基于微内核操作系统的安全监控方案,并利用该安全监控方案实时地记录操作系统运行时的状态和信息。本公开实施例通过在用户空间提供配置审计规则服务,权限用户根据需求对需要进行审计的事件、格式等做配置,内核系统运行过程中仅针对权限用户所配置的相关事件进行有条件的记录,在尽可能最大化简化内核的前提下对操作系统进行安全监控。[0069]在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:在所述调用请求对应的系统调用事件类型与所述审计配置信息不相匹配时,将所述系统调用接口在内核空间执行过程中所产生的第一内核态日志信息写入用户空间的日志缓冲区中。[0070]该可选的实现方式中,如果当前调用的系统调用接口对应的系统调用事件类型与权限用户优选配置的审计配置信息不相匹配,则说明当前系统调用涉及的内容不是权限用户关心的审计信息,因此可以不产生相关的审计信息。然而,为了后续查看需要,可以将相关的日志信息写入用户空间的日志缓冲区。在一些实施例中,可以由安全监控系统运行后启动的日志输出线程将相关的日志信息写入用户空间的日志缓冲区。[0071]也就是说,在安全监控系统初始化时,可以在用户空间建立审计缓冲区和日志缓冲区,对于微内核操作系统中的系统调用类事件,如果权限用户没有预先配置需要对当前的系统调用类事件相关的审计信息进行审计,则日志输出线程还可以将当前的系统调用类事件相关的第一内核态日志信息写入日志缓冲区。需要说明的是,相关的第一内核态日志信息可以包括但不限于系统调用类事件的开始时间、结束时间、运行过程中对微内核操作系统的修改操作等相关日志。在微内核操作系统中可以专门设置一日志输出线程,专门将内核空间运行的程序的相关日志写入到用户空间的日志缓冲区中。[0072]在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:将用户空间产生的用户态日志信息写入所述日志缓冲区中;和/或,将内核空间产生的第二内核态日志信息写入所述日志缓冲区中;其中,所述第二内核态日志信息为非系统调用接口在内核空间产生的日志信息。[0073]该可选的实现方式中,日志缓冲区中还可以记录用户空间产生的用户态日志信息,并且内核空间产生的第二内核态日志信息也可以写入日志缓冲区中。本实施中为了能够区分在内核空间中系统调用类事件产生的日志信息以及其他情况下产生的日志信息,将系统调用类事件产生的日志信息称之为第一内核态日志信息,而其他情况下产生的日志信息称之为第二内核态日志信息。在一些实施例中,可以由安全监控系统初始化时建立的日志输出线程将第一内核态日志信息写入日志缓冲区。可以理解的是,第一内核态日志信息和第二内核态日志信息可以由相同的日志输出线程处理,也可以由不同的日志输出线程来处理。[0074]在一些实施例中,用户空间的用户态日志信息可以包括但不限于运行在用户空间的应用软件运行日志、在用户空间对配置信息的修改记录等;第一内核态日志信息或第二内核态日志信息可以包括但不限于微内核操作系统的运行记录、微内核操作系统中的报警提示记录、用户线程对微内核操作系统的操作日志记录、用户线程在微内核操作系统中的行为记录等。[0075]内核空间产生的第一内核态日志信息和第二内核态日志信息可以由专门设置的日志输出线程将日志信息从内核空间输出至用户空间的日志缓冲区中。用户空间产生的日志信息可以由相应的日志输出线程写入用户空间的日志缓冲区中。在一些实施例中,该相应的日志输出线程可以是安全监控系统运行后启动的。[0076]在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:在用户空间读取所述日志缓冲区中的日志信息;调用文件系统接口将所述日志缓冲区中的所述日志信息输出至控制台或日志文件中。[0077]该可选的实现方式中,日志信息记录在用户空间建立的日志缓冲区中,安全监控系统可以在运行后启动日志读取线程,在日志缓冲区满了或者定期,可以由日志读取线程将日志缓冲区中的日志信息写入日志文件中。写入日志文件的过程可以在用户空间进行,该日志读取线程可以在用户空间通过调用文件系统接口将日志信息从日志缓冲区写入日志文件。在另一些实施例中,日志缓冲区中的日志信息也可以由日志读取线程通过调用文件系统接口直接输出到控制台,存储在控制台上的存储设备,和/或显示在控制台上的显示器,供相关人员查看。[0078]在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:获取用户空间产生的用户空间审计信息;将所述用户空间审计信息与所述审计配置信息进行匹配;在所述用户空间审计信息与所述审计配置信息相匹配时,将所述用户空间审计信息写入所述审计缓冲区中。[0079]该可选的实现方式中,用户空间也会产生一些权限用户想要审计的信息,权限用户可以针对用户空间也预先配置审计配置信息,将想要审计的事件类型和/或信息类型配置在审计配置信息中,用户空间产生用户空间审计信息后,可以由安全监控系统运行后启动的审计匹配线程与审计配置信息进行匹配,如果相匹配则将其写入审计缓冲区中,如果不相匹配则可以不写入审计缓冲区,而是由相关的日志线程写入日志缓冲区中。[0080]在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:接收用户在用户空间通过预设接口输入的用户配置信息;基于所述用户配置信息更新在用户空间存储的所述审计配置信息。[0081]该可选的实现方式中,权限用户可以通过用户空间预先设定的接口输入用户配置信息,该用户配置信息可以用于更新用户空间中预先存储的审计配置信息。通过这种方式,权限用户可以在用户空间预先配置审计配置信息,还可以后续对审计配置信息进行修改等编辑操作。安全监控系统运行后,可以提供供用户输入用户配置信息的接口,通过该接口,安全监控系统可以接收用户输入的用户配置信息,并将接收到的用户配置信息更新至配置信息的存储文件中。[0082]在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:接收用户在用户空间对日志文件的查看请求;基于所述查看请求向用户输出所述日志文件。[0083]该可选的实现方式中,日志文件可以存储在用户空间,用户可以通过安全监控系统提供的查看接口在用户空间请求查看日志文件,该查看接口接收到用户的请求后,可以通过调用文件系统接口将该日志文件输出给用户,例如可以打开该日志文件,并显示在用户的显示设备上。[0084]在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:在用户空间读取所述审计缓冲区中的审计信息;调用文件系统接口将所述审计缓存区中的所述审计信息输出至审计文件中。[0085]该可选的实现方式中,用户空间和内核空间的审计信息均记录在用户空间建立的审计缓冲区中,安全监控系统可以在运行后启动审计读取线程,在审计缓冲区满了或者定期,可以由审计读取线程将审计缓冲区中的审计信息写入审计文件中。写入审计文件的过程可以在用户空间进行,审计读取线程在用户空间通过调用文件系统接口将审计信息从审计缓冲区写入审计文件。在另一些实施例中,审计缓冲区中的审计信息也可以由审计读取线程通过调用文件系统接口直接输出到控制台,存储在控制台上的存储设备,和/或显示在控制台上的显示器,供相关人员查看。[0086]在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:接收用户在用户空间对所述审计文件的查看请求;基于所述审计文件中的审计信息向用户输出审计报告。[0087]该可选的实现方式中,审计信息被写入审计文件后,权限用户查看审计文件时,可以基于预先配置好的审计规则将审计信息生成为审计报告的形式,输出给权限用户。安全监控系统还可以为用户提供查看审计文件的查看接口,该查看接口接收到用户的请求后,可以在确定当前用户有权限的情况下将审计报告输出给该用户。[0088]在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:在用户空间设置审计缓冲区链表;所述审计缓冲区链表用于存储指向所述审计缓冲区的指针;调用文件系统接口将所述审计缓存区中的所述审计信息输出至审计文件中,包括:在所述审计缓冲区链表中的指针个数超过预设阈值后,在用户空间基于所述审计缓冲区链表中的指针,调用文件系统接口将所述审计缓冲区中的审计信息输出至所述审计文件中;删除所述审计缓冲区链表中对应的指针。[0089]该可选的实现方式中,可以在安全监控系统初始化过程中,在用户空间创建审计缓冲区链表,该审计缓冲区链表中存储指向审计缓冲区的指针。也就是说,在用户空间可以创建多个审计缓冲区,并且每个审计缓冲区的指针可以存储在审计缓冲区链表中。预先可以设置在审计缓冲区链表中最多能够存储的审计缓冲区的指针个数,该最多个数用预设阈值来表示。在审计缓冲区链表中的指针个数超过该预设阈值后,可以启动将审计缓冲区中的审计信息写入审计文件的进程,由该进程将审计缓冲区链表中存储的指针指向的审计缓冲区中的审计信息写入审计文件,审计信息成功写入审计文件的审计缓冲区的指针可以从审计缓冲区链表中删除。[0090]在本实施例的一个可选实现方式中,用户空间的审计缓冲区和/或日志缓冲区采用双缓冲区模式。[0091]该可选的实现方式中,为减少系统调用次数,从而降低操作系统在用户态与核心态切换所耗费的时间,本公开实施例在用户空间维护了审计缓冲区以及日志缓冲区,日志信息以及审计信息分别按照统一的格式写入到日志缓冲区和审计缓冲区中,用户空间的日志读取线程和审计读取线程分别负责监听和读取日志缓冲区和审计缓冲区的信息,并写入到日志文件和审计文件中。而在内核空间,日志输出线程将内核的日志信息写入到用户空间的日志缓冲区中,而审计输出线程将内核态的审计信息写入用户空间的审计缓冲区中。[0092]缓冲区的设置主要是为了解决日志信息或审计信息的产生以及读取的速率不匹配问题,除了速率不匹配问题,在本公开实施例的场景中,读取缓冲区和写入缓冲区的操作往往伴随着读写线程带来的安全问题。为此,本公开实施例采用双缓冲模式设计用户空间的日志缓冲区和审计缓冲区。[0093]数组在物理存储上是一维的连续线性结构,一次性分配能够避免频繁的内存申请和释放,且访问效率较高,故本公开实施例采用数组形式的双缓冲区。[0094]如图2所示,审计缓冲区实现为两个缓冲区buff_1和buff_2,buff_1用于当前的写线程也即审计输出线程存放审计信息,当审计缓冲区buff_1满的时候触发调换操作将审计缓冲区buff_1中的内容调换到审计缓冲区buff_2中,再由读线程也即审计读取线程从审计缓冲区buff_2中读取数据,写入到审计文件中。同理,日志缓冲区也可以实现为两个缓冲区buff_1和buff_2,buff_1用于当前的写线程也即日志输出线程存放日志信息,当审计缓冲区buff_1满的时候触发调换操作将日志缓冲区buff_1中的内容调换到日志缓冲区buff_2中,再由读线程也即日志读取线程从日志缓冲区buff_2中读取数据,写入到日志文件中。[0095]在本实施例的一个可选实现方式中,在审计缓冲区的双缓冲模式下,当前写审计信息的第一审计缓冲区写满后,调换第一审计缓冲区和第二审计缓冲区的地址,使得内核态的审计输出线程写审计信息的缓冲区指针从用户空间的所述第一审计缓冲区的地址切换至指向第二审计缓冲区的地址,而审计读取线程读取审计信息的缓冲区指针指向所述第一审计缓冲区的地址。[0096]该可选的实现方式中,在对两个审计缓冲区进行调换时,由于需要对两个审计缓冲区分别进行上锁,缓冲区内容的复制算法会导致上锁的时间较长,影响整体的性能。因此,本公开实施例中,在进行缓冲区调换操作时,可以直接交换两个审计缓冲区的地址,将审计输出线程在执行写操作时指向审计缓冲区buff_1的指针指向审计缓冲区buff_2,将审计读取线程在执行读操作时指向buff_2的指针指向buff_1,再进行后续的读写操作,达到交换缓冲区的目的,此时在临界区内的操作只有交换指针,所以执行速度较快。双缓冲区模式的设计只需要保证有一个缓冲区能够进行数据的写入,有一个缓冲区能够进行数据的读取即可,这样内核态的审计输出线程在向缓冲区写入的时候,不会因为用户态的执行速度慢而阻塞内核态的审计输出线程的执行,进一步提高了内核态的处理效率。[0097]本公开实施例中不需要建立大缓冲区,而是设置数组形式的双缓冲区,将读写操作所用到的缓冲区分开,设计成两个缓冲区,能够避免对同一缓冲区上锁时间较长导致的线程阻塞。同时数组形式的缓冲区是一次性分配,能够避免频繁的内存分配和释放。在本实施例的一个可选实现方式中,在日志缓冲区的双缓冲模式下,当前写日志信息的第一日志缓冲区写满后,调换第一日志缓冲区和第二日志缓冲区的地址,使得内核态的日志输出线程写日志信息的缓冲区指针从用户空间的所述第一日志缓冲区的地址切换至指向第二日志缓冲区的地址,而日志读取线程读取日志信息的缓冲区指针指向所述第一日志缓冲区的地址。[0098]该可选的实现方式中,在对两个日志缓冲区进行调换时,由于需要对两个日志缓冲区分别进行上锁,缓冲区内容的复制算法会导致上锁的时间较长,影响整体的性能。因此,本公开实施例在进行缓冲区调换操作时,直接交换两个日志缓冲区的地址,将日志输出线程在执行写操作时指向日志缓冲区buff_1的指针指向日志缓冲区buff_2,将日志读取线程在执行读操作时指向buff_2的指针指向buff_1,再进行后续的读写操作,达到交换缓冲区的目的,此时在临界区内的操作只有交换指针,所以执行速度较快。双缓冲区模式的设计只需要保证有一个缓冲区能够进行数据的写入,有一个缓冲区能够进行数据的读取即可,这样内核态的日志输出线程在向缓冲区写入的时候,不会因为用户态的执行速度慢而阻塞内核态的日志输出线程的执行,进一步提高了内核态的处理效率。[0099]除此之外,还可以采用信号量机制来解决多线程访问缓冲区产生的同步互斥问题,对于同一个缓冲区的读取和写入操作实现线程互斥,在缓冲区完成调换操作之后,通知读取线程进行缓冲区的读取操作。[0100]在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:建立空闲的审计缓冲区;将指向所述空闲的审计缓冲区的指针存储在空闲审计缓冲区链表中;在退出所述系统调用接口时将所述审计上下文结构中的入口审计信息和出口审计信息从所述内核空间输出至用户空间的审计缓冲区,包括:从所述空闲审计缓冲区链表中请求空闲的审计缓冲区;将所述审计上下文结构中的审计信息写入空闲的所述审计缓冲区中。[0101]该可选的实现方式中,安全监控系统在初始化时,可以预先建立多个空闲的审计缓冲区,并将空闲的审计缓冲区的指针存储在空闲审计缓冲区链表中。在内核空间的系统调用接口退出时,需要将调用该系统调用接口的执行对象的审计上下文结构中的审计信息从内核空间输出到用户空间时,可以由审计输出线程从该空闲审计缓冲区链表中请求一个空闲的审计缓冲区,并将审计上下文结构中的审计信息写入该空闲的审计缓冲区中。[0102]需要说明的是,可以由相应的审计输出线程将写入审计信息的审计缓冲区的指针从空闲审计缓冲区链表中取出后,写入非空闲审计缓冲区链表中,而空闲审计缓冲区链表中的指向该审计缓冲区的执行可以删除。[0103]在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:在所述空闲审计缓冲区链表中没有空闲的审计缓冲区时,重新分配审计缓冲区;将所述审计上下文结构中的审计信息写入重新分配的所述审计缓冲区中。[0104]该可选的实现方式中,可以由审计输出线程将创建的空闲审计缓冲区的指针写入审计缓冲区链表中,在内核空间的执行对象请求审计缓冲区时,审计输出线程还可以从审计缓冲区链表中到空闲的审计缓冲区,并将该执行对象的审计上下文结构中的审计信息写入该空闲的审计缓冲区中。[0105]如果该审计缓冲区链表中没有指向空闲的审计缓冲区的指针时,可以由审计输出线程重新为当前的执行对象分配新的审计缓冲区,并由相应的审计输出线程将该执行对象的审计上下文结构中的审计信息写入新的审计缓冲区中。[0106]在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:在所述审计文件中的内容超过预设存储容量后,建立新的审计文件;在所述审计文件的个数超过预设数量后,按照时间先后顺序删除最先建立的一个或多个审计文件。[0107]该可选的实现方式中,审计信息可以由审计读取线程定期或者审计缓冲区写满之后写入审计文件中。审计文件在用户空间存储,并且可以预先在安全监控系统初始化时设定其存储容量,一个审计文件中存储的审计信息的大小超过该预设存储容量后,可以由安全监控系统运行后启动的文件建立线程建立一个新的审计文件,后续的审计信息可以写入该新的审计文件中。[0108]在一些实施例中,审计文件过多时,比如多于预设数量后,可以由安全监控系统运行后启动的文件删除线程按照审计文件建立的时间先后顺序,将最先建立的一个或多个审计文件删除,保留较新建立的几个审计文件。[0109]图3(a)-图3(c)示出根据本公开一实施方式中微内核操作系统的安全监控系统包括的日志系统和审计系统的一种实现示意图。如图3(a)所示,日志系统可以在用户空间维护日志缓冲区,日志信息按照统一的格式写入到日志缓冲区中,日志系统中的klogd线程可以负责监听和得到日志缓冲区的日志信息,并写入到日志文件中。在内核空间,日志输出线程printk可以将内核空间的消息写入到日志缓冲区中。[0110]日志信息可以按照操作系统安全技术标准,将该标准中限定的相关日志信息记录下来,该标准中定义了日志部分需要记录的事件有:系统的运行记录、报警提示记录、操作日志记录、用户行为记录、应用软件运行日志、配置信息修改记录等。[0111]如图3(b)所示,本公开实施例采用的日志协议格式为syslog日志协议标准,第一部分pri为优先级,包括日志的程序模块facility和消息的严重级别serverity。优先级通常由字符"《"开始,后面是1~3位的数字,然后以"》"结尾,其中数字的部分由日志的程序模块和消息的严重级别编号计算得到。在一些实施例中,优先级的数值可以等于程序模块代码乘以8,再加上严重级别编号。[0112]第二部分header为日志的消息头,日志的消息头由时间戳、设备的ip地址或者主机名组成。时间戳紧跟着"》",时间戳与设备ip地址或者主机名之间用一个空格分开。[0113]第三部分msg为日志信息,是需要记录日志的部分,即日志的描述信息,一般也分为两个字段。其中一个字段用于表示消息产生的程序或线程名称,设定长度在32个字符之内;另一个字段用于记录详细的描述信息。这两个字段之间用"["、":"或者空格来进行分割。[0114]如图3(c)所示,审计系统在用户空间中,由auditd线程读取审计缓冲区中的审计信息,并将审计信息写入到审计文件audit.log中。下面从审计事件、审计信息过滤、审计缓冲区设置、审计命令四个方面来介绍本实施例中的审计系统。[0115]1.审计事件审计事件是系统审计用户动作的最小单位,审计事件的收集就是指一定安全级别审计标准下的审计事件的确立。从主体角度来说,系统需要记录用户进行的所有活动,从客体角度来说,系统要记录某一客体的所有存取活动。审计事件可主要分为系统调用类事件和用户可信事件,本公开针对系统调用类事件作出了以下设计:系统调用类事件,主体可以为线程,本公开在线程结构中添加审计上下文结构指针audit_context,记录线程上下文的审计信息。当线程从进入系统调用到退出系统调用时,使用审计上下文结构来记录系统调用进入和退出的数据,例如参数、调用号、成功/失败标识、系统调用的返回结果等。[0116]在一些实施例中,审计系统在系统调用接口的入口和出口添加审计函数(入口函数audit_syscall_entry和出口函数audit_syscall_exit),并将系统调用接口进入和退出时的审计信息写入审计上下文结构,系统调用退出时审计信息写出到缓冲区。审计信息写出后,审计上下文可以清空。[0117]如果线程创建时创建了审计上下文结构并设置了相应状态,那么在系统调用接口的入口处进行审计上下文的填充,由入口函数audit_syscall_entry将系统调用接口进入时的入口审计信息记录到线程的审计上下文结构中,出口函数audit_syscall_exit将出口审计信息写入到审计上下文结构中。审计上下文结构中的信息最终由审计输出线程写入到审计缓冲区。[0118]2.审计消息的过滤。[0119]权限用户可以通过审计系统中设计的auditctl命令设置要过滤掉的事件类型,也即配置审计配置信息,将不想查看的事件规则(主要是类型信息)放入规则链表中。审计系统可以提供过滤函数audit_filter_type(inttype),参数为事件类型,对于不同类型的规则链表,只有当过滤检查通过并返回true时,审计系统才会输出相关的审计信息。也即在当前的系统调用事件类型与审计配置信息中的相匹配时,审计系统才输出相关的审计信息。[0120]3.缓冲区设置审计系统在用户空间设置审计缓冲区,并设计审计缓冲区链表,用来存填充了审计信息的审计缓冲区的指针。当审计缓冲区链表中的缓冲区数量超过上限时,当前线程可以等待用户空间的相关线程将审计信息写入审计日志文件,直到缓冲区个数小于上限值。[0121]同时还可以设计一个空闲审计缓冲区链表,用来存空闲的审计缓冲区。当申请审计缓冲区时,系统先查看空闲审计缓冲区链表是否存在空闲的审计缓冲区,如果存在,则返回给申请者,如果不存在,则分配一个新的审计缓冲区。释放申请的审计缓冲区时,可以检查空闲缓冲区链表是否已经超过上限,如果没超过则将要释放的审计缓冲区放入空闲缓冲区链表,否则,直接释放。[0122]4.用户管理工具在用户空间提供配置审计配置信息、搜索日志以及请求产生审计报告的管理工具,在一些实施例中,用户可以通过调用相应的命令如auditctl、ausearch、aureport等启动上述三种管理工具,即使用命令对审计系统进行配置、操作。ausearch命令基于不同搜索规则来查询后台日志;aureport命令用于产生审计日志的总结报告;auditctl命令用来设置审计规则,在系统启动的时候可以,读取配置文件中的规则,也能够增加或删除规则。[0123]审计系统中的用户线程auditd将符合规则和格式的审计信息从审计缓冲区中写入审计文件。[0124]本公开为了减少存储空间的消耗,从日志的生成、记录、清理等方面实现了空间开销的降低。具体体现在以下几个方面:1.设置缓冲区在日志系统和审计系统两部分,分别设置了日志缓冲区和审计缓冲区,并且设置了审计缓冲区链表,缓冲区的引入能够解决日志数据生成和文件写入的速度不匹配问题。[0125]2.降低对同一事件的记录频率将多个相同的事件合并在一个日志项中,同时以计数器的方式来记录事件的数量,当更多的事件组合在一个日志项中时,日志记录的开销就会降低。[0126]3.筛选和过滤审计事件在用户空间提供配置审计配置信息的工具,权限用户可以根据实际需求对需要审计的事件、格式等进行配置,审计系统提供相关函数,以便仅对用户实际需要审计的相关事件进行有条件的记录。[0127]4.分文件写或定期删除文件当日志文件或审计文件达到限定大小时,将新创建一个日志文件或审计并将新的日志内容或审计写入新的文件;当日志文件或审计文件数量达到设定阈值时,按照文件创建顺序的先后删除部分文件。[0128]本公开实施例通过设计和实现基于微内核操作系统的安全监控系统,记录和分析操作系统的运行时信息,来保证操作系统的安全。目前很少有微内核操作系统对安全审计模块进行相对完善的设计,本公开设计与实现了一个符合操作系统安全标准的基于微内核操作系统的安全监控系统,能够实时地记录操作系统运行时状态和信息,并在日志记录的基础上向管理者作出一定反馈,保证操作系统的安全性和可靠性;此外在日志信息较完善的基础之上,对系统运行状态和用户行为进行监控,并指出潜在的危害,同时,尽可能减少空间消耗。[0129]下述为本公开装置实施例,可以用于执行本公开方法实施例。[0130]图4示出根据本公开一实施方式的基于微内核操作系统的安全监控装置的结构框图。该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图4所示,该基于微内核操作系统的安全监控装置包括:响应模块401,被配置为响应于用户空间的执行对象对微内核操作系统中的系统调用接口的调用请求,在内核空间将所述调用请求对应的系统调用事件类型与预先配置的审计配置信息进行匹配;记录模块402,被配置为在所述系统调用事件类型与所述审计配置信息相匹配时,将所述系统调用接口进入内核空间运行时的入口审计信息记录在所述执行对象的审计上下文结构中,并将所述系统调用接口退出时的出口审计信息也记录在所述执行对象的审计上下文结构中;第一输出模块403,被配置为在退出所述系统调用接口时将所述审计上下文结构中的入口审计信息和出口审计信息从所述内核空间输出至用户空间的审计缓冲区。[0131]本实施例中,对于微内核操作系统来说,内核部分被最大限度的简化。内核部分仅包括了最基本的ipc(进程间通信)机制、地址空间管理和调度机制等用于实现操作系统服务的基本功能,而在服务层面,比如设备驱动、文件系统、应用程序间通信等都将通过用户态服务程序的方式实现。当普通的应用程序需要操作系统的相关服务时,其需要通过发起进程间通信给相应的服务程序,由这些服务程序进行相关操作,必要时服务程序也会通过执行内核提供的系统调用接口陷入到内核态运行,以便完成一些基本的操作,并把结果再通过进程间通信反馈给应用程序。[0132]本公开实施例首先考虑应用场景为微内核操作系统,在微内核操作系统架构上增加了安全监控系统,并尽可能简化内核部分,将安全监控系统的功能作为用户空间服务程序来实现。[0133]本公开实施例中的安全监控系统至少包括审计系统。审计系统用于安全跟踪,并且审计系统的设计以尽可能最大化地简化内核为目标,将相关审计服务设计在用户空间。[0134]审计事件是系统审计用户动作的最小单位,审计事件的收集就是指一定安全级别审计标准下的审计事件的确立。从主体角度来说,系统需要记录用户进行的所有活动,从客体角度来说,系统要记录某一客体的所有存取活动。[0135]审计事件可主要分为系统调用类事件和用户可信事件,本公开实施例针对系统调用类事件作出了如下设计:系统调用类事件的主体为线程。系统调用类事件可以理解为用户空间的执行对象比如线程等对微内核操作系统所提供的系统调用接口的调用事件。因此,本公开实施例中,安全监控系统在检测到系统调用类事件,也即检测到用户空间的执行对象对系统调用接口的调用请求之后,可以利用本公开实施例针对系统调用类事件设计的审计系统进行审计信息的收集,并将审计信息输出至用户空间的日志文件中,以便后续相关权限用户基于日志文件对微内核操作系统的使用进行审计。[0136]本公开实施例在用户空间可以为相关权限用户提供配置审计配置信息的管理工具,该管理工具可以提供审计信息配置接口或者命令输入接口,相关权限用户可以通过该审计信息配置接口或者输入命令的方式,配置相应的审计规则,还可以配置审计信息的输出格式等。相关权限用户配置的审计配置信息可以存储在相应的存储文件中,以便后续由安全监控系统进行读取。[0137]本公开实施例中,安全监控系统可以通过编程实现,安全监控系统运行后,可以通过在用户空间启动一个或多个检测线程检测系统调用类事件。安全监控系统中的该一个或多个检测线程在检测到系统调用类事件之后,可以将该系统调用事件的类型与存储文件中审计配置信息中设定的规则进行匹配,如果当前检测到的系统调用类事件是相关权限用户预先配置的需要进行审计的内容相关的事件,也即当前系统调用事件类型与预先配置的审计配置信息相匹配时,将当前调用的系统调用接口进入内核态运行时的入口审计信息写入该执行对象对应的审计上下文结构中,而在该系统调用接口执行完成并退出时的出口审计信息也写入该执行对象对应的审计上下文结构中。[0138]该审计上下文结构可以在编程时,在执行对象的源代码中编写好,并且在安全监控系统运行后,该执行对象被创建时所建立,系统调用接口退出时,由安全监控系统运行后启动的一个或多个信息输出线程将相应的该上下文结构中的入口审计信息和出口审计信息从内核空间输出至用户空间的审计缓冲区中。该审计上下文结构则可以清空。[0139]在一些实施例中,审计上下文结构可以如下所示:structaudit_context{ꢀꢀꢀenumaudit_statestate;//审计状态ꢀꢀꢀunsignedintserial;//记录的序列号ꢀꢀꢀstructtimespecctime;//系统调用进入的时间ꢀꢀꢀintmajor;//系统调用号ꢀꢀꢀunsignedlongargv[4];//系统调用参数ꢀꢀꢀlongreturn_code;//系统调用返回代码ꢀꢀꢀintauditable;//是否已被写入审计缓冲区的标志}。[0140]其中,入口审计信息和出口审计信息可以基于审计上下文结构而定,也即审计上下文结构中预先定义了入口审计信息和出口审计信息分别包括哪些。如上文中的审计上下文结构所示,入口审计信息可以包括但不限于审计上下文结构中的审计状态、序列号、系统调用进入时间、系统调用号、系统调用参数等;出口审计信息可以包括但不限于系统调用返回代码和审计上下文结构中的内容是否输出至审计缓冲区的标志等。在一些实施例中,用户空间的审计缓冲区可以在安全监控系统初始化时创建,并且由安全监控系统初始化时启动的读写线程对该审计缓冲区进行读写操作。[0141]本公开实施例设计和实现了基于微内核操作系统的安全监控方案,通过记录和分析操作系统的运行时信息,来保证操作系统安全。已有技术中,少有针对微内核操作系统设计完善的安全审计方案,而本公开实施例设计与实现了符合操作系统安全标准的基于微内核操作系统的安全监控方案,并利用该安全监控方案实时地记录操作系统运行时的状态和信息。本公开实施例通过在用户空间提供配置审计规则服务,权限用户根据需求对需要进行审计的事件、格式等做配置,内核系统运行过程中仅针对权限用户所配置的相关事件进行有条件的记录,在尽可能最大化简化内核的前提下对操作系统进行安全监控。[0142]在本实施例的一个可选实现方式中,所述装置还包括:第一写入模块,被配置为在所述调用请求对应的系统调用事件类型与所述审计配置信息不相匹配时,将所述系统调用接口在内核空间执行过程中所产生的第一内核态日志信息写入用户空间的日志缓冲区中。[0143]该可选的实现方式中,如果当前调用的系统调用接口对应的系统调用事件类型与权限用户优选配置的审计配置信息不相匹配,则说明当前系统调用涉及的内容不是权限用户关心的审计信息,因此可以不产生相关的审计信息。然而,为了后续查看需要,可以将相关的日志信息写入用户空间的日志缓冲区。在一些实施例中,可以由安全监控系统运行后启动的日志输出线程将相关的日志信息写入用户空间的日志缓冲区。[0144]也就是说,在安全监控系统初始化时,可以在用户空间建立审计缓冲区和日志缓冲区,对于微内核操作系统中的系统调用类事件,如果权限用户没有预先配置需要对当前的系统调用类事件相关的审计信息进行审计,则日志输出线程还可以将当前的系统调用类事件相关的第一内核态日志信息写入日志缓冲区。需要说明的是,相关的第一内核态日志信息可以包括但不限于系统调用类事件的开始时间、结束时间、运行过程中对微内核操作系统的修改操作等相关日志。在微内核操作系统中可以专门设置一日志输出线程,专门将内核空间运行的程序的相关日志写入到用户空间的日志缓冲区中。[0145]在本实施例的一个可选实现方式中,所述装置还包括:第二写入模块,被配置为将用户空间产生的用户态日志信息写入所述日志缓冲区中;和/或,第三写入模块,被配置为将内核空间产生的第二内核态日志信息写入所述日志缓冲区中;其中,所述第二内核态日志信息为非系统调用接口在内核空间产生的日志信息。[0146]该可选的实现方式中,日志缓冲区中还可以记录用户空间产生的用户态日志信息,并且内核空间产生的第二内核态日志信息也可以写入日志缓冲区中。本实施中为了能够区分在内核空间中系统调用类事件产生的日志信息以及其他情况下产生的日志信息,将系统调用类事件产生的日志信息称之为第一内核态日志信息,而其他情况下产生的日志信息称之为第二内核态日志信息。在一些实施例中,可以由安全监控系统初始化时建立的日志输出线程将第一内核态日志信息写入日志缓冲区。可以理解的是,第一内核态日志信息和第二内核态日志信息可以由相同的日志输出线程处理,也可以由不同的日志输出线程来处理。[0147]在一些实施例中,用户空间的用户态日志信息可以包括但不限于运行在用户空间的应用软件运行日志、在用户空间对配置信息的修改记录等;第一内核态日志信息或第二内核态日志信息可以包括但不限于微内核操作系统的运行记录、微内核操作系统中的报警提示记录、用户线程对微内核操作系统的操作日志记录、用户线程在微内核操作系统中的行为记录等。[0148]内核空间产生的第一内核态日志信息和第二内核态日志信息可以由专门设置的日志输出线程将日志信息从内核空间输出至用户空间的日志缓冲区中。用户空间产生的日志信息可以由相应的线程写入用户空间的日志缓冲区中。在一些实施例中,该相应的线程可以是安全监控系统运行后启动的。[0149]在本实施例的一个可选实现方式中,所述装置还包括:第一读取模块,被配置为在用户空间读取所述日志缓冲区中的日志信息;第一调用模块,被配置为调用文件系统接口将所述日志缓冲区中的所述日志信息输出至控制台或日志文件中。[0150]该可选的实现方式中,日志信息记录在用户空间建立的日志缓冲区中,安全监控系统可以在运行后启动日志读取线程,在日志缓冲区满了或者定期,可以由日志读取线程将日志缓冲区中的日志信息写入日志文件中。写入日志文件的过程可以在用户空间进行,该日志读取线程可以在用户空间通过调用文件系统接口将日志信息从日志缓冲区写入日志文件。在另一些实施例中,日志缓冲区中的日志信息也可以由日志读取线程通过调用文件系统接口直接输出到控制台,存储在控制台上的存储设备,和/或显示在控制台上的显示器,供相关人员查看。[0151]在本实施例的一个可选实现方式中,所述装置还包括:获取模块,被配置为获取用户空间产生的用户空间审计信息;匹配模块,被配置为将所述用户空间审计信息与所述审计配置信息进行匹配;第四写入模块,被配置为在所述用户空间审计信息与所述审计配置信息相匹配时,将所述用户空间审计信息写入所述审计缓冲区中。[0152]该可选的实现方式中,用户空间也会产生一些权限用户想要审计的信息,权限用户可以针对用户空间也预先配置审计配置信息,将想要审计的事件类型和/或信息类型配置在审计配置信息中,用户空间产生用户空间审计信息后,可以由安全监控系统运行后启动的审计匹配线程与审计配置信息进行匹配,如果相匹配则将其写入审计缓冲区中,如果不相匹配则可以不写入审计缓冲区,而是由相关的日志线程写入日志缓冲区中。[0153]在本实施例的一个可选实现方式中,所述装置还包括:第一接收模块,被配置为接收用户在用户空间通过预设接口输入的用户配置信息;更新模块,被配置为基于所述用户配置信息更新在用户空间存储的所述审计配置信息。[0154]该可选的实现方式中,权限用户可以通过用户空间预先设定的接口输入用户配置信息,该用户配置信息可以用于更新用户空间中预先存储的审计配置信息。通过这种方式,权限用户可以在用户空间预先配置审计配置信息,还可以后续对审计配置信息进行修改等编辑操作。安全监控系统运行后,可以提供供用户输入用户配置信息的接口,通过该接口,安全监控系统可以接收用户输入的用户配置信息,并将接收到的用户配置信息更新至配置信息的存储文件中。[0155]在本实施例的一个可选实现方式中,所述装置还包括:第二接收模块,被配置为接收用户在用户空间对日志文件的查看请求;第二输出模块,被配置为基于所述查看请求向用户输出所述日志文件。[0156]该可选的实现方式中,日志文件可以存储在用户空间,用户可以通过安全监控系统提供的查看接口在用户空间请求查看日志文件,该查看接口接收到用户的请求后,可以通过调用文件系统接口将该日志文件输出给用户,例如可以打开该日志文件,并显示在用户的显示设备上。[0157]在本实施例的一个可选实现方式中,所述装置还包括:第二读取模块,被配置为在用户空间读取所述审计缓冲区中的审计信息;第二调用模块,被配置为调用文件系统接口将所述审计缓存区中的所述审计信息输出至审计文件中。[0158]该可选的实现方式中,用户空间和内核空间的审计信息均记录在用户空间建立的审计缓冲区中,安全监控系统可以在运行后启动审计读取线程,在审计缓冲区满了或者定期,可以由审计读取线程将审计缓冲区中的审计信息写入审计文件中。写入审计文件的过程可以在用户空间进行,审计读取线程在用户空间通过调用文件系统接口将审计信息从审计缓冲区写入审计文件。在另一些实施例中,审计缓冲区中的审计信息也可以由审计读取线程通过调用文件系统接口直接输出到控制台,存储在控制台上的存储设备,和/或显示在控制台上的显示器,供相关人员查看。[0159]在本实施例的一个可选实现方式中,所述装置还包括:第三接收模块,被配置为接收用户在用户空间对所述审计文件的查看请求;第三输出模块,被配置为基于所述审计文件中的审计信息向用户输出审计报告。[0160]该可选的实现方式中,审计信息被写入审计文件后,权限用户查看审计文件时,可以基于预先配置好的审计规则将审计信息生成为审计报告的形式,输出给权限用户。安全监控系统还可以为用户提供查看审计文件的查看接口,该查看接口接收到用户的请求后,可以在确定当前用户有权限的情况下将审计报告输出给该用户。[0161]在本实施例的一个可选实现方式中,所述装置还包括:设置模块,被配置为在用户空间设置审计缓冲区链表;所述审计缓冲区链表用于存储指向所述审计缓冲区的指针;所述第二调用模块,包括:调用子模块,被配置为在所述审计缓冲区链表中的指针个数超过预设阈值后,在用户空间基于所述审计缓冲区链表中的指针,调用文件系统接口将所述审计缓冲区中的审计信息输出至所述审计文件中;删除子模块,被配置为删除所述审计缓冲区链表中对应的指针。[0162]该可选的实现方式中,可以在安全监控系统初始化过程中,在用户空间创建审计缓冲区链表,该审计缓冲区链表中存储指向审计缓冲区的指针。也就是说,在用户空间可以创建多个审计缓冲区,并且每个审计缓冲区的指针可以存储在审计缓冲区链表中。预先可以设置在审计缓冲区链表中最多能够存储的审计缓冲区的指针个数,该最多个数用预设阈值来表示。在审计缓冲区链表中的指针个数超过该预设阈值后,可以启动将审计缓冲区中的审计信息写入审计文件的进程,由该进程将审计缓冲区链表中存储的指针指向的审计缓冲区中的审计信息写入审计文件,审计信息成功写入审计文件的审计缓冲区的指针可以从审计缓冲区链表中删除。[0163]在本实施例的一个可选实现方式中,用户空间的审计缓冲区和/或日志缓冲区采用双缓冲区模式。[0164]该可选的实现方式中,为减少系统调用次数,从而降低操作系统在用户态与核心态切换所耗费的时间,本公开实施例在用户空间维护了审计缓冲区以及日志缓冲区,日志信息以及审计信息分别按照统一的格式写入到日志缓冲区和审计缓冲区中,用户空间的日志读取线程和审计读取线程分别负责监听和读取日志缓冲区和审计缓冲区的信息,并写入到日志文件和审计文件中。而在内核空间,日志输出线程将内核的日志信息写入到用户空间的日志缓冲区中,而审计输出线程将内核态的审计信息写入用户空间的审计缓冲区中。[0165]缓冲区的设置主要是为了解决日志信息或审计信息的产生以及读取的速率不匹配问题,除了速率不匹配问题,在本公开实施例的场景中,读取缓冲区和写入缓冲区的操作往往伴随着读写线程带来的安全问题。为此,本公开实施例采用双缓冲模式设计用户空间的日志缓冲区和审计缓冲区。[0166]数组在物理存储上是一维的连续线性结构,一次性分配能够避免频繁的内存申请和释放,且访问效率较高,故本公开实施例采用数组形式的双缓冲区。[0167]如图2所示,审计缓冲区实现为两个缓冲区buff_1和buff_2,buff_1用于当前的写线程也即审计输出线程存放审计信息,当审计缓冲区buff_1满的时候触发调换操作将审计缓冲区buff_1中的内容调换到审计缓冲区buff_2中,再由读线程也即审计读取线程从审计缓冲区buff_2中读取数据,写入到审计文件中。同理,日志缓冲区也可以实现为两个缓冲区buff_1和buff_2,buff_1用于当前的写线程也即日志输出线程存放日志信息,当审计缓冲区buff_1满的时候触发调换操作将日志缓冲区buff_1中的内容调换到日志缓冲区buff_2中,再由读线程也即日志读取线程从日志缓冲区buff_2中读取数据,写入到日志文件中。[0168]在本实施例的一个可选实现方式中,在审计缓冲区的双缓冲模式下,当前写审计信息的第一审计缓冲区写满后,调换第一审计缓冲区和第二审计缓冲区的地址,使得内核态的审计输出线程写审计信息的缓冲区指针从用户空间的所述第一审计缓冲区的地址切换至指向第二审计缓冲区的地址,而审计读取线程读取审计信息的缓冲区指针指向所述第一审计缓冲区的地址。[0169]该可选的实现方式中,在对两个审计缓冲区进行调换时,由于需要对两个审计缓冲区分别进行上锁,缓冲区内容的复制算法会导致上锁的时间较长,影响整体的性能。因此,本公开实施例在进行缓冲区调换操作时,直接交换两个审计缓冲区的地址,将审计输出线程在执行写操作时指向审计缓冲区buff_1的指针指向审计缓冲区buff_2,将审计读取线程在执行读操作时指向buff_2的指针指向buff_1,再进行后续的读写操作,达到交换缓冲区的目的,此时在临界区内的操作只有交换指针,所以执行速度较快。双缓冲区模式的设计只需要保证有一个缓冲区能够进行数据的写入,有一个缓冲区能够进行数据的读取即可,这样内核态的审计输出线程在向缓冲区写入的时候,不会因为用户态的执行速度慢而阻塞内核态的审计输出线程的执行,进一步提高了内核态的处理效率。[0170]本公开实施例中不需要建立大缓冲区,而是设置数组形式的双缓冲区,将读写操作所用到的缓冲区分开,设计成两个缓冲区,能够避免对同一缓冲区上锁时间较长导致的线程阻塞。同时数组形式的缓冲区是一次性分配,能够避免频繁的内存分配和释放。[0171]在本实施例的一个可选实现方式中,在日志缓冲区的双缓冲模式下,当前写日志信息的第一日志缓冲区写满后,调换第一日志缓冲区和第二日志缓冲区的地址,使得内核态的日志输出线程写日志信息的缓冲区指针从用户空间的所述第一日志缓冲区的地址切换至指向第二日志缓冲区的地址,而日志读取线程读取日志信息的缓冲区指针指向所述第一日志缓冲区的地址。[0172]该可选的实现方式中,在对两个日志缓冲区进行调换时,由于需要对两个日志缓冲区分别进行上锁,缓冲区内容的复制算法会导致上锁的时间较长,影响整体的性能。因此,本公开实施例在进行缓冲区调换操作时,直接交换两个日志缓冲区的地址,将日志输出线程在执行写操作时指向日志缓冲区buff_1的指针指向日志缓冲区buff_2,将日志读取线程在执行读操作时指向buff_2的指针指向buff_1,再进行后续的读写操作,达到交换缓冲区的目的,此时在临界区内的操作只有交换指针,所以执行速度较快。双缓冲区模式的设计只需要保证有一个缓冲区能够进行数据的写入,有一个缓冲区能够进行数据的读取即可,这样内核态的日志输出线程在向缓冲区写入的时候,不会因为用户态的执行速度慢而阻塞内核态的日志输出线程的执行,进一步提高了内核态的处理效率。[0173]在本实施例的一个可选实现方式中,所述装置还包括:第一建立模块,被配置为建立空闲的审计缓冲区;存储模块,被配置为将指向所述空闲的审计缓冲区的指针存储在空闲审计缓冲区链表中;所述第一输出模块,包括:请求子模块,被配置为从所述空闲审计缓冲区链表中请求空闲的审计缓冲区;写入子模块,被配置为将所述审计上下文结构中的审计信息写入空闲的所述审计缓冲区中。[0174]该可选的实现方式中,安全监控系统在初始化时,可以预先建立多个空闲的审计缓冲区,并将空闲的审计缓冲区的指针存储在空闲审计缓冲区链表中。在内核空间的系统调用接口退出时,需要将调用该系统调用接口的执行对象的审计上下文结构中的审计信息从内核空间输出到用户空间时,可以由审计输出线程从该空闲审计缓冲区链表中请求一个空闲的审计缓冲区,并将审计上下文结构中的审计信息写入该空闲的审计缓冲区中。[0175]需要说明的是,可以由相应的审计输出线程将写入审计信息的审计缓冲区的指针从空闲审计缓冲区链表中取出后,写入非空闲审计缓冲区链表中,而空闲审计缓冲区链表中的指向该审计缓冲区的执行可以删除。[0176]在本实施例的一个可选实现方式中,所述装置还包括:分配模块,被配置为在所述空闲审计缓冲区链表中没有空闲的审计缓冲区时,重新分配审计缓冲区;第五写入模块,被配置为将所述审计上下文结构中的审计信息写入重新分配的所述审计缓冲区中。[0177]该可选的实现方式中,可以由审计输出线程将创建的空闲审计缓冲区的指针写入审计缓冲区链表中,在内核空间的执行对象请求审计缓冲区时,审计输出线程还可以从审计缓冲区链表中到空闲的审计缓冲区,并将该执行对象的审计上下文结构中的审计信息写入该空闲的审计缓冲区中。[0178]如果该审计缓冲区链表中没有指向空闲的审计缓冲区的指针时,可以由审计输出线程重新为当前的执行对象分配新的审计缓冲区,并由相应的审计输出线程将该执行对象的审计上下文结构中的审计信息写入新的审计缓冲区中。[0179]在本实施例的一个可选实现方式中,所述装置还包括:第二建立模块,被配置为在所述审计文件中的内容超过预设存储容量后,建立新的审计文件;删除模块,被配置为在所述审计文件的个数超过预设数量后,按照时间先后顺序删除最先建立的一个或多个审计文件。[0180]该可选的实现方式中,审计信息可以由审计读取线程定期或者审计缓冲区写满之后写入审计文件中。审计文件在用户空间存储,并且可以预先在安全监控系统初始化时设定其存储容量,一个审计文件中存储的审计信息的大小超过该预设存储容量后,可以由安全监控系统运行后启动的文件建立线程建立一个新的审计文件,后续的审计信息可以写入该新的审计文件中。[0181]在一些实施例中,审计文件过多时,比如多于预设数量后,可以由安全监控系统运行后启动的文件删除线程按照审计文件建立的时间先后顺序,将最先建立的一个或多个审计文件删除,保留较新建立的几个审计文件。[0182]本公开实施例还提供一种芯片,所述芯片包括上述基于微内核操作系统的安全监控装置,所述芯片可以是任意一种可以实现上文描述的基于微内核操作系统的安全监控过程的芯片,所述装置可以通过软件、硬件或者两者的结合实现成为芯片的部分或者全部。基于微内核操作系统的安全监控过程可以参见上文中对基于微内核操作系统的安全监控方法的描述,在此不再赘述。[0183]本公开还公开了一种电子设备,图5示出根据本公开一实施方式的电子设备的结构框图,如图5所示,所述电子设备500包括存储器501和处理器502;其中,所述存储器501用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器502执行以实现上述方法步骤。[0184]图6是适于用来实现根据本公开一实施方式的基于微内核操作系统的安全监控方法的计算机系统的结构示意图。[0185]如图6所示,计算机系统600包括处理单元601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行上述实施方式中的各种处理。在ram603中,还存储有计算机系统600操作所需的各种程序和数据。处理单元601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。[0186]以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。其中,所述处理单元601可实现为cpu、gpu、tpu、fpga、npu等处理单元。[0187]特别地,根据本公开的实施方式,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行所述方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。[0188]附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。[0189]描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。[0190]作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。[0191]以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。当前第1页12当前第1页12
技术特征:
1.一种基于微内核操作系统的安全监控方法,其特征在于,包括:响应于用户空间的执行对象对微内核操作系统中的系统调用接口的调用请求,在内核空间将所述调用请求对应的系统调用事件类型与预先配置的审计配置信息进行匹配;在所述系统调用事件类型与所述审计配置信息相匹配时,将所述系统调用接口进入内核空间运行时的入口审计信息记录在所述执行对象的审计上下文结构中,并将所述系统调用接口退出时的出口审计信息也记录在所述执行对象的审计上下文结构中;在退出所述系统调用接口时将所述审计上下文结构中的入口审计信息和出口审计信息从所述内核空间输出至用户空间的审计缓冲区。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述调用请求对应的系统调用事件类型与所述审计配置信息不相匹配时,将所述系统调用接口在内核空间执行过程中所产生的第一内核态日志信息写入用户空间的日志缓冲区中。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:将用户空间产生的用户态日志信息写入所述日志缓冲区中;和/或,将内核空间产生的第二内核态日志信息写入所述日志缓冲区中;其中,所述第二内核态日志信息为非系统调用接口在内核空间产生的日志信息。4.根据权利要求2所述的方法,其特征在于,所述方法还包括:在用户空间读取所述日志缓冲区中的日志信息;调用文件系统接口将所述日志缓冲区中的所述日志信息输出至控制台或日志文件中。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取用户空间产生的用户空间审计信息;将所述用户空间审计信息与所述审计配置信息进行匹配;在所述用户空间审计信息与所述审计配置信息相匹配时,将所述用户空间审计信息写入所述审计缓冲区中。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:接收用户在用户空间通过预设接口输入的用户配置信息;基于所述用户配置信息更新在用户空间存储的所述审计配置信息。7.根据权利要求4所述的方法,其特征在于,所述方法还包括:接收用户在用户空间对日志文件的查看请求;基于所述查看请求向用户输出所述日志文件。8.根据权利要求1所述的方法,其特征在于,所述方法还包括:在用户空间读取所述审计缓冲区中的审计信息;调用文件系统接口将所述审计缓存区中的所述审计信息输出至审计文件中。9.根据权利要求8所述的方法,其特征在于,所述方法还包括:接收用户在用户空间对所述审计文件的查看请求;基于所述审计文件中的审计信息向用户输出审计报告。10.根据权利要求8或9所述的方法,其特征在于,所述方法还包括:在用户空间设置审计缓冲区链表;所述审计缓冲区链表用于存储指向所述审计缓冲区的指针;
调用文件系统接口将所述审计缓存区中的所述审计信息输出至审计文件中,包括:在所述审计缓冲区链表中的指针个数超过预设阈值后,在用户空间基于所述审计缓冲区链表中的指针,调用文件系统接口将所述审计缓冲区中的审计信息输出至所述审计文件中;删除所述审计缓冲区链表中对应的指针。11.根据权利要求1所述的方法,其特征在于,所述方法还包括:建立空闲的审计缓冲区;将指向所述空闲的审计缓冲区的指针存储在空闲审计缓冲区链表中;在退出所述系统调用接口时将所述审计上下文结构中的入口审计信息和出口审计信息从所述内核空间输出至用户空间的审计缓冲区,包括:从所述空闲审计缓冲区链表中请求空闲的审计缓冲区;将所述审计上下文结构中的审计信息写入空闲的所述审计缓冲区中。12.根据权利要求11所述的方法,其特征在于,所述方法还包括:在所述空闲审计缓冲区链表中没有空闲的审计缓冲区时,重新分配审计缓冲区;将所述审计上下文结构中的审计信息写入重新分配的所述审计缓冲区中。13.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述审计文件中的内容超过预设存储容量后,建立新的审计文件;在所述审计文件的个数超过预设数量后,按照时间先后顺序删除最先建立的一个或多个审计文件。14.一种基于微内核操作系统的安全监控装置,其特征在于,包括:响应模块,被配置为响应于用户空间的执行对象对微内核操作系统中的系统调用接口的调用请求,在内核空间将所述调用请求对应的系统调用事件类型与预先配置的审计配置信息进行匹配;记录模块,被配置为在所述系统调用事件类型与所述审计配置信息相匹配时,将所述系统调用接口进入内核空间运行时的入口审计信息记录在所述执行对象的审计上下文结构中,并将所述系统调用接口退出时的出口审计信息也记录在所述执行对象的审计上下文结构中;第一输出模块,被配置为在退出所述系统调用接口时将所述审计上下文结构中的入口审计信息和出口审计信息从所述内核空间输出至用户空间的审计缓冲区。15.根据权利要求14所述的装置,其特征在于,所述装置还包括:第一写入模块,被配置为在所述调用请求对应的系统调用事件类型与所述审计配置信息不相匹配时,将所述系统调用接口在内核空间执行过程中所产生的第一内核态日志信息写入用户空间的日志缓冲区中。16.根据权利要求15所述的装置,其特征在于,所述装置还包括:第二写入模块,被配置为将用户空间产生的用户态日志信息写入所述日志缓冲区中;和/或,第三写入模块,将内核空间产生的第二内核态日志信息写入所述日志缓冲区中;其中,所述第二内核态日志信息为非系统调用接口在内核空间产生的日志信息。17.根据权利要求15所述的装置,其特征在于,所述装置还包括:
第一读取模块,被配置为在用户空间读取所述日志缓冲区中的日志信息;第一调用模块,被配置为调用文件系统接口将所述日志缓冲区中的所述日志信息输出至控制台或日志文件中。18.根据权利要求14所述的装置,其特征在于,所述装置还包括:获取模块,被配置为获取用户空间产生的用户空间审计信息;匹配模块,被配置为将所述用户空间审计信息与所述审计配置信息进行匹配;第四写入模块,被配置为在所述用户空间审计信息与所述审计配置信息相匹配时,将所述用户空间审计信息写入所述审计缓冲区中。19.根据权利要求14所述的装置,其特征在于,所述装置还包括:第一接收模块,被配置为接收用户在用户空间通过预设接口输入的用户配置信息;更新模块,被配置为基于所述用户配置信息更新在用户空间存储的所述审计配置信息。20.根据权利要求18所述的装置,其特征在于,所述装置还包括:第二接收模块,被配置为接收用户在用户空间对日志文件的查看请求;第二输出模块,被配置为基于所述查看请求向用户输出所述日志文件。21.根据权利要求14所述的装置,其特征在于,所述装置还包括:第二读取模块,被配置为在用户空间读取所述审计缓冲区中的审计信息;第二调用模块,被配置为调用文件系统接口将所述审计缓存区中的所述审计信息输出至审计文件中。22.根据权利要求21所述的装置,其特征在于,所述装置还包括:第三接收模块,被配置为接收用户在用户空间对所述审计文件的查看请求;第三输出模块,被配置为基于所述审计文件中的审计信息向用户输出审计报告。23.根据权利要求21或22所述的装置,其特征在于,所述装置还包括:设置模块,被配置为在用户空间设置审计缓冲区链表;所述审计缓冲区链表用于存储指向所述审计缓冲区的指针;所述第二调用模块,包括:调用子模块,被配置为在所述审计缓冲区链表中的指针个数超过预设阈值后,在用户空间基于所述审计缓冲区链表中的指针,调用文件系统接口将所述审计缓冲区中的审计信息输出至所述审计文件中;删除子模块,被配置为删除所述审计缓冲区链表中对应的指针。24.根据权利要求14所述的装置,其特征在于,所述装置还包括:第一建立模块,被配置为建立空闲的审计缓冲区;存储模块,被配置为将指向所述空闲的审计缓冲区的指针存储在空闲审计缓冲区链表中;所述第一输出模块,包括:请求子模块,被配置为从所述空闲审计缓冲区链表中请求空闲的审计缓冲区;写入子模块,被配置为将所述审计上下文结构中的审计信息写入空闲的所述审计缓冲区中。25.根据权利要求24所述的装置,其特征在于,所述装置还包括:
分配模块,被配置为在所述空闲审计缓冲区链表中没有空闲的审计缓冲区时,重新分配审计缓冲区;第五写入模块,被配置为将所述审计上下文结构中的审计信息写入重新分配的所述审计缓冲区中。26.根据权利要求14所述的装置,其特征在于,所述装置还包括:第二建立模块,被配置为在所述审计文件中的内容超过预设存储容量后,建立新的审计文件;删除模块,被配置为在所述审计文件的个数超过预设数量后,按照时间先后顺序删除最先建立的一个或多个审计文件。27.一种电子设备,其特征在于,包括存储、处理器以及存储在存储器上的计算机程序,其中,所述处理器执行所述计算机程序以实现权利要求1-13任一项所述的方法。28.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1-13任一项所述的方法。29.一种芯片,用于执行指令,该指令被所述芯片执行以实现权利要求1-13任一项所述的方法步骤。
技术总结
本公开实施例公开了一种基于微内核操作系统的安全监控方法、装置、设备及芯片,所述方法包括:响应于用户空间的执行对象对微内核操作系统中的系统调用接口的调用请求,在内核空间将调用请求对应的系统调用事件类型与预先配置的审计配置信息进行匹配;在系统调用事件类型与审计配置信息相匹配时,将系统调用接口进入内核空间运行时的入口审计信息记录在执行对象的审计上下文结构,并在系统调用接口退出时的出口审计信息也记录在执行对象的审计上下文结构;在退出系统调用接口时将审计上下文结构中的入口审计信息和出口审计信息从所述内核空间输出至用户空间的审计缓冲区。该技术方案能够在尽可能最大化简化内核的前提下对操作系统进行安全监控。对操作系统进行安全监控。对操作系统进行安全监控。
技术研发人员:
赵东艳 王慧 王喆 曾林 李德建 顿中强
受保护的技术使用者:
北京智芯微电子科技有限公司
技术研发日:
2023.02.10
技术公布日:
2023/3/10