本文关键词:文件一致性 事件触发 文件防护
导语
文件一致性功能,用来提供对指定目录中的文件的实时监控。如被监控的目录中的文件发生改变,该功能会捕获该变动信息。并及时上报被监控文件或目录的增、改、删情况,对用户及时做出相应预警,降低安全风险。
文件一致性技术介绍
一.技术概述
目前天翼云文件一致性所采用的的技术基本跟网页防篡改技术一致。采用的是事件触发技术。主要应用了Linux/Windows平台下Inotify机制。inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,linux/windos内核加入了inotify支持,通过inotify可以监控文件系统添加、删除、修改等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况。inotify可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里的内容都会成为检测的对象。可以使用select/poll/epoll这些接口来监听,当有事件发生时,inotify文件描述符会可读。
此种机制的出现的目的是当内核空间发生某种事件之后,可以立即通知到用户空间。方便用户做出具体的操作。
其具体操作流程,如下图1:
图1
第一步:添加防护规则,添加要防护的网站目录或文件;
第二步:开启防护程序,进行实时防护;
第三步:实时监测文件是否被篡改。
二.整体实现流程
目前天翼云网页防篡改功能整体分为三个模块——前端、中间端、后端。当用户购买网页防篡改相关服务后,就可以对其名下主机进行网页防篡改功能的相关配置与防护了。
- 前端。用户选择所要配置的主机,然后通过WEBUI前端配置相应的规则:选择黑白名单模式、防护目录、备份目录、防护的文件类型(如.jsp、.html等等)、忽略文件类型、忽略的文件目录等。然后将规则下发到中间端服务器上。
- 中间端。中间端收到WEBUI前端发过来的消息后,将相应的消息格式化,变成底层所能解析的json串:
{
"check_enable": 1," //是否开启防护
"backup_path":"/tmp/backup", //备份目录
"protect_dir":["/tmp/111"], //防护目录
"ignore_dir": ["/tmp/111/aaa"], //忽略子目录
"ignore_file_type": ".txt$|.log$|.js$" //忽略文件类型
}
- 后端。当主机agent(运行网页防篡改功能的进程)收到中间端发过来的消息后,按照指令进行相关操作——是否开启防护、备份防护目录里的所有文件、正在表达式解析(防护忽略文件类型)、Inotify相关接口初始化等等。然后开始进行实时防护。
三.进行防护
当防护目录下某一被防护的文件被增删改后,inotify接口就会捕捉到相应的消息,此
时就会将被恶意篡改(增删改)的文件删掉。如果是修改或删除,就将备份目录下的对应原始文件恢复到原目录下,同时给出修改或删除告警信息;如果是增加,则直接进行相应的删除动作,同时给出修改或删除告警信息。
天翼云网页防篡改优缺点
- 优点
天翼云网页防篡改功能采用的是事件触发技术,能够实时地监控被防护的目录和文件,稳定、可靠,相比轮询机制技术占用系统资源少。目前市面上大部分同类竞品用的也是此种技术。
- 缺点
事件触发技术缺点非常明显,主要是占用存储空间。每一天防护规则下发后,都需要
将防护目录下的所有文件进行一次备份,在文件被恶意增删改后,在备份目录中找到应用的原始目录进行恢复。因此,当防护目录下文件过多过大时,相对应的备份空间将是一个很大的挑战。
- 展望
由于网页防篡改所采用的事件触发技术缺点非常明显,经过调研,目前有一种比较先进的技术——内核态阻挡技术。这种技术是对受到防护的目录或文件操作进行鉴别,当被防护的文件受到恶意增删改时,内核直接对这些操作进行阻断,不需要进行任何备份和恢复。内核态阻挡技术目前在较高的linux内核版本(5.x.x及以上)中支持,在较低版本中不支持。所以希望在不远的将来,能将此种技术运用到我们天翼云网页防篡改功能中。