一种防止文件被篡改的系统和方法

文档序号:6378583阅读:444来源:国知局

专利名称::一种防止文件被篡改的系统和方法
技术领域
:本发明涉及信息安全
技术领域
,具体涉及一种监测单元及方法、以及防止文件被篡改的系统及方法。
背景技术
:随着计算机和网络技术的不断发展,越来越多的应用基于网络来提供,网络应用的安全性日益重要。越来越多的黑客看中了网络应用的市场价值而力图侵入网络应用服务器来获取各种信息,从而从中获利。网络应用服务器中的文件安全性也日益重要,很多黑客会篡改服务器中的文件,·在文件中写入非法信息、植入木马等等,从而使得利用服务器应用的用户受到损失。如何保护网络应用服务器中的文件安全是信息安全领域重要的挑战。现有的对网络应用服务器中的文件系统的访问控制主要是通过设置文件权限来实现,例如仅仅具有某个权限的用户才可以修改文件。但是,如果黑客获取了最高(root)权限,则通过该方法限制文件访问就会失效。另外,还有一种防止文件被篡改的方式,其通过定期来监控目标文件或者目录,如果发现目标文件或者目录被黑客修改或者删除,就利用事前备份好的文件和目录来恢复所修改的内容,这样即使文件和目录被修改了,也可以及时恢复。但是这种方式存在如下缺点总是需要为要保护的内容做备份,在发生篡改行为时总是需要做以恢复为目的的内容同步,并且如果监控不及时,会存在被篡改内容暂时未被恢复的情况。这时,如果用户访问了被篡改内容的文件或目录,就会得到一些恶意的内容,从而导致用户受到损失。另外,如果采用不间断地轮询服务器上的文件,如果被保护的文件数量巨大,势必会影响硬件设备的性能,造成网络应用服务器的访问速度降低。
发明内容鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的监测单元及方法、以及防止文件被篡改的系统及方法。依据本发明的一个方面,提供了一种监测单元,其加载于操作系统的内核空间中,包括截获模块,适于在与系统调用相对应的核心操作被执行之前截获所述系统调用;判断模块,适于判断所述系统调用是否合法;告警模块,其在所述判断模块判断该系统调用非法时,拒绝该系统调用并生成告警信息;恢复模块,其在所述判断模块判断该系统调用合法时,允许该系统调用,恢复该系统调用的执行。其中,所述核心操作为各种与文件相关的操作,以及所述系统调用为各种与文件操作相关的系统调用。可选地,所述判断模块包括配置信息,所述配置信息包括一个或者多个配置项,每个配置项包括所述系统调用涉及的文件的文件信息和/或发起该系统调用的应用的应用信息。其中所述判断模块根据所述配置信息来判断该系统调用是否合法。可选地,所述文件信息包括文件的路径信息和/或名称,所述应用信息包括所述应用在操作系统中的唯一标识号。根据本发明的另一方面,提供了一种防止文件被篡改的系统,其安置在计算设备中,该计算设备具有操作系统,该操作系统包括提供核心操作的内核空间和提供各种应用的用户空间,该防止文件被篡改的系统包括位于内核空间中的如前所述的监测单元;位于用户空间中的监测客户端和多个应用,其中所述监测客户端适于与所述监测单元进行通信;以及位于用户空间和内核空间之间的系统调用接口,位于用户空间中的所述多个应用分别通过该系统调用接口与所述监测单元连接。其中,位于用户空间中的多个应用分别通过系统调用接口向内核空间的核操作发起系统调用请求,所述监测单元监测所述系统调用请求。可选地,本发明的防止文件被篡改的系统还包括虚拟模块,其设置于内核空间中,加载于监测单元之后,在表示模块加载的单向链表中其指针指向监测单元的下一个模块,而不指向所述监测单元,从而使监测单元在单向链表中不可见。根据本发明的又一方面,提供了监测操作系统的监测方法,其中所述操作系统包括提供核心操作的内核空间和提供各种应用的用户空间,所述用户空间中的应用通过发·起系统调用来调用内核空间中提供的相应核心操作,所述核心操作为各种与文件相关的操作,以及所述系统调用为各种与文件操作相关的系统调用。所述监测方法包括在与系统调用相对应的核心操作被执行之前截获所述系统调用;判断所述系统调用是否合法,当其合法时允许该系统调用,否则拒绝该系统调用。根据本发明的再一方面,提供一种防止文件被篡改的方法,其在计算设备中执行,该计算设备具有操作系统,该操作系统包括提供核心操作的内核空间和提供各种应用的用户空间,该方法包括接收用户空间中的应用通过系统调用而对内核空间中提供的相应核心操作的调用;以及前面所述的监测方法中的步骤。可选地,在本发明的防止文件被篡改的方法中,在前面所述的监测方法中的步骤之后还包括步骤执行一虚拟操作,以使得在表示各操作加载的单向链表中该虚拟操作的指针指向前面所述监测方法执行的监测操作的下一个操作,而不指向所述监测操作,从而使所述监测操作在单向链表中不可见。根据本发明的监测单元、防止文件被篡改的系统和相应的方法可以即使在黑客获取了最高权限的情况下,也能防止其对文件和目录进行篡改,由此无需实时地轮询服务器上的文件,从而能够保证系统的性能不受影响。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中图I示出了包含根据本发明一个实施例的监测单元的防止文件被篡改的系统的示意框图;图2示出了根据本发明一个实施例的监测单元、监测客户端以及内核之间的交互关系;图3示出了根据本发明一个实施例的监测单元加载过程的示意图;图4示出根据本发明一个实施例的防止文件被篡改的系统的一个例子的示意图;以及图5示出了根据本发明一个实施例的监测方法的流程图。图6示出了根据本发明一个实施例的防止文件被篡改的方法的流程图。具体实施例方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。现代的计算机都通过配置操作系统来管理计算机系统的硬件、软件及数据资源、控制程序运行、改善人机界面、为其它应用提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便、有效、友善的服务界面。操作系统位于计算机系统的底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。操作系统的最内核最基础的构件是内核。内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用的(systemcall)的接口呈现给用户。采用系统调用的根本原因是为了对计算机系统赖以运行的资料进行保护。操作系统运行的内存空间划分为操作系统内核运行的空间即内核空间,以及各种应用运行的空间即用户空间,它们分别运行在内核态和用户态两种运行级别中,逻辑上相互隔离。操作系统为了保护自己不被普通程序破坏,对内核空间进行了一些定义,比如访问权限、换入换出、优先级等等。也就是说,内核空间只允许内核访问,各种应用在通常情况下不允许访问内核空间,即不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用内核函数。如果用户空间的应用要访问内核空间,获得系统服务(即调用系统程序),必须经过系统调用,系统调用规定了每一应用进入内核的具体位置,换句话说,用户访问内核的路径是事先规定好的,只能从规定位置进入内核,而不准许肆意跳入内核,这样可以保证内核安全。因此,从逻辑上来说,系统调用可被看成是内核与用户空间的应用交互的接口,系统调用将执行应用的请求传达给内核空间的内核,调用相应的内核函数完成所需的处理,待内核把请求处理完毕后,再将处理结果送回给应用。例如,用户可以通过文件系统相关的系统调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或者设置定时器等。然而,在操作系统运行期间,黑客可能会获得应用访问内核空间的访问权限,从而或者获得各种信息而从中获利,或者在文件中写入非法信息、植入木马等而使用户在访问内核空间时得到一些恶意的内容,导致用户蒙受损失。为此,本发明提供一种监测操作系统的监测单元。如图I所示,根据本发明的一个实施例的监测单元130加载于操作系统的内核空间102中,包括截获模块1310、判断模块1320、告警模块1330、以及恢复模块1340。为了说明方便,图I中还示出了操作系统的用户空间101和内核空间102,位于用户空间101中的监测客户端110和各种应用115,以及位于用户空间101和内核空间102之间的系统调用接口120。用户在与各种应用115进行交互时,应用115通过系统调用接口120向内核空间发送系统调用。但是,在内核空间中与该系统调用对应的核心操作被执行之前,监测单元130的截获模块1310截获该系统调用,然后,将所截获的系统调用传送至判断模块1320,由判断模块1320判断该系统调用是否合法。当判断该系统调用非法时,拒绝该系统调用,强制结束用户对内核空间的访问,以避免对内核资料的破坏,并让告警模块1330生成告警信息,将该告警信息传送至监测客户端110;当判断模块1320判断该系统调用合法时,则允许该系统调用,告知恢复模块1340恢复该系统调用的执行,由内核完成与该系统调用对应的核心操作,并向监测客户端110反馈信息从而完成该系统调用。这里,核心操作可以为各种与文件相关的操作,系统调用可以为各种与文件操作相关的系统调用。在图I所述的实施例中,截获模块1310和判断模块1320具体地可以通过钩子(HOOK)或钩子函数来实现。钩子是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子就先捕获该消息,亦即钩子先得到控制权。这时钩子即可以加工处理(例如改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。利用上述的钩子机制,截获模块1310截获应用115向内核空间102的内核发出的系统调用,判断模块1320根据该系统调用所涉及的文件信息和/或发起该系统调用的应用的应用信息来判断该系统调用是否合法。其中,系统调用所涉及的文件信息包括文件的路径信息和/或名称,应用信息包括应用在操作系统中的唯一标识号。判断模块1320包含配置信息,该配置信息包括一个或者多个配置项,每个配置项包括文件的文件信息和应用的唯一标识号。当系统调用所涉及的文件信息和/或发起该系统调用的应用的应用信息存在于所述配置信息的某一配置项中时,则判断模块1320判断该系统调用合法,如果不存在于所述配置信息的任一配置项中时,则判断模块1320判断该系统调用非法。可选地,判断模块1320的配置信息中的配置项还可以包括操作权限。当系统调用涉及的文件的文件信息以及发起该系统调用的应用的唯一标识号存在于所述配置信息的配置项中,但是该系统调用所需要的文件操作权限和所述配置项中的操作权限不匹配时,判断模块1320也判断该系统调用为非法。只有当系统调用涉及的文件的文件信息以及发起该系统调用的应用的唯一标识号存在于所述配置信息的配置项中,且该系统调用所需要的文件操作权限和所述配置项中的操作权限匹配时,判断模块1320才判断该系统调用为合法。下面以Linux操作系统为例,对本发明的采用钩子机制的监测单元130进行具体描述。在Linux的操作系统中,客户端程序访问应用程序接口API时调用的过程为INT0x80—系统调用(systemcall)—系统调用服务例程一内核程序这里的API其实就是系统提供的库函数。具体地,在Linux操作系统中,操作系统的内核被划分为用户空间和内核空间。用户空间的应用通过系统调用访问内核空间。在用户空间中设置有对文件或目录执行各种操作的命令,例如,touch,mkdir,rm,unlink,rmdir,mv,vim,vi,gedit,notepad,chmod,chown,cp等等。系统调用主要通过软中断指令INT0x80来实现操作系统的一些用户态与内核态的切换,这条指令被封装在库函数中。INT0x80指令的执行会让操作系统跳转到一个预设的内核空间地址,即,使操作系统从用户态进入内核态。这里的内核空间地址指向系统调用处理程序,即系统调用函数。在内核空间中,首先系统调用函数根据系统调用号找到中断向量表对应0x80的入口,获取对应的系统调用表sys_Call_table的地址,保存寄存器中当前CRO中的值,然后清空寄存器CRO中的16bit,记录原有的正确的系统调用接口,记为orig_sys_xxx。接下来用事先定义的与原来的系统调用接口具有相同类型的函数接口(记为new_sys_xxx)替换原有的入口。监测单元130利用钩子机制监控的对象主要包括应用想要访问的文件的路径和应用的PID。这里PID是服务器中每个应用的唯一标识号。通过限定应用访问的文件的路径和应用的PID,可以限定仅仅某个应用才可以对某个路径下的文件进行修改。当监测单元130进行监测时,其中的判断单元1320会基于从监测客户端110读取的路径白名单(即允许访问的路径和/或文件列表)和进程白名单(即允许进行操作的应用PID列表)的配置文件中的信息,在new_sys_xxx中做路径和PID检查,如果new_sys_xxx中的进程PID不存在进程白名单中或文件不存在于路径白名单的目录中,则判断该系统调用为非法操作,拒绝用户的这次系统调用,直接向监测客户端110返回禁用和/或告警信息;如果neW_SyS_XXX中的进程PID存在进程白名单序列中或文件存在于路径白名单的目录中,则判断该系统调用为合法操作,放行用户此次的系统调用,直接进入orig_syX_XXX,执行正常的系统调用对应的核心操作,然后再恢复寄存器CRO为之前保存的值。监测单元130所监测的系统调用可以包括SyS_rmdir(删除空目录从一个目录中删除一个或多个子目录项,一个目录被删除之前必须是空的)、sys_unlink、sys_open(设置文件的打开模式)、sys_write、sys_mkdir(创建一个新目录的系统调用)、sys_unlinkat、sys_rename>sys_openat>sys_fchmodat>sys_fchownat、sys_link>sys_symlink>sys_chown、sys_chmod(变更文件或目录的权限)。这些系统调用都涉及到操作系统的一些重要进程。因此,当用户空间的应用115对如上任何一文件进行系统调用时,监测单元130都要进行拦截,检测该系统调用是否合法,以防黑客等恶意篡改上述系统调用所涉及的内核中的程序,破坏操作系统。可选地,监测单元130还包括通信模块1350,该通信模块1350与用户空间101中的监测客户端Iio进行通信,监测单元130经通信模块1350读取监测客户端110中的配置文件并将其传送给判断模块1320,以及经通信模块1350将告警模块1330生成的告警信息传送至监测客户端110。例如,通信模块1350可以利用netlink来实现监测客户端110与内核空间102之间的交互。当监测单元130加载成功、且监测客户端110启动时,监测单元130与监测客户端110之间会建立netlink通信连接,该通信连接承载的通信内容包括监测单元130在初始加载和收到来自监测客户端110的读取其中的更新配置文件的指令时,会从监测客户端110读取包含进程白名单配置文件和路径白名单配置文件的配置文件,这里的进程白名单配置文件包含合法的进程(即应用)列表,例如可以是应用的PID列表,这些应用会通过监测单元的监测,而不被当成垃圾被拒收;路径白名单配置文件包含合法的路径和/或文件列表,这些路径也会通过监测单元的监测,而不会被当成垃圾被拒绝访问,这样可以大大提高安全性和快捷性。另外,该通信模块1350与用户空间101中的监测客户端110之间的通信连接承载的通信内容还可以包括告警单元1330发出的告警信息也通过netlink发送给监测客户端110。还有,通过该通信连接,监测客户端110对监测单元130可以做定时心跳检测,以检测监测单元130是否处于正常工作状态。另外,本发明还提供一种防止文件被篡改的系统100,如图I所示,该系统100安置在计算设备中,所述计算设备例如可以为计算机等。计算设备具有操作系统,该操作系统包括提供核心操作的内核空间101和提供各种应用的用户空间102,核心操作在内核空间的内核中执行。本发明的防止文件被篡改的系统100包括如上所述的位于内核空间102中的监测单元130、位于用户空间101中的监测客户端110和各种应用115、以及位于用户空间101和内核空间102之间的系统调用接口120。用户空间101中的各种应用115分别通过系统调用接口120与监测单元130连接,内核空间102中的监测单元130和用户空间101中的监测客户端110二者之间进行通信,例如通过netlink通信方式来实现二者的通信连接。下面通过图2来举例说明用户空间的应用115和监测客户端110、内核空间102的监测单元130以及内核170之间的交互关系及各部件所执行的功能。如图2所示,在监测客户端110存储有包含进程白名单与路径白名单的配置文件,该配置文件会进行更新。进程白名单包含有关允许进行操作的应用的应用列表。路径白名单包含允许访问的路径和/或文件列表。在Cl,监测单元130成功加载在内核空间,在这种情形下,监测客户端110执行Al的功能,即,监测客户端110启动,并向监测单元130发送建立TCP连接的握手消息,请求与监测单元130建立netlink连接。监测单元130接收到监测客户端110发送的建立netlink连接的请求后,在C2,向监测客户端110发送建立netlink连接的反馈信息,由此,在A2,二者之间完成netlink通信连接。在监测客户端110和监测单元130建立起netlink通信连接后,在A3,当监测客户端110中的配置文件更新时,监测客户端110会通过该netlink通信连接向监测单元130发布重新读取配置文件的指令。相应地,在C3,当监测单元130收到监测客户端110发送的重新读取配置文件的指令时,会通过该netlink通信连接从监测客户端110读取更新的配置文件。另外,图2中还示出了当用户空间的应用115向内核空间发起系统调用的请求(如BI所示)时,监测单元130执行C4、C5、C6的功能,即在C4,拦截该系统调用,检测判断其是否合法,具体判断方式参照前面关于判断模块1320的有关描述。在C6,当监测单元130判断该系统调用非法时,会通过该netlink通信连接向监测客户端110发送告警信息。而监测客户端110相应地执行A4的功能,将告警信息做分类收集,保存在数据库中以例如在监测客户端110网页上显示。另一方面,在C5,当监测单元130判断该系统调用合法时,则放行该系统调用,从而内核170执行Dl的功能,即执行与该系统调用对应的核心操作。另外,图2中还示了监测客户端110每隔一定时间向监测单元130发送心跳检测包(如A5所示),通过该netlink通信连接去连接监测单元130,而监测单元130则会向监测客户端110发送相应的反馈信息(如C7所示),以证明自己的存在。由此可以监测单元130是否存在,是否处于正常工作状态,以便在监测单元130出现异常、或被黑客等卸载或破坏的情况下,监测客户端110侧能及时获知情况。可选地,本发明的上述防止文件被篡改的系统100还可以包括虚拟(dummy)模块150,该虚拟模块150设置于内核空间102中,与监测单元130连接,适于使监测单元130隐藏而在他人查询当前的操作系统时无法看到操作系统中加载了监测单元130,从而可以防止黑客在查询到当前的操作系统中加载了监测单元130后而将其卸载掉,因此能够进一步提高当前操作系统的安全性。例如,在类似于Iinux之类的操作系统中,可以通过Ismod等相似的命令,查询当前操作系统中所加载的模块。根据Iinux系统的原理,可以发现加载于内核空间102中的模块总是在一个单向链表的表头加入,这容易被黑客等查到新加载于内核空间102中的任何模块。为了防止黑客看到内核空间102中加载的监测单元130,在内核空间102中加载了监测单元130之后,在内核空间102中再加载一虚拟模块150,该虚拟模块150的作用是在单向链表中隐去它的下一指针欲指向的监测单元130。具体地,如图3所示,其示出了根据本发明一个实施例的监测单元的加载过程的示意图。在本发明中,模块的加载可以通过一个单向链表来反映,在单向链表中,每个模块通过指针而指向下一个模块。图3中第一行的单向链表示出了tl时刻当前系统实时加载的模块为模块A、模块B、以及在加载模块B之前加载的其它模块。第二行的单向链表示出了在随后的t2时刻当前系统实时加载了新的模块一监测单元130。第三行的单向链表示出了在随后的t3时刻当前系统实时加载了新的模块一虚拟模块150。第四行的单向链表示出了第三行的单向链表中虚拟模块150的指针所指向的下一模块为模块A而不是指向紧邻其的监测单元130,通过这样的方式,可以使得黑客等利用Ismod指令查询内核时无法看到当前系统所加载的监测单元130,从而使监测单元130不会被轻易卸载。下面再通过图4所示的一个例子进一步说明本发明。如图4所示,对于一个安全的内容管理服务器CMS400,内容发布源端410发布的内容是通过间接的方式(例如通过转发服务器420)同步到服务器430,服务器430例如可以为网络服务器Webserver或者文件传输服务器ftp-server。图4中示出了两种情形,一种情形是,在服务器430上的应用A为专门接收转发服务器420转发的内容发布源端410的同步内容的应用,应用A(标识号,例如进程号为PID-A)通过系统调用向操作系统的内核空间的内核发出请求,想要将从内容发布源端410收到的信息写入到目录DIR-A中,这时,位于内核空间中的监测单元130截取该请求,且根据从监测客户端读取的进程白名单配置文件,当其检测到进程白名单的配置文件中包含“允许PID-A写入目录DIR-A”这一进程时,确定该应用A的进程请求是合法的,则内核空间中的监测单元130对前述的PID-A写入目录DIR-A这一进程的写操作放行,在内核中执行将收到的信息写入到目录DIR-A中的写操作。而当应用A的客户端程序PID-A要求对目录DIR-A进行读操作时,内核空间的监测单元130截取该请求,且根据从监测客户端读取的进程白名单配置文件确定该请求是非法的,则拒绝客户端程序PID-A对目录DIR-A进行读操作的请求,在内核中不执行该读操作。图4中还示出了另一种情形。当另一个应用B试图读取目录DIR-A中的内容时,应用B(标识号,例如进程号为PID-B)通过系统调用向操作系统的内核空间的内核发出请求,想要从目录DIR-A中读取信息,这时,位于内核空间中的监测单元130截取该请求,且根据从监测客户端读取的进程白名单配置文件,当其检测到进程白名单配置文件中包含“允许PID-B对目录DIR-A做读操作”时,确定该应用B的进程请求合法,则对该读操作的进程放行,内核170执行该读操作;而当应用B对目录DIR-A执行写操作时,监测单元130根据从监测客户端读取的进程白名单配置文件确定该进程非法,则拒绝该进程,即内核不执行对DIR-A的写操作。由上述例子可以看到,即使黑客在提供文件服务的机器上做篡改文件、删除文件的操作,由于内核空间中的监测单元130会检测出黑客对该提供文件服务的机器的操作为非法操作,因此会拒绝该进程,从而可以防御黑客的行为,使其操作无法成功。而正常的文件发布是通过内容发布源端并利用专门的应用A来间接完成。下面结合图5详细说明根据本发明的一个实施例的监测操作系统的方法。图5示出了根据本发明的一个实施例的监测操作系统的监测方法的流程图。其中操作系统包括提供核心操作的内核空间和提供各种应用的用户空间。用户空间中的应用通过发起系统调用来调用内核空间中提供的相应核心操作。这里的核心操作为各种与文件相关的操作,以及系统调用为各种与文件操作相关的系统调用。如图5所示,本发明的监测方法始于步骤S505,在步骤S510,在用户空间的应用向内核空间中提供的相应的核心操作发起系统调用之后、但在该对应的核心操作被执行之前,截获该系统调用。然后在步骤S520中,判断该系统调用是否合法,当判断其合法时允许该系统调用,否则拒绝该系统调用。这样,在该系统调用对应的核心操作被执行之前,对其进行检测,可以防止黑客等利用该系统调用而侵入内核空间,修改或删除内核空间中的文件或者在其中植入木马等。在步骤S520中,具体地,根据系统调用涉及的文件信息和/或发起该系统调用的应用的应用信息来判断该系统调用是否合法。其中,系统调用涉及的文件信息包括文件的路径信息和/或名称,发起该系统调用的应用的应用信息包括该应用在操作系统中的唯一标识号。例如,当客户端的用户A想要读取目录DIR-A下的文件abcl23,这时根据文件abcl23能否被读取来判断用户A的读操作是否合法,如果文件abcl23不能被读取,那么判断用户A的读操作为非法,拒绝其系统调用;如果文件abcl23能被读取,那么判断用户的读操作为合法,则放行用户A对文件abcl23的读取行为,内核空间执行该读操作。进一步地,在内核空间中存储有配置信息,配置信息包括一个或多个配置项,每个配置项包括文件的文件信息和应用的唯一标识号。该配置信息是内核空间根据从监测客户端接收到的配置文件更新指令而从监测客户端读取并存储的。在这种情形下,当系统调用涉及的文件的文件信息以及发起该系统调用的应用的唯一标识号不存在于配置信息的任一个配置项中时,判断该系统调用为非法,否则判断该系统调用为合法。另外,上述内核空间中存储的配置信息所包含的配置项还可以包括操作权限。在这种情形下,当系统调用涉及的文件的文件信息以及发起该系统调用的应用的唯一标识号存在于配置信息的配置项中,但是该系统调用所需要的文件操作权限和所述配置项中的操作权限不匹配时,判断该系统调用为非法。只有当系统调用涉及的文件的文件信息以及发起该系统调用的应用的唯一标识号存在于配置文件的配置项中,而且该系统调用所需要的文件操作权限和所述配置项中的操作权限匹配时,判断该系统调用为合法。当在步骤S520中判断系统调用合法时,则放行该系统调用,进入步骤S540,在内核空间执行该系统调用对应的核心操作。而当在步骤S520中判断系统调用非法时,则进入步骤S530,拒绝该系统调用,生成告警信息并反馈给监测客户端,这样可以避免黑客等利用系统调用而破坏操作系统的内核空间中的内容。在执行完步骤S530或S540之后,可以直接进入结束步骤S555,可选地,在执行完步骤S530或S540之后,也可以执行步骤S550,接收监测客户端每隔一段时间发送的心跳检测,并向监测客户端发送相应的反馈信息,以告知客户端该内核空间的监测处于正常的工作状态,然后进入结束步骤S555。另外,想要说明的是,步骤S550不一定位于步骤S530或S540之后,其可以根据需要在任何时候被执行。在本发明提供的监测操作系统的监测方法中,内核空间从监测客户端读取文件、以及向监测客户端发送告警信息、心跳检测、监测客户端向内核空间发送读取配置文件的指令等都需要用户空间与内核空间之间建立通信连接,这可以通过例如netlink等方式来实现。另外,本发明还提供一种防文件被篡改的方法,如图6所示,其包括图5所示的监测方法的步骤,具体地,本发明的防文件被篡改的方法如于步骤S605,随后,在步骤S610中,接收用户空间中的应用通过系统调用而对内核空间中提供的相应核心操作的调用。之后,执行图5所示的监测方法的步骤即执行步骤S510,在与系统调用相对应的核心操作被执行之前截获所述系统调用;随后,执行步骤S520,判断所述系统调用是否合法,当判断该系统调用合法时,允许该系统调用,则执行步骤S540,在内核空间执行该系统调用对应的核心操作;当判断该系统调用非法时,则执行步骤S530,拒绝该系统调用,生成告警信息。在执行完步骤S530或S540之后,可以直接进入结束步骤S655。可选地,在执行完步骤S530或S540之后,也可以执行步骤S550,接收监测客户端每隔一段时间发送的心跳检测,并向监测客户端发送相应的反馈信息,以告知客户端该内核空间的监测处于正常的工作状态,然后进入结束步骤S655。另外,想要说明的是,步骤S550不一定位于步骤S530或S540之后,其可以根据需要在任何时候被执行。可选地,本发明的防文件被篡改的方法在步骤S530或S540之后还可以包括步骤S620,在该步骤S620中,执行一虚拟操作,其使得在表示各操作加载的单向链表中、该虚拟操作的指针指向前述监测操作(从步骤S510至S530或步骤S540,当存在步骤S550时,则也包括步骤S550)的下一个操作,而不指向所述监测操作,从而使所述监测操作在单向链表中不可见。关于单向链表的结构参见前面图3所示,其中的模块对应这里所述的操作。在步骤S620之后进入结束步骤S655。本发明通过钩子(HOOK)机制与文件和目录相关的系统调用来完成一些检查或者防护机制,防止用户的目录或者文件不被篡改。通过在钩子(HOOK)函数中读取用户空间的相应配置文件,检查应用标识号PID和操作路径信息,可以组合成多种不同的策略,使得仅仅来自特定应用标识号PID的应用才可以对特定目录下的文件和目录进行修改。这样,对于非正常的并且命中禁止规则的行为,直接可以在钩子函数中,通过不同的错误整数值返回给用户,在这种情况下,即使用户拥有最高(root)权限,在做相应操作的时候也会受限。而对于正常的系统调用,又可以通过正常的入口,做正常的放行。因此,利用本发明不会影响正常的用户操作,但绝对禁止非法的用户操作。另外,本发明还可以引入虚拟模块,以便隐去挂载于模块单向链表上的监测单元,防止监测单元被黑客等非法卸载。在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。权利要求1.一种防止文件被篡改的系统,其安置在计算设备中,该计算设备具有操作系统,该操作系统包括提供核心操作的内核空间和提供各种应用的用户空间,该防止文件被篡改的系统包括位于内核空间中的监测单元;位于用户空间中的监测客户端和多个应用,其中所述监测客户端适于与所述监测单元进行通信;以及位于用户空间和内核空间之间的系统调用接口,位于用户空间中的所述多个应用分别通过该系统调用接口与所述监测单元连接;其中,位于用户空间中的多个应用分别通过系统调用接口向内核空间的核操作发起系统调用请求,所述监测单元监测所述系统调用请求,以及该监测单元包括截获模块,适于在与系统调用相对应的核心操作被执行之前截获所述系统调用;判断模块,适于判断所述系统调用是否合法;告警模块,在所述判断模块判断该系统调用非法时,拒绝该系统调用并生成告警信息;以及恢复模块,在所述判断模块判断该系统调用合法时,允许该系统调用,恢复该系统调用的执行,其中,所述核心操作为各种与文件相关的操作,以及所述系统调用为各种与文件操作相关的系统调用。2.根据权利要求I所述的系统,其中,所述判断模块包括配置信息,所述配置信息包括一个或者多个配置项,每个配置项包括所述系统调用涉及的文件的文件信息和/或发起该系统调用的应用的应用信息,其中所述判断模块根据所述配置信息来判断该系统调用是否合法。3.根据权利要求2所述的系统,其中所述文件信息包括文件的路径信息和/或名称,所述应用信息包括所述应用在操作系统中的唯一标识号。4.根据权利要求2或3所述的系统,其中在所述配置信息中的每个配置项包括文件的文件信息和应用的唯一标识号的情形下,当所述系统调用涉及的文件的文件信息以及发起该系统调用的应用的唯一标识号不存在于所述配置信息的任一个配置项中时,所述判断模块判断该系统调用为非法。5.根据权利要求4所述的系统,其中每个配置项还包括操作权限;当所述系统调用涉及的文件的文件信息以及发起该系统调用的应用的唯一标识号存在于所述配置信息的配置项中,但是该系统调用所需要的文件操作权限和所述配置项中的操作权限不匹配时,所述判断模块判断该系统调用为非法。6.根据权利要求4或5所述的系统,其中监测单元还包括通信模块,其与所述用户空间的监测客户端进行通信,读取所述监测客户端中的配置信息并将其传送给判断模块,以及将告警模块生成的告警信息传送至所述监测客户端。7.根据权利要求1-6中任一个所述的系统,其中,所述监测客户端通过对所述监测单元做定时心跳检测而检测所述监测单元是否正常工作。8.根据权利要求1-7中任一个所述的系统,其中,所述监测客户端处的配置信息存储在配置文件中;所述配置文件包括有关允许进行操作的进程列表的配置文件和有关允许访问的路径和/或文件列表的配置文件。9.根据权利要求1-8中任一项所述的系统,还包括虚拟模块,其设置于内核空间中,加载于监测单元之后,在表示模块加载的单向链表中其指针指向监测单元的下一个模块,而不指向所述监测单元,从而使监测单元在单向链表中不可见。10.一种防止文件被篡改的方法,其在计算设备中执行,该计算设备具有操作系统,该操作系统包括提供核心操作的内核空间和提供各种应用的用户空间,该方法包括接收用户空间中的应用通过系统调用而对内核空间中提供的相应核心操作的调用在与系统调用相对应的核心操作被执行之前截获所述系统调用;以及判断所述系统调用是否合法,当其合法时允许该系统调用,否则拒绝该系统调用。11.根据权利要求10所述的方法,其中,所述判断所述系统调用是否合法的步骤包括根据所述系统调用涉及的文件信息和/或发起该系统调用的应用的应用信息来判断该系统调用是否合法。12.根据权利要求11所述的方法,其中,所述文件信息包括文件的路径信息和/或名称,所述应用信息包括所述应用在操作系统中的唯一标识号,所述方法还包括在所述内核空间存储配置信息,所述配置信息包括一个或者多个配置项,每个配置项包括文件的文件信息和应用的唯一标识号;其中,所述判断所述系统调用是否合法的步骤为当系统调用涉及的文件的文件信息以及发起该系统调用的应用的唯一标识号不存在于所述配置信息的任一个配置项中时,判断该系统调用为非法,否则判断该系统调用为合法。13.根据权利要求12所述的方法,其中,每个配置项还包括操作权限;所述判断所述系统调用非法的步骤为当系统调用涉及的文件的文件信息以及发起该系统调用的应用的唯一标识号存在于所述配置信息的配置项中,但是该系统调用所需要的文件操作权限和所述配置项中的操作权限不匹配时,判断该系统调用为非法。14.根据权利要求10-13中任一个所述的方法,其中,在判断该系统调用非法时拒绝该系统调用的步骤之后还包括生成告警信息。15.根据权利要求10-14中任一个所述的方法,还包括接收监测客户端每隔一段时间发送的心跳检测,并向监测客户端发送相应的反馈信肩、O16.根据权利要求10-15中任一个所述的方法,还包括步骤执行一虚拟操作,以使得在表示各操作加载的单向链表中该虚拟操作的指针指向前面所述监测方法执行的监测操作的下一个操作,而不指向所述监测操作,从而使所述监测操作在单向链表中不可见。全文摘要本发明公开了一种防止文件被篡改的系统,其安置在计算设备中,该计算设备具有操作系统,该操作系统包括提供核心操作的内核空间和提供各种应用的用户空间,该防止文件被篡改的系统包括:位于内核空间中的监测单元;位于用户空间中的监测客户端和多个应用,其中所述监测客户端适于与所述监测单元进行通信;以及位于用户空间和内核空间之间的系统调用接口,位于用户空间中的所述多个应用分别通过该系统调用接口与所述监测单元连接;其中,位于用户空间中的多个应用分别通过系统调用接口向内核空间的核操作发起系统调用请求,所述监测单元监测所述系统调用请求。另外,本发明还公开一种防止文件被篡改的方法。利用本发明,即使在黑客获取了最高权限的情况下,也能防止其对文件和目录进行篡改。文档编号G06F21/50GK102902909SQ20121038236公开日2013年1月30日申请日期2012年10月10日优先权日2012年10月10日发明者冯顾,李涵,刘浩申请人:北京奇虎科技有限公司,奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1