背景技术
随着互联网和网络应用的普及与发展,大量的黑客攻击随之而来,特别是针对互联网的网络攻击。其中,篡改网页文件是黑客攻击的普遍手法。网页篡改攻击事件往往预先检查和实时防范较难,由于网络环境复杂而难以追查责任,攻击工具简单且向智能化发展。目前虽然有防火墙、入侵检测系统等安全设备作为安全防范手段,但Web应用攻击有别于其他攻击方式,很难被传统的安全设备所检测到,可以轻松突破防火墙和入侵检测系统的保护。单纯依靠防火墙和入侵检测系统等传统的网络安全设备无法有效防范网页篡改攻击,为此,网页防篡改技术成为安全领域研究的焦点之一。
现有的防止网页篡改的技术主要包括以下几种:定时循环扫描技术、核心内嵌技术、事件触发技术和Windows系统文件过滤驱动技术。
定时循环扫描技术,也称外挂轮询技术,即以轮询的方式读取要监控的网页,与备份的网页进行比对,如果发现不一致,即已经被篡改,就用备份的网页进行恢复。采用该技术,不能实时对网页文件进行恢复,会导致网页被间断性篡改,另外,需要增加额外的磁盘空间存储原始的备份网页和额外的性能消耗以恢复备份网页。
核心内嵌技术,也称数字水印或数字指纹技术,即对每一个流出的网页进行数字水印检查,如果发现网页数字水印与之前备份的不同,则可断定该网页被篡改,阻止篡改后的网页流出。该技术以无进程、篡改网页无法流出、使用密码学算法作支撑,该技术主要是针对特定的Web服务器,而且超大文件计算数字水印速度慢,严重影响Web服务器的处理性能。
事件触发技术,即对防护目录进行监控,如果目录已经发生修改,监控程序就能得到系统通知事件,随后根据相关规则判定是否为篡改行为,如果是非法篡改就立即给予恢复。该技术在面临连续篡改网页的攻击方式下,无法保证网页不被篡改。
Windows系统文件过滤驱动技术,即采用Windows操作系统底层的文件过滤驱动技术,拦截与分析IRP流,对所有受保护的文件都可以立即截断,可以保证文件在篡改写入之前被阻止。但该技术仅适用于Windows系列的系统,无法满足Linux系列系统的需要。
发明内容
有鉴于此,本发明提供一种网页防篡改方法。本发明基于Linux系统,可以有效地保护Linux系统中Web服务器的网页被篡改。
为实现本发明目的,本发明实现方案具体如下:
一种网页防篡改方法,所述方法包括以下步骤:
步骤A、劫持Linux系统中与文件操作相关的系统调用;
步骤B、根据劫持的所述系统调用获取Web应用进行的文件操作;
步骤C、根据预先配置的篡改规则判断所述Web应用进行的文件操作是否被允许,若是,则执行所述文件操作,若否,则阻断所述文件操作。
本发明同时提供一种网页防篡改装置,所述装置包括:
系统调用劫持模块,用于将Linux系统与文件操作相关的系统调用进行劫持;
文件获取模块,用于根据劫持的所述系统调用获取Web应用进行的文件操作;
篡改网页检测模块,用于根据预先配置的篡改规则判断所述Web应用进行的文件操作是否被允许,若是,则执行所述文件操作,若否,则阻断所述文件操作。
与现有技术相比,本发明通过劫持Linux系统调用,将当前文件操作与系统预先配置的篡改规则进行匹配,根据匹配结果判断网页是否被篡改,并进行文件操作的允许或阻断动作,进而达到了网页防篡改的效果。本发明可以有效地保护Linux系统中Web服务器的网页被篡改,且可适应高性能高并发的Web服务器,方便用户使用。
具体实施方式
本发明提供一种防网页篡改的方法和装置,本发明实现的环境可以为C/S结构,包括管理员客户端、Web服务器、应用服务器、数据库服务器及操作系统及Linux操作系统。本发明采用Li nux操作系统的系统调用劫持和动态加载内核模块(Linux内核模块)技术劫持系统调用,可以有效地防止网页文件被篡改。
为实现本发明目的,以下结合附图详细说明本发明。请参考图1,为本发明提供的一种网页防篡改方法,所述方法包括以下步骤:
步骤A、劫持Linux系统中与文件操作相关的系统调用;
Linux系统采用系统调用实现内核与用户之间的通讯,当用户执行用户操作时,系统会调用到glib库函数,在内核实现系统调用,Linux系统从用户发出系统调用请求到执行实行两次查表操作,一次以0x80为索引查找描述符表,查找中断处理函数system-call的地址,一次以系统调用号为索引查找系统调用表sys-call-table,查找对应的系统调用服务例程地址描述符表、系统调用表,每一个表项保存有对应处理函数地址,系统调用劫持通过修改处理函数地址,使它指向自定义的处理函数,即实现将系统调用表的某个系统调用指向自己实现的系统调用。
步骤B、根据劫持的所述系统调用获取Web应用进行的文件操作;
具体地,当Web应用进行文件操作时,会经历用户层到内核层的切换,执行流程会跳转到操作系统提供的文件系统相关的系统调用,由于系统调用已经被劫持,执行流程会切换到被劫持的系统调用对应的处理函数,通过执行流程获取当前文件操作的规则参数。
步骤C、根据预先配置的篡改规则判断所述Web应用进行的文件操作是否被允许,若是,则执行所述文件操作,若否,则阻断所述文件操作。
在系统初始化时,系统会预先配置篡改规则,当文件获取模块获取了所述Web应用进行的文件操作,篡改网页检测模块会将获取的Web应用进行的文件操作与预先配置的篡改规则进行对比,检测所述的文件操作是否被允许,若被允许,则执行所述的文件操作,否则,阻断所述的文件操作。
进一步地,所述的网页防篡改方法还包括:在步骤C之前,根据用户和/或Web应用的不同,进行所述的篡改规则配置,所述篡改规则包括防护路径和访问权限。
在系统初始化阶段,系统根据用户和/或Web应用的不同,灵活地进行篡改规则的配置,篡改规则主要是针对文件或目录的文件访问权限的控制,由防护路径和访问权限组成,能够支持文件名、文件路径、文件访问权限、用户、用户组以及进程等多种参数。所述防护路径是指被保护的网页文件或网络目录路径。所述访问权限是指允许或禁止特定的权限访问文件。通过文件的防护路径构建tire树,若匹配到路径所指的节点时,表示规则中防护路径匹配,可以进行访问权限的比较。若当前文件操作权限与预先配置的篡改规则的访问权限一致,表示所述Web应用进行的文件操作被允许,则执行所述的文件操作;若当前文件操作权限与预先配置的篡改规则的访问权限不一致,表示有篡改行为发生,文件操作不被允许,则阻断所述文件操作。
需要说明的是,所述文件访问权限指,对于一个文件,其权限由文件本身和上一级目录的权限共同组成,对于文件的特定权限A定义,采用如下方式:a、若文件本身配置了特定权限A的访问控制,权限A采用文件本身的访问权限;b、若文件未配置特定权限A的访问控制,权限A采用上一级目录配置的权限;c、若文件上一级目录未配置特定权限A的访问控制,权限A采用上上一级目录配置的权限,依次类推,直至网站根目录;d、若网站根目录未配置特定权限A的访问控制,则权限A采用系统本身的权限配置。
需要进一步说明的是,所述对篡改规则的预先配置,为了满足高性能服务器的需求,在系统初始化时,采用Aho-Corasick多模式匹配算法对规则进行预处理,在规则条数很多时,能够提升服务器性能。为了满足用户配置篡改规则的灵活性,当篡改规则配置发生变化时,需要再次预处理规则库。
进一步地,对上述文件操作规则进行匹配时,采用Aho-Corasick多模式匹配算法将获取的所述Web应用进行的文件操作与所述预先配置篡改规则进行匹配,根据匹配结果判断所述Web应用进行的文件操作是否被允许。
进一步地,所述步骤C中执行阻断文件操作后,生成对应的篡改日志并记录。所述的篡改日志用于记录篡改的操作、文件、用户、进程以及时间等,所生成的篡改日志可自定义查询、导出等,便于后续跟踪。需要说明的是,所述篡改日志,可由用户自由定义,根据用户定义的篡改规则的不同而不同。
需要进一步说明的是,上述用户指进行篡改的用户。
本发明同时提供一种网页防篡改装置,其特征在于,请参考图2,所述装置包括:
系统调用劫持模块,用于将Linux系统与文件操作相关的系统调用进行劫持;
Linux系统采用系统调用实现内核与用户之间的通讯。当用户执行用户操作时,系统会调用到glib库函数,在内核实现系统调用,Linux系统从用户发出系统调用请求到执行实行两次查表操作,一次以0x80为索引查找描述符表,查找中断处理函数system-call的地址,一次以系统调用号为索引查找系统调用表sys-call-table,查找对应的系统调用服务例程地址描述符表、系统调用表,每一个表项保存有对应处理函数地址,系统调用劫持模块通过修改处理函数地址,使它指向自定义的处理函数,即实现将系统调用表的某个系统调用指向自己实现的系统调用。
文件获取模块,用于根据劫持的所述系统调用获取Web应用进行的文件操作;
具体地,当Web应用进行文件操作时,会经历用户层到内核层的切换,执行流程会跳转到操作系统提供的文件系统相关的系统调用,由于系统调用已经被劫持,执行流程会切换到被劫持的系统调用对应的处理函数,文件获取模块通过执行流程获取当前文件操作的规则参数。
篡改网页检测模块,用于根据预先配置的篡改规则判断所述Web应用进行的文件操作是否被允许,若是,则执行所述文件操作,若否,则阻断所述文件操作。
在系统初始化时,系统会预先配置篡改规则,当文件获取模块获取了所述Web应用进行的文件操作,篡改网页检测模块会将获取的Web应用进行的文件操作与预先配置的篡改规则进行对比,检测所述的文件操作是否被允许,若被允许,则执行所述的文件操作,否则,阻断所述的文件操作。
在系统初始化阶段,篡改规则构建模块根据用户和/或Web应用的不同,灵活地进行篡改规则的配置,所述篡改规则主要是针对文件或目录的文件访问权限的控制,由防护路径和访问权限组成,能够支持文件名、文件路径、文件访问权限、用户、用户组以及进程等多种参数。所述防护路径是指被保护的网页文件或网络目录路径。所述访问权限是指允许或禁止特定的权限访问文件。通过文件的防护路径构建tire树,若匹配到路径所指的节点时,表示规则中防护路径匹配,可以进行访问权限的比较。当当前文件操作权限与预先配置的篡改规则的访问权限一致时,表示所述Web应用进行的文件操作被允许,则执行所述的文件操作;若当前文件操作权限与预先配置的篡改规则的访问权限不一致,表示有篡改行为发生,文件操作不被允许,则阻断所述文件操作。
需要说明的是,所述文件访问权限指,对于一个文件,其权限由文件本身和上一级目录的权限共同组成,对于文件的特定权限A定义,采用如下方式:a、若文件本身配置了特定权限A的访问控制,权限A采用文件本身的访问权限;b、若文件未配置特定权限A的访问控制,权限A采用上一级目录配置的权限;c、若文件上一级目录未配置特定权限A的访问控制,权限A采用上上一级目录配置的权限,依次类推,直至网站根目录;d、若网站根目录未配置特定权限A的访问控制,则权限A采用系统本身的权限配置。
进一步地,如图3所示,所述网页防篡改装置还包括篡改规则构建模块,用于根据用户和/或Web应用的不同,进行上述所述的篡改规则进行配置,所述篡改规则包括防护路径和访问权限。
需要进一步说明的是,篡改规则构建模块对所述篡改规则的预先配置表现为,为了满足高性能服务器的需求,在系统初始化时,采用Aho-Corasick多模式匹配算法对规则进行预处理,在规则条数很多时,能够提升服务器性能。为了满足用户配置篡改规则的灵活性,当篡改规则配置发生变化时,需要再次预处理规则库。
进一步地,篡改网页检测模块对上述文件操作规则进行匹配时,采用Aho-Corasick多模式匹配算法将获取的所述Web应用进行的文件操作与所述预先配置篡改规则进行匹配,根据匹配结果判断所述Web应用进行的文件操作是否被允许。
进一步地,如图3所示,所述网页防篡改装置还包括篡改日志处理模块,用于
篡改网页检测模块执行阻断文件操作后,生成对应的篡改日志并记录。所述的篡改日志用于记录篡改的操作、文件、用户、进程以及时间等,所生成的篡改日志可自定义查询、导出等,便于后续跟踪。需要说明的是,所述篡改日志,可由用户自由定义,根据用户定义的篡改规则的不同而不同。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。