一种基于Fanotify机制的U盘传输监控方法技术

技术编号:34101743 阅读:16 留言:0更新日期:2022-07-11 23:36
本发明专利技术公开了一种基于Fanotify机制的U盘传输监控方法,包括以下步骤:步骤一:进行系统初始化,包括Netlink初始化和Fanotify初始化;步骤二:当U盘插入系统时,Netlink线程接收到USB设备Add消息,以U盘设备名为Key建立一个表项用于标识此U盘,状态为Adding,表项插入U盘列表;步骤三:定时器遍历U盘列表,与/proc/mounts对比,发现U盘Mount到文件系统的目录,调用Fanotify接口fanotify_mark对目录进行监控;步骤四:当用户对U盘中的文件进行拷贝操作时,触发Fanotify事件;步骤五:当U盘拔出时,以U盘设备名为Key查找U盘列表,找到后根据状态进行处理对应处理;步骤六:定时器遍历U盘列表,与/proc/mounts对比。本发明专利技术能够在Linux系统上,使用应用层方案替代内核方案,可显著降低适配工作量,提高稳定性。提高稳定性。提高稳定性。

【技术实现步骤摘要】
一种基于Fanotify机制的U盘传输监控方法


[0001]本专利技术涉及数据监控领域,具体涉及一种基于Fanotify机制的U盘传输监控方法。

技术介绍

[0002]在主机安全防护中,需要防止通过U盘拷贝导致机密文件泄漏,还需要防止通过U盘拷贝导致恶意文件进入主机。因此主机安全防护软件需要实现U盘等可拔插的存储设备的管控;
[0003]在Linux下U盘、USB硬盘等移动存储设备通常都是以一种叫做usb

storage的方式进行驱动,要使用他们必须加载此内核模块(modprobe usb

storage)。目前业界常用的U盘传输监控方案就是通过修改替换此内核模块的方式来实现,其不足之处是需要针对每一个内核版本进行适配,当内核有变化后需要同步修改,否则就可能出现兼容性问题。
[0004]目前Linux上通用的U盘监控方法都需要通过修改内核驱动的方式来实现,由于Linux内核版本多且配置灵活,导致基于内核的方案适配工作量大,稳定性差。
[0005]现有的U盘传输监控方法,存在着内核的方案适配工作量大,稳定性差的问题,给U盘传输监控方法的使用带来了一定的影响,因此,提出一种基于Fanotify机制的U盘传输监控方法。

技术实现思路

[0006]本专利技术所要解决的技术问题在于:如何解决现有的U盘传输监控方法,存在着内核的方案适配工作量大,稳定性差的问题,给U盘传输监控方法的使用带来了一定的影响的问题,提供了一种基于Fanotify机制的U盘传输监控方法。
[0007]本专利技术是通过以下技术方案解决上述技术问题的,本专利技术包括以下步骤:
[0008]步骤一:进行系统初始化,包括Netlink初始化和Fanotify初始化;
[0009]步骤二:当U盘插入系统时,Netlink线程接收到USB设备Add消息,以U盘设备名为Key建立一个表项用于标识此U盘,状态为Adding,表项插入U盘列表;
[0010]步骤三:定时器遍历U盘列表,与/proc/mounts对比,发现U盘Mount到文件系统的目录,调用Fanotify接口fanotify_mark对目录进行监控;
[0011]步骤四:当用户对U盘中的文件进行拷贝操作时,触发Fanotify事件;
[0012]步骤五:当U盘拔出时,以U盘设备名为Key查找U盘列表,找到后根据状态进行处理对应处理;
[0013]步骤六:定时器遍历U盘列表,与/proc/mounts对比,当发现目录U盘Mount的目录已经消失了,表示已经执行了Unmount操作,此时调用Fanotify接口fanotify_mark取消对目录的监控。
[0014]进一步在于,所述步骤一中的Netlink初始化过程如下:Netlink初始化时创建一个Socket监控NETLINK_KOBJECT_UEVENT事件,并创建一个线程用于读取Socket数据。
[0015]进一步在于,所述步骤一中的Fanotify初始化过程如下:Fanotify初始化时先调
用fanotify_init创建一个Fanotify实例,并创建一个线程用于读取Fanotify事件。
[0016]进一步在于,所述步骤四中触发Fanotify事件后Fanotify线程读取到文件操作事件,根据U盘传输策略进行对应的处理,其具体处理过程如下:Fanotify初始化创建,之后收取到Fanotify事件,再对Fanotify事件进行解析,获取到进程文件名、进程PID,之后根据U盘传输策略进行对应的处理。
[0017]进一步在于,所述步骤二的具体过程如下:先使用Netlink创建Socket监控NETLINK_KOBJECT_UEVENT事件,之后判断U盘是否插入,当U盘插入时,以U盘设备名为Key建立表项,状态为Adding,插入U盘列表,当U盘拔出时,以U盘设备名为Key查找U盘列表,找到后根据状态进行处理对应处理。
[0018]进一步在于,所述步骤六的具体过程如下:定时器遍历U盘列表,与/proc/mounts对比判断U盘是Mount还是Unmount,当U盘为Mount时,使用Fanotify监控U盘Mount的文件系统目录,当U盘为Unmount时,取消Fanotify监控对U盘Mount的文件系统目录的监控。
[0019]本专利技术相比现有技术具有以下优点:该基于Fanotify机制的U盘传输监控方法,结合Linux的Netlink机制和Fanotify机制来实现对于U盘文件传输的监控,更好的保证了数据信息的安全,并且全在应用层实现,无需修改内核驱动,因此对于各Linux版本适配工作量小,稳定性好,结合Linux上的Netlink和Fanotify机制,在应用层即实现U盘传输监控,减少适配工作量,提高稳定性,实现了稳定高效的对U盘传输进行监控,有效的保护了数据安全,让该方法更加值得推广使用。
附图说明
[0020]图1是本专利技术的整体流程图;
[0021]图2是本专利技术的U盘拔插监控处理流程图;
[0022]图3是本专利技术的U盘Mount、Unmount监控处理流程图;
[0023]图4是本专利技术的U盘传输监控处理状态机流程图;
[0024]图5是本专利技术的Fanotify文件监控处理流程图。
具体实施方式
[0025]下面对本专利技术的实施例作详细说明,本实施例在以本专利技术技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本专利技术的保护范围不限于下述的实施例。
[0026]如图1~5所示,本实施例提供一种技术方案:一种基于Fanotify机制的U盘传输监控方法,包括以下步骤:
[0027]步骤一:进行系统初始化,包括Netlink初始化和Fanotify初始化,Netlink初始化过程如下:Netlink初始化时创建一个Socket监控NETLINK_KOBJECT_UEVENT事件,并创建一个线程用于读取Socket数据,的Fanotify初始化过程如下:Fanotify初始化时先调用fanotify_init创建一个Fanotify实例,并创建一个线程用于读取Fanotify事件,此步骤在应用层初始化Linux的Netlink模块和Fanotify模块,用于监控U盘的拔插事件和U盘文件系统的读写;
[0028]步骤二:当U盘插入系统时,Netlink线程接收到USB设备Add消息,以U盘设备名为
Key建立一个表项用于标识此U盘,状态为Adding,表项插入U盘列表,先使用Netlink创建Socket监控NETLINK_KOBJECT_UEVENT事件,之后判断U盘是否插入,当U盘插入时,以U盘设备名为Key建立表项,状态为Adding,插入U盘列表,当U盘拔出时,以U盘设备名为Key查找U盘列表,找到后根据状态进行处理对应处理,此步骤使用Linux的Netlink机制,在应用层接收U盘插入消息并进本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Fanotify机制的U盘传输监控方法,其特征在于,包括以下步骤:步骤一:进行系统初始化,包括Netlink初始化和Fanotify初始化;步骤二:当U盘插入系统时,Netlink线程接收到USB设备Add消息,以U盘设备名为Key建立一个表项用于标识此U盘,状态为Adding,表项插入U盘列表;步骤三:定时器遍历U盘列表,与/proc/mounts对比,发现U盘Mount到文件系统的目录,调用Fanotify接口fanotify_mark对目录进行监控;步骤四:当用户对U盘中的文件进行拷贝操作时,触发Fanotify事件;步骤五:当U盘拔出时,以U盘设备名为Key查找U盘列表,找到后根据状态进行处理对应处理;步骤六:定时器遍历U盘列表,与/proc/mounts对比,当发现目录U盘Mount的目录已经消失了,表示已经执行了Unmount操作,此时调用Fanotify接口fanotify_mark取消对目录的监控。2.根据权利要求1所述的一种基于Fanotify机制的U盘传输监控方法,其特征在于:所述步骤一中的Netlink初始化过程如下:Netlink初始化时创建一个Socket监控NETLINK_KOBJECT_UEVENT事件,并创建一个线程用于读取Socket数据。3.根据权利要求1所述的一种基于Fanotify机制的U盘传输监控方法,其特征在于:所述步骤一中的Fanotify初始化过程如下:Fanotif...

【专利技术属性】
技术研发人员:靳方王孜好肖守和
申请(专利权)人:和安科技创新有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1