一种基于驱动过滤技术的动态文件监控和保护系统的制作方法_2

文档序号:8412430阅读:来源:国知局
功能,很好的解决了数据存储和效率方面的问题,有着一定实际应用价值和科学意义。
[0029]
【附图说明】
[0030]图1:本发明实施的系统架构图;
图2:本发明实施的规则匹配失败时流程图;
图3:本发明实施的不允许读文件时的流程图;
图4:本发明实施的不允许写文件时的流程图;
图5:本发明实施的需要转存文件时的流程图。
[0031]
【具体实施方式】
[0032]为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
[0033]请见图1,本发明提供的一种基于驱动过滤技术的动态文件监控和保护系统,由驱动模块和客户端部分组成;客户端用于提供可视化的操作界面并负责数据库操作同时向用户展示相关信息;驱动模块为完成文件系统监控和保护的主体,承担规则匹配、文件请求分析、文件请求拦截、向客户端发送信息的功能;驱动模块和客户端之间的通信通过发送消息进行,只要满足规定格式的消息都能被正确接收并解释;其中驱动模块包括上层驱动单元、驱动主体单元和下层驱动单元,采用驱动过滤技术,采用基于分桶和字典树的匹配算法实现规则匹配,实现驱动模块与客户端完整的通信格式定义,适用于多模可扩展的实时环境配置。
[0034]本发明的客户端和驱动模块之间除了需要相互发送消息之外并没有其它关联,因此驱动模块和客户端之间的耦合性是比较小的。
[0035]本实施例的规则匹配是指将文件访问请求的路径与规则项进行一一匹配,以决定是否采用该规则项规定的操作;匹配的过程采用基于分桶和字典树的匹配算法,其具体实现包括以下子步骤:
步骤1:针对盘符进行分组,将不同盘符的规则分配到不同的组中;
步骤2:将各个组中的第一层路径做成字典树,每个字典树的分支指向下一层路径的分组,下一层路径分组中采用字典序对路径进行排序提高查找效率。
[0036]匹配算法匹配成功的标准为:文件请求的路径与规则项路径完全相同,且规则项路径是文件请求的路径的前缀。
[0037]请见图2,当驱动主体单元接收到文件请求时(由于驱动加载到文件系统的驱动栈中,文件请求由上层驱动单元传递过来),先提交给规则匹配模块进行规则匹配,规则匹配失败(一般是未对该文件设置规则或者是该条规则被关闭)后通知驱动主体单元,驱动主体单元则继续将该文件请求传递给下层驱动单元。
[0038]应当指出的是驱动主体单元和规则匹配模块都是一起位于驱动模块的,驱动主体单元是标准的Windows WDM驱动,当有文件请求时会由操作系统调用驱动中的相关函数通知驱动有文件请求。
[0039]本发明的文件监控用于文件访问的控制和文件访问信息的保存,包括阻止对文件的读/写操作、保存文件访问记录、将文件内容进行转存、记录规则变化历史信息; 请见图3,当驱动主体单元接收到文件读请求时,先提交给规则匹配模块进行规则匹配,规则匹配成功(有某个规则项指出该文件不允许读操作)后通知驱动主体单元,驱动主体单元直接设置读文件失败的标志位,将读文件操作结果返回上层驱动单元,不再继续向下层驱动单元传递该请求。
[0040]应当指出的是设置文件操作失败的标志位有多个,为了方便区分文件错误和请求被拦截的情况,本发明中设置为权限不足错误,即当驱动拦截了该读文件的请求时,发起该请求的程序将受到权限不足的错误消息。
[0041]请见图4,当驱动主体单元接收到文件写请求时,先提交给规则匹配模块进行规则匹配,规则匹配成功(有某个规则项指出该文件不允许写操作)后通知驱动主体单元,驱动主体单元直接设置写文件失败的标志位,将读文件操作结果返回上层驱动单元,不再继续向下层驱动单元传递该请求。
[0042]应当指出的是设置文件操作失败的标志位有多个,为了方便区分文件错误和请求被拦截的情况,本发明中设置为权限不足错误,即当驱动拦截了该写文件的请求时,发起该请求的程序将受到权限不足的错误消息。
[0043]请见图5,当驱动主体单元接收到请求时,先提交给规则匹配模块进行规则匹配,规则匹配成功(有某个规则项指出该文件需要转存)后通知驱动主体单元,驱动主体单元将文件相关信息提交给转存模块(一般是文件路径),转存模块直接将该文件内容复制一份存储到事先规定好的临时目录,保存好后通知驱动主体单元转存结束,驱动主体单元再将文件请求转发给下层驱动单元继续处理。当对该文件的操作(写入、属性修改等)完成之前,通知客户端对该文件进行转存。客户端收到驱动主体单元发来的消息后将该临时文件保存到指定目录或数据库之中。
[0044]应当指出的是由于这里涉及至少两个文件操作,要注意重入问题。这里使用Windows的标准API函数实现内核态驱动对文件的读写操作,由操作系统保证了不会发生避免重入问题。
[0045]本实施例的驱动模块与客户端完整的通信格式,因驱动模块到客户端的消息格式和客户端到驱动模块的消息格式不同,故采用的是非对称设计;驱动模块到客户端的消息格式,其通信数据结构包括操作码、临时文件存放路径和源文件存放路径;操作码指明该消息针对的操作类型;临时文件存放路径只有在操作码指示的操作为转存操作时才有意义,复用部分的具体含义与操作码相关;源文件路径指明该操作对应的路径;客户端到驱动模块的消息格式,其通信数据结构包括操作码、状态码和路径;操作码指明该消息针对的操作类型;路径指明该操作对应的文件路径;驱动模块到客户端的消息格式和客户端到驱动模块的消息格式,在不同的上下文环境中消息中的字段能代表不同的含义,通过字段复用压缩消息的长度。
[0046]本实施例的多模可扩展的实时环境配置,指文件监控和保护系统能配置于多种物理环境(单机/联网)中且能动态对控制规则进行配置,配置实时生效无需重新启动系统;当规则的生效与文件访问发生冲突时,其处理过程为:已经访问的文件不受刚生效规则的影响,规则生效后访问的文件受规则的控制;
以下将通过具体实施例对本发明做进一步的说明。
[0047]I客户端实现; 本系统主要针对Windows操作系统上的文件系统,但是由于客户端的主要功能为操作和查询,可以根据不同的实现部署在Linux或Windows上(远程客户端需要网络支持)。客户端主要作为方便用户操作并进行某些用户态操作的部分实现的。客户端部分的核心是通信模块,该模块负责与驱动模块通信,实现了用户对驱动模块的控制。可以根据需要在满足接口要求的情况下由第三方实现该部分满足不同环境下的需求。这样就可以实现远程的监控和保护。
[0048]1.1操作部分;
管理员直接在客户端上实现对匹配规则的设置。首先添加一个需要设定规则的路径(该路径可以指向文件也可以指向文件夹),然后选中该路径再选择要控制的类型。设定完成后客户端会将该规则发送给驱动模块,驱动模块将该规则设置到规则表中。
[0049]这里也支持直接对规则进行修改和删除,在该部分所做的操作都会及时通知驱动模块更改规则表。这里驱动模块和客户端的通信采用同步通信,由于通信数据很少不会影响用户的使用体验。这里也设置了超时操作,当超时未收到回复信息则默认操作失败。
[0050]操作部分的主要功能是将管理员设置的规则用规定好的消息格式封装并发送给驱动模块,客户端出现崩溃和错误将不会影响已经设置好的规则发挥作用。
[0051]1.2数据库部分;
数据库的连接方式由客户端确定,这里用的是ODBC的连接方式。数据库主要作为操作记录及文件访问记录的保存方式,所以这里建立两张数据库表分别保存操作记录和文件访问记录。管理员可以很轻松的通过各种数据库工具查看日志记录。数据库部分是可选的,这部分主要是为了进行日志记录和今后数据分析的。由于数据库本身与程序的耦合性很小,可以用多种数据库来实现本部分。在程序中采用标准的SQL语言来提高兼容性,使得本发明可以应用于多种数据库上。
[0052]1.3通信部分;
这里的通信主要指从客户端到驱动模块的通信,该部分要完成将用户设定的规则封装成规定格式并发送给驱动模块的工作。同时还要接收驱动模块发送来的信息,进行消息的解释并通知数据库完成相关信息的保存工作。
[0053]发送给驱动模块的消息主要包括:1.要实施控制的路径(指向一个文件或文件夹,该文件或文件夹可以存在也可以不存在),2.要实施的控制操作(禁止读、禁止写、修改时内容转存),3.规则状态码(启用/禁用),4.保留部分(方便今后扩展而
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1