本发明涉及文件监控,特别是涉及一种监控linux全量目录文件落地的方法、系统、设备及储存介质。
背景技术:
1、随着电子信息化的快速发展,终端安全问题也更加突出,部分安全机构为了降低安全加固的技术难度,直接基于linux内核进行防护,但同时带来兼容性的问题,无法做到在不同linux发行版上通用的能力,而基于inotify监控方案则无法做到全量监控的目的。
2、传统的解决方式是基于内核文件系统的hook接口或者仅仅是基于inotify检测方案。现有技术方案是基于内核“文件系统hook”接口进行文件行为的捕获,具体构建方法如下:
3、1.安装内核防护驱动,其内部将注册文件系统的hook的回调接口;
4、2.当本地有新增文件时,则会调用“文件系统”的hook,从而通知内核防护驱动;
5、3.内核防护驱动则将相关“文件事件”通知到用户态的“业务层(文件监控系统)”。
6、当系统内有新增文件时,会调动文件系统hook,并最终通知监控系统。但由于内核驱动存在不兼容的问题,因此该方案在产生环境中缺乏通用复制能力。
7、上述的文件检测方法,虽可以在一定程度上保证用户的信息安全,但是在实际使用时却发现其方法中还存在有若干缺点,因未能达到最佳的使用效果,而其缺点可归纳如下:
8、1)基于内核hook的缺点:内核版本无法做到兼容所有发行版,每对接一个发行版都需要进行适配和编译,不利于做通用方案,且维护成本高;
9、2)基于传统的inotify的检测方案:由于受制于inotify自身技术方案的限制,无法真正做到全量检测的目的,即使尽量检测大部分目录,但带来的副作用是内存资源占用很大,同时由于“同用户”的检测数量有限定设置,一旦检测数量被其中一个应用程序占用完,则其他应用程序无法继续进行检测工作(备注:可以对检测数数量进行二次扩增,但无法做到通用方案,实施难度大)。
10、由此可见,上述现有的文件检测方法在使用上,显然仍存在有不便与缺陷,而亟待加以进一步改进。如何能创设一种新的文件落地检测方法,成为当前业界急需改进的目标。
技术实现思路
1、有鉴于此,本公开实施例提供一种监控linux全量目录文件落地的方法,至少部分解决现有技术中存在的问题。
2、第一方面,本公开实施例提供了一种监控linux全量目录文件落地的方法,所述方法包括以下步骤:
3、初始化fanotify;
4、基于fanotify监听系统中的文件系统对文件进行监听;
5、当首次发生写事件时,fanotify上报文件修改事件;
6、将所述文件修改事件的路径记录到缓存区,并记录超时时间。
7、根据本公开实施例的一种具体实现方式,所述方法还包括:
8、判断缓存区的所述文件修改事件是否超过上限;其中,
9、当缓存区的所述文件修改事件未超过上限时,将fanotify上报的所述文件修改事件的路径记录到缓存区,并记录超时时间;
10、当缓存区的所述文件修改事件超过上限时,对所述缓存区的文件修改事件进行处理。
11、根据本公开实施例的一种具体实现方式,所述对所述缓存区的文件修改事件进行处理,包括以下步骤:
12、周期性遍历缓存区的事件队列并获取超时的文件修改事件;
13、将所述超时的文件修改事件推送给杀毒引擎提取有效的特征行为,并恢复对所述超时的文件修改事件的监听,同时从缓存区删除所述超时的文件修改事件信息。
14、根据本公开实施例的一种具体实现方式,所述对所述缓存区的文件修改事件进行处理,还包括以下步骤:
15、立即遍历缓存区的事件队列并获取超时的文件修改事件;
16、将所述超时的文件修改事件推送给杀毒引擎提取有效的特征行为,并恢复对所述超时的文件修改事件的监听,同时从缓存区删除所述超时的文件修改事件信息。
17、根据本公开实施例的一种具体实现方式,所述方法还包括:
18、通过fanotify上报文件修改事件后,在预设的超时时间内临时忽略该事件。
19、根据本公开实施例的一种具体实现方式,所述方法适用于linux内核大于等于2.6.37的发行版本。
20、第二方面,本公开实施例提供了一种监控linux全量目录文件落地的系统,所述系统包括:
21、监听模块,被配置用于初始化fanotify;基于fanotify监听系统中的文件系统对文件进行监听;
22、上报模块,被配置用于当首次发生写事件时,fanotify上报文件修改事件;
23、缓存模块,被配置用于将所述文件修改事件的路径记录到缓存区,并记录超时时间。
24、根据本公开实施例的一种具体实现方式,所述缓存模块还包括:
25、事件处理模块,被配置用于遍历缓存区的事件队列并获取超时的文件修改事件;并将所述超时的文件修改事件推送给杀毒引擎提取有效的特征行为,并恢复对所述超时的文件修改事件的监听,同时从缓存区删除所述超时的文件修改事件信息。
26、第三方面,本公开实施例还提供了一种电子设备,该电子设备包括:
27、至少一个处理器;以及,
28、与所述至少一个处理器通信连接的存储器;其中,
29、所述存储器存储有能够被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器前述第一方面或第一方面的任一实现方式中的任一项所述的监控linux全量目录文件落地的方法。
30、第四方面,本公开实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令当由至少一个处理器执行时使所述至少一个处理器执行前述第一方面或第一方面的任一实现方式中的监控linux全量目录文件落地的方法。
31、第五方面,本公开实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使该计算机执行前述第一方面或第一方面的任一实现方式中的监控linux全量目录文件落地的方法。
32、本公开实施例中的监控linux全量目录文件落地的方法,利用fanotify对linux文件系统进行监控,且仅监控目录下“新增文件”的事件,一旦检测到有“新增文件”落地的行为,即可通知业务层(文件监控系统)对其文件进行检测和扫描检测,在具备linux系统的通用性的同时,提升了检测的准确性和可靠性。
1.一种监控linux全量目录文件落地的方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的监控linux全量目录文件落地的方法,其特征在于,所述方法还包括:
3.根据权利要求2所述的监控linux全量目录文件落地的方法,其特征在于,所述对所述缓存区的文件修改事件进行处理,包括以下步骤:
4.根据权利要求3所述的监控linux全量目录文件落地的方法,其特征在于,所述对所述缓存区的文件修改事件进行处理,还包括以下步骤:
5.根据权利要求1所述的监控linux全量目录文件落地的方法,其特征在于,所述方法还包括:
6.根据权利要求1至5中的任意一项所述的监控linux全量目录文件落地的方法,其特征在于,所述方法适用于linux内核大于等于2.6.37的发行版本。
7.一种监控linux全量目录文件落地的系统,其特征在于,所述系统包括:
8.根据权利要求7所述的监控linux全量目录文件落地的系统,其特征在于,所述缓存模块还包括:
9.一种电子设备,其特征在于,该电子设备包括:
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令当由至少一个处理器执行时使所述至少一个处理器执行如权利要求1至6中的任一项所述的监控linux全量目录文件落地的方法。