技术领域
[0001] 本
发明涉及计算机
操作系统安全领域,尤其是一种系统关键文件完整性的监控保护方法及装置。
背景技术
[0002] 随着
云计算、
大数据等新型技术的发展,对云主机、
服务器和终端的安全性要求越来越高。完整性是安全三要素之一,是安全性的重要组成部分。各类系统中的关键文件经常遭到病毒和其它恶意程序的破坏,造成系统功能障碍和
稳定性无法保证,所以如何及时有效地发现系统中关键文件的完整性变化,并在关键文件被篡改及非故意损坏的情况下进行保护,就显得非常重要了。
[0003] 对于系统关键文件的完整性,目前流行的做法是编写完整性检测应用程序,例如:Unix系统著名的Tripwire完整性
软件。完整性检测应用程序在启动时收集系统关键文件的基线,基线中包含每个关键文件的哈希值,利用
定时器定时扫描或人工手动扫描每个关键文件的哈希值是否变化,如有变化记录日志并通知系统管理员,同时用新的哈希值更新对应关键文件的基线数据。完整性检测应用程序能够起到一定的
监控系统关键文件完整性的作用,但它也有以下缺点。一、完整性检测应用程序无法在关键文件遭到破坏时进行保护;
二、完整性检测应用程序的实时性低,只有定时周期到了或人工手动执行时,才能发现关键文件有了变化;三、完整性检测应用程序占用系统资源较大,影响系统上其它程序的运行;
四、完整性检测应用程序造成了系统管理员的维护负担,如果因一些原因,完整性检测应用程序没有被启动,则关键文件的完整性便无从谈起;五、完整性检测应用程序的
修改、升级较慢,采用编译型语言(例如:C++)编写的完整性检测应用程序修改、升级往往需要修改代码、编译通过、重新发布,才能在系统上生效。
发明内容
[0004] 本发明的目的是提供一种系统关键文件完整性的监控保护方法及装置,解决目前完整性检测应用程序无法提供保护、实时性低、占用资源大、增加维护负担、升级慢的缺点,同时提供监控和保护两种机制,从根本上保障了系统关键文件的完整性和足够安全。
[0005] 为实现上述目的,本发明采用下述技术方案:
[0006] 本发明第一方面提供了一种系统关键文件完整性的监控保护方法,包括以下步骤:
[0007] 应用层启动时更新监控规则;
[0008]
内核层根据监控规则实时监控系统关键文件的完整性变化;
[0009] 应用层收集内核层监控保护输出;
[0010] 应用层更新关键文件的完整性基线。
[0011] 结合第一方面,在第一方面第一种可能的实现方式中,所述应用层启动时更新监控规则,具体包括:
[0012] 应用层启动时,根据当前预设配置文件,形成内核层需要的规则文件。
[0013] 结合第一方面,在第一方面第二种可能的实现方式中,所述内核层根据监控规则实时监控系统关键文件的完整性变化,具体包括:
[0014] 内核层判断被
访问文件是否属于监控规则列表,如果否,执行文件操作;如果是,判断被访问文件是否允许破坏性动作,如果否,拒绝执行文件操作;如果是,执行文件操作。
[0015] 结合第一方面,在第一方面第三种可能的实现方式中,所述内核层根据监控规则实时监控系统关键文件的完整性变化,还包括:
[0016] 生成保护日志和监控日志,抛给日志队列;
[0017] 内核层监控日志队列,将日志信息写入文件系统中。
[0018] 结合第一方面,在第一方面第四种可能的实现方式中,所述应用层收集内核层监控保护输出,具体包括:
[0019] 应用层定时在
指定目录下扫描内核层的保护日志和监控日志输出;
[0020] 应用层将保护日志和监控日志输出标准化,并在
命令行界面显示。
[0021] 结合第一方面,在第一方面第五种可能的实现方式中,所述应用层更新关键文件的完整性基线,具体包括:
[0022] 应用层根据内核层输出日志信息判断关键文件完整性发生变化,应用层重新计算关键文件哈希值,更新关键文件完整性基线。
[0023] 结合第一方面,在第一方面第六种可能的实现方式中,所述应用层更新关键文件的完整性基线步骤之后,还包括:
[0024] 应用层判断系统不需要完整性监控和保护时,卸载内核层对应文件。
[0025] 本发明第二方面提供了一种系统关键文件完整性的监控保护装置,包括:
[0026] 监控规则更新模
块,应用层启动时更新监控规则;
[0027] 完整性判断模块,内核层根据监控规则实时监控系统关键文件的完整性变化;
[0028] 日志输出模块,应用层收集内核层监控保护输出;
[0029] 更新模块,应用层更新关键文件的完整性基线。
[0030] 发明内容中提供的效果仅仅是
实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
[0031] 本发明在操作系统内核层增加驱动模块,拦截系统关键文件的破坏性行为,根据扫描脚本生成的规则,进行监控和保护。驱动模块集成在操作系统内核,随操作系统一起运行,上层
应用软件感知不到。同时应用层的扫描脚本定时收集和标准化内核驱动模块的监控和保护输出,维护内核规则文件和关键文件完整性基线。扫描脚本修改后保存即生效,脚本维护方便,占用系统资源少。本方法具有实时性高、无干扰、易维护的特点。本方法是在操作系统上增加内核驱动模块和扫描脚本,扫描脚本生成内核规则文件、安装内核驱动、监控与保护结果呈现、更新关键文件基线,内核驱动模块实时拦截关键文件的破坏性动作、根据规则判断动作是否允许、记录监控和保护结果,二者结合既发挥了脚本的轻便和灵活,又发挥了内核驱动的实时、隐蔽和不可绕过,有效的保证了关键系统文件的完整性。
附图说明
[0033] 图2是本发明方法实施例二流程图;
[0034] 图3是本发明装置实施例示意图。
具体实施方式
[0035] 为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
[0036] 如图1所示,一种系统关键文件完整性的监控保护方法,包括以下步骤:
[0037] S1、应用层启动时更新监控规则;
[0038] S2、内核层根据监控规则实时监控系统关键文件的完整性变化;
[0039] S3、应用层收集内核层监控保护输出;
[0040] S4、应用层更新关键文件的完整性基线。
[0041] 如图2所示,一种系统关键文件完整性的监控保护方法,包括以下步骤:
[0042] S1、应用层启动时,根据当前预设配置文件,形成内核层需要的规则文件。
[0043] S2、内核层判断被访问文件是否属于监控规则列表,如果否,执行文件操作;如果是,判断被访问文件是否允许破坏性动作,如果否,拒绝执行文件操作;如果是,执行文件操作。
[0044] S3、生成保护日志和监控日志,抛给日志队列;
[0045] S4、内核层监控日志队列,将日志信息写入文件系统中。
[0046] S5、应用层定时在指定目录下扫描内核层的保护日志和监控日志输出;
[0047] S6、应用层将保护日志和监控日志输出标准化,并在命令行界面显示。
[0048] S7、应用层根据内核层输出日志信息判断关键文件完整性发生变化,应用层重新计算关键文件哈希值,更新关键文件完整性基线。
[0049] S8、应用层判断系统不需要完整性监控和保护时,卸载内核层对应文件。
[0050] 如图3所示,一种系统关键文件完整性的监控保护装置,包括:
[0051] 监控规则更新模块101,应用层启动时更新监控规则;
[0052] 完整性判断模块102,内核层根据监控规则实时监控系统关键文件的完整性变化;
[0053] 日志输出模块103,应用层收集内核层监控保护输出;
[0054] 更新模块104,应用层更新关键文件的完整性基线。
[0055] 扫描脚本模块在应用层实现,采用轻量级、解释型的脚本语言(例如:Python、Perl、Ruby、bash、cmd等)编写,可通过操作系统设置计划任务定时调用,也可通过脚本语言内部的定时器机制实现定时执行。内核驱动模块在操作系统内核层实现,由扫描脚本模块安装。该模块初始化时读取扫描脚本模块生成的规则文件,运行时拦截所有对文件有破坏性的行为(例如:修改、删除、重命名)。内核驱动模块一旦安装完成,既使扫描脚本被无意或恶意删除,依然能够对系统关键文件启用监控和保护作用。
[0056] 扫描脚本模块主要完成的任务如下:
[0057] 1)扫描脚本启动的时候,根据当前的预设的配置文件,形成内核模块需要的规则文件。
[0058] 2)扫描脚本启动的时候,判断内核驱动模块是否已经安装,如果没有安装,则安装内核驱动模块。
[0059] 3)扫描脚本定时在指定目录下扫描内核驱动模块的监控和保护输出。
[0060] 4)扫描脚本将内核模块的输出标准化,并在命令行界面显示。扫描脚本以发送邮件、即时消息等方式通知系统管理员系统关键文件完整性的变化。
[0061] 5)如有关键文件完整性发生变化,扫描脚本重新计算文件哈希值,更新关键文件完整性基线。
[0062] 6)在不需要完整性监控与保护时,通过扫描脚本卸载内核驱动模块。
[0063] 内核驱动模块拦截到文件破坏行为后,进行以下操作:
[0064] 1)判断被访问的文件是否在规则列表中,如果不在规则列表(即不属于系统关键文件),则忽略此行为,则此操作行为正常执行。
[0065] 2)如果被访问的文件在规则列表中,判断此文件是否允许破坏性动作,如果不允许破坏性动作,则拒绝此行为,此操作行为执行失败,系统关键文件得到保护。拒绝后,生成保护日志,抛给日志队列。抛给日志队列后需要立即返回,不在这里进行日志IO操作。
[0066] 3)如果被访问的文件允许破坏性动作,则此动作执行成功后,生成监控日志,抛给日志队列。抛给日志队列后需要立即返回,不在这里进行日志IO操作。
[0067] 4)内核驱动模块的低级别IO线程,监控日志队列,及时将日志信息写入到文件系统的指定目录下。
[0068] 上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的
基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或
变形仍在本发明的保护范围以内。