基于Linux的文件系统监控技术研究

2014-04-29 18:33胡雯李燕赵海廷
中国电子商情 2014年12期
关键词:描述符监控模块

胡雯 李燕 赵海廷

引言:本文以Linux系统为平台,深入研究了文件系统监控技术的方法,并通过inotify程序实现其对所监控文件的报警功能,为文件系统的安全保护策略提供供参考依据。

一、引言

随着计算机系统安全技术的发展,涉及企业商业机密以及决策信息的文件已成为安全监控的新目标。以往对文件系统采用的监控技术大部分属于“办公自动化方法”,将文件集中管理,对文件操作不便且不能有效监控和防止文件的对外传播。操作系统中具备的文件系统的功能较少,仅限于对文件的保护性检测,对文件的具体操作等记录不详,鉴于这种状况,本文选择具有较高安全性的Linux操作系统平台,使用inotify技术对文件系统的安全监控进行研究。

二、文件监控系统

文件监控系统一般主要由管理终端(Keeper)和监控终端(Monitor)组成。Keeper端和Monitor端通过网络相连,尽量使用专用实现管理终端的功能。监控系统为用户提供对重要文件的安全保护。

文件监控系统由两个模块组成,分别是监控模块,还原模块。还原模块嵌入到Keeper端,监控模块式嵌入到Monitor端。见下图1。

图1 监控系统逻辑结构

首先,管理者将要监控的文件加入到Monitor端的监控文件列表,进行实时监控时,先将Monitor端的监控文件一次性备份到Keeper端,让Keeper端作为备份服务器;同时将监控文件的路径写入到数据库。之后,监控模块开始工作,当检测到文件被误删、篡改等非法操作时,立即对Keeper端发送警告信息,管理者针对这非法操作实行禁止或者允许策略。当选择允许策略时,监控系统只做记录,不还原被修改文件;当选择禁止策略时,监控系统根据数据库自动还原Monitor端被破坏的文件。

三、监控模块

监控模块的主要功能包括检测、防修改、告警及自我保护[1]。

检测功能对需要进行监控的文件及目录进行如增、删、改、查等操作的检测,一旦发现就根据用户策略的设置向管理者进行告警处理。

防修改功能包对特定文档或重要文件进行设定,凡是检测到非法操作的文件都会无条件的恢复此文档内容或文件数据。

告警功能根据用户策略对事件进行实时告警。事件包括针对文件的非法操作、监控系统的功能启用/禁用等。

监控系统自我保护功能是避免非法用户关闭系统。如关闭监控系统时输入密码等。

四、监控技术

Linux系统的文件监控技术主要有以下三种:

(1)替换shell。用perl之类的脚本语言写一个shell,替换bash,cshell,设置成用户的默认shell,对删除文件、修改文件等操作做记录,追查方便。优点是实现简单,风险低;缺点是容易绕过,没法记录二进制程序对文件的操作。

(2)写驱动程序,使用hook系统调用监控文件操作。优点是底层操作,不易绕过;缺点是风险高,通用性差,开发难度大。

(3)使用inotify监控文件。inotify是基于事件的监控,无需定时轮询文件状态,也无需做内核模块hook系统调用,简单可靠。现阶段大部分Linux系统均采用该方法监控文件。

Inotify的监控机制是[2]:Inotify

不打开被监视的目标文件的描述符,如果目标在可移动介质上,那么在 umount 该介质上的文件系统后,目标对应的 watch 将被自动删除,并产生一个 umount 事件。

既可以监视文件,也可以监视目录。

使用系统调用来通知文件系统事件。

使用文件描述符作为接口,可以使用通常的文件I/O 操作select和poll来监视文件系统的变化。

Inotify可监控文件的访问、读/写、属性修改、删除等,也包括对目录的操作,还可跟踪活动的源头和目标等细节。

五、inotify监控实例

使用inotify编写监控程序[3],并在Monitor端执行。具体过程如下:

创建一个文件描述符,附加一个或多个监视器,然后使用 read() 方法从描述符获取事件信息,事件发生前先阻塞read()。

具体步骤如下:

int fd = inotify_init(); 初始化inotify实例。

int wd = inotify_add_watch(fd, path, mask); 添加监视对象,即事件的位标记集合。

size_t len = read(fd, buf, BUF_LEN); 读取事件数据,buf是一个指向inotify_event结构数组的指针。

int ret = inotify_rm_watch(fd, wd); 通过此函数来删除已存在的监视对象。

监控程序开始执行后,进行测试:

用某用户身份登录;在被保护文件范围内进行创建文件操作。操作完成后,在执行监控程序的终端立即显示如图2所示告警信息。证明监控功能实现。

图2 管理端获得的告警信息

本监控实验程序,只实现了对所监控文件的创建操作。

小结

通过上述实践证明,使用inotify技术对文件系统进行监控是可行的,程序过程并不复杂。inotify技术对文件系统的监控功能较全面,使用方法简单,该技术值得推广。本文未实现还原模块的功能,由于其涉及到文件范围的识别,文件传输的实时性及并发性等问题,有待今后深入研究其实现方法。

参考文献

[1] (美)Aron Hsiao . Linux系統安全基础[M].人民邮电出版社. 2002.2

[2] 燚杨. Inotify -- Linux 2.6 内核中的文件系统变化通知机制[EB|OL].

http://www.ibm.com/developerworks/cn/linux/l-inotifynew/

[3] Michael Prokop. Inotify: 高效、实时的Linux文件系统事件监控框架[EB|OL]. http://www.infoq.com/cn/articles/inotify-linux-file-system-event-monitoring/

(作者单位:武昌理工学院)

猜你喜欢
描述符监控模块
28通道收发处理模块设计
“选修3—3”模块的复习备考
基于结构信息的异源遥感图像局部特征描述符研究
The Great Barrier Reef shows coral comeback
基于AKAZE的BOLD掩码描述符的匹配算法的研究
你被监控了吗?
Zabbix在ATS系统集中监控中的应用
Linux单线程并发服务器探索
利用CNN的无人机遥感影像特征描述符学习
PDCA循环法在多重耐药菌感染监控中的应用