何 倩,赵 帮,王 勇,杨指挥
(1. 桂林电子科技大学认知无线电与信息处理教育部重点实验室,广西 桂林 541004;2. 国防科学技术大学计算机学院,长沙 410073)
随着国家互联网新技术、新应用的快速发展,网站信息安全问题日益复杂,网页被篡改事件日益严重,国家互联网应急中心(CNCERT/CC)分析统计出的2010 年中国互联网安全报告年报显示,在所有网络安全事件中,网页篡改事件名列前茅,在所有监测境内数据结果显示,每月被篡改的网站数量平均为2904 个,即中国大陆地区平均每天就有100 个网站被篡改[1],Web 文件的保护问题面临着严峻的挑战。
一旦黑客跳过网页保护对网页进行非法篡改,就会给网站的所有者甚至整个社会带来严重的损害和负面影响。在网站防篡改保护方面的研究可以归纳为事前预防、事中阻止和事后恢复[2]。事前依靠安全评估和防火墙实现,如文献[3]采用静态分析检测Web 代码中是否存在安全漏洞。在事中阻止方面,主要技术有外挂轮训技术、事件触发技术、核心内嵌技术和文件过滤驱动技术。在事后恢复方面,作为防止网页被篡改的最后一个措施,要求网页被篡改后能及时恢复,用户仍可以访问到正常网页。现有研究对事后恢复机制讨论的很少,一般都是作为网站保护系统的补充。文献[4]介绍了一种网页防篡改模型,模型包括一个备份恢复子系统,在Web 服务器出现故障后提供Web 服务器的裸机系统恢复,但此系统达不到事后实时恢复的要求,只提供了一个灾难备份。国内出现的一些商业系统:如IGuard网页防篡改系统[5]、WebGuard 网页防篡改系统[6]、InforGuard 网页防篡改系统[7],从公开的资料看,IGuard 没有备份恢复功能,WebGuard 使用数字证书对文件加密备份的,InforGuard 只是采用了一种简单的自动增量备份,这些系统都达不到Web 页面被篡改后能实时的恢复。普通的文件管理系统并不适合网页防篡改系统的要求。市场上也有很多备份产品,这些系统大都专注于大规模集群提供集中式的备份服务[8],也就是海量数据的备份和存储问题,而没有关注小文件的实时备份和恢复,因此满足不了网页防篡改安全恢复机制的要求。本文主要针对网页防篡改的特殊要求提出了自己的解决方案,在网页被篡改后能快速的进行恢复,用户访问到的仍是正常网页。
网站自动备份和恢复是Web 防御体系的一个重要组成部分,也是防篡改的最后一道防线。为保护Web 数据访问过程的安全,本文在前期实现的基于过滤驱动和反向代理的分布式网页防篡改系统[9]的基础上,引入本地Web 服务器上对Web 数据进行实时的快照,当网页被篡改时,使用快照文件对用户访问请求进行响应,同时对Web 页面文件进行远程备份,使用远程同步算法Rsync 保证远程数据与本地Web 服务器数据的同步一致。因此,即使网站被篡改,用户访在问过程中访问到的仍是正常网页,同时远程文件的同步,为被篡改的Web 文件恢复提供保证。
分布式防篡改系统可以为网站提供全方位的立体防护,系统主要包括Web 文件监控、内容发布、Web 代理、备份恢复、监控中心5 个子系统[9],如图1 所示。
图1 分布式网页防篡改系统架构
Web 文件监控子系统运行于Web 服务器,包括应用程序部分和驱动部分。基于文件过滤驱动技术实现Web 服务器上Web 目录上的文件创建、删除和修改的监视,发现非法修改后禁止、告警。内容发布子系统用于发布Web 页面代码到服务器和备份服务器,只有通过内容发布子系统发布的文件才合法,否则都会被Web 文件监控告警。内容发布采用安全的SSL 和数字证书技术。Web 代理子系统运行于独立Web 代理服务器,一方面实现对后台WWW 服务器的请求转发和回应,另一方面还要进行语义检查、动态页面保护、防止SQL 注入和跨站脚本攻击等。语义检查就是发现非法内容要过滤,动态页面保护是对关键动态页面的HASH 值比较,发现有变化需要提示监控中心是否合理,在没提示合法之前,仍然使用旧的页面返回。对客户端POST 和GET 的参数内容进行HTTP 解析,防止SQL 注入和跨站脚本攻击。备份恢复子系统实现对部署在Web 服务器上的Web 程序进行备份,在发现非法更改或丢失时可以自动恢复。当黑客入侵数据库动态修改了网站内容时,帮助网站管理员进行恢复。监控中心子系统提供查看Web 服务器运行信息、网页告警信息以及来自各系统的交互信息,提供管理所有5 个子系统的统一平台。本文主要讨论备份恢复子系统的设计与实现中的关键技术。
备份恢复系统模型主要由本地备份系统和远程备份系统两部分组成。本地备份系统采用快照技术实现,每当Web页面被篡改而用户在发送查看Web 页面请求时,Web 服务器通过快照技术把原Web 页面的快照发送给用户浏览,实现了系统的访问保护。为了进一步保护Web 服务器的安全,在Web 服务器的页面和快照文件同时被破坏时,此时仅依靠本地备份无法实现篡改页面的恢复,它部署在备份服务器上,管理员需要指定一个备份策略,该文件系统根据管理员订制的备份策略可以实现文件备份(包括完全备份、增量备份和差量备份)和恢复。随着时间的增长,备份后的文件越来越多,因此需要对这些备份文件进行版本管理,使得在Web 页面恢复时,可以实现一个特殊页面或一个特殊时期的Web 网站进行确切的恢复。其中,为了确保系统的安全,远程备份系统在文件传输的过程中用到了文件加密技术,为了提高备份恢复的速度,减少网络负载,所有文件都可以先压缩然后通过网络传输。备份恢复的系统模型如图2 所示。
图2 备份恢复系统模型
由于当前网页防篡改系统普遍忽略系统的备份和恢复,网页防篡改系统的安全恢复机制对备份恢复系统的性能有特殊的性能要求,整个备份恢复系统的整体框架如图3所示。
图3 系统总体框架
从物理结构上看,备份服务器和Web 服务器通过网络连接在一起,通过在Web 服务器上部署客户端实现数据的提取和恢复,两者之间通过FTP 协议或Rsync 同步实现到备份服务器上的远程数据传输。从逻辑结构上看,多版本在线备份恢复系统由客户端和服务器端组成,客户端主要负责系统的远程备份/恢复、文件的加密解密、文件的压缩解压缩、文件的多版本管理、备份任务的定制、日志管理。服务器端提供FTP 和Rsync 服务接口和数据。以下将主要分析从远程备份过程中文件的同步和本地快照中的Web 访问保护。
本地备份系统主要是通过快照技术在Web 服务器上生成原始Web 页面的瞬间映像,当Web 页面被篡改而用户在发送查看Web 页面请求时,Web 服务器通过快照技术把原Web 页面的映像发送给用户浏览,使得系统看起来完好无损,满足了系统对用户的实时响应。本文系统在创建虚拟文件系统的快照时,只是对Web 服务器文件系统的根节点进行快照,快照根节点就是原节点的一个投影,具有相同的节点信息。那么快照根节点就生成了一个节点树,此节点树与Web 服务器文件节点相同,如图4 所示。
图4 快照的生成
当原文件进行合法的增、删、改时,快照节点也会同时进行更新信息。新增文件或目录时,首先根据快照根节点找到新增节点的父节点,然后建立此父节点的快照节点并把原节点的节点信息赋给此快照节点。在目录a 下新建文件g 的过程如图5 所示。在删除文件或目录的时候,首先根据快照根节点找到删除节点的父节点,然后建立此父节点的快照节点并把原节点的节点信息赋给此快照节点。在目录a 下删除文件c 的过程如图6 所示。在修改文件或目录的时候,当Web 服务器文件节点信息发生改变时,首先根据快照根节点找到修改节点的全部父节点,然后建立这些父节点的快照节点并把原节点的节点信息赋给这些快照节点。将目录a 移动到目录b 下的操作过程如图7 所示。
图5 新建的文件或目录
图6 删除的文件或目录
图7 修改的文件或目录
在远程文件备份恢复过程中,一个好的同步算法直接影响系统的备份恢复速度,特别是网页防篡改系统中,Web服务器页面文件经常会发生修改,因此需要备份服务器上的备份文件进行同步更新,本文以同步请求发起端为客户端,也就说是备份系统客户端,同步请求响应端为服务器端也就是备份服务器端。客户端的文件为 Fold,服务器端文件为 Fnew,经过同步后客户端文件将被同步为 Fnew,在很多系统中,直接将服务器端的 Fnew传送给客户端,覆盖Fold文件,这样实现简单但是有很多缺点,特别是在网络速度慢的情况下,文件的传输将会占用大量的时间。
本文引入了文件同步算法Rsync。此算法通过计算 Fold和 Fnew之间的差异 Fdiff,然后只传送很小的差异文件Fdiff到客户端,再与 Fold合并生成 Fnew以达到文件的同步。Rsync 算法是著名学者Andrew Tridgell 提出的,由于算法实现简单且能快速高效的实现远程数据的同步而被广泛使用[10]。Rsync 算法的实现主要分3 个阶段,算法实现过程如图8 所示。
图8 基于Rsync 的文件同步
其原理如下:
第1 阶段:客户端发起同步请求
(1)客户端对同步文件 Fold进行分块,设每块的块长为m,最后一块的块长小于等于m,但仍分出m 的长度,剩余部分以0 填充。
(2)计算强、弱校验,对每块数据进行32 位滚动弱校验和124 位MD4 强校验。
(3)客户端将强、弱校验值发给服务器端。
第2 阶段:服务器端接收同步请求。
(1)服务器端接收客户端发送的强、弱校验值文件。
(2)服务器端依照强、弱校验值对接收到的数据进行排序并建立Hash Table。
(3)服务器端对 Fnew进行分块,每块长度为k,然后计算弱校验值,并与Hash Table 中的值进行对比,如果相同再计算强校验值,若仍然相同,说明此块中2 个文件没发生改变。只要有一点不同就说明两文件之间存在差异,将差异数据块的哈希值保存,并建立差异匹配文件 Fdiff。
(4)发送差异匹配文件 Fdiff到客户端。
第3 阶段:客户端重构 Fold文件
(1)客户端接收差异匹配文件 Fdiff
(2)根据差异匹配文件重构 Fold文件,建立临时文件Temp,根据差异匹配文件 Fdiff,将没有变化的文件块从Fold复制到Temp 中,有变化的文件块从差异文件 Fdiff复制到Temp 中,那么新组成的文件Temp 就和服务器端文件Fnew相同,用Temp 替换 Fold,差异重构完成,同步完成。
基于Rsync 文件同步实现了一个面向网站防篡改的备份恢复系统,系统在Myeclipse 开发平台下采用Java 语言开发,程序主界面如图9 所示。系统实现了第2 节涉及的备份任务、备份策略、数据的压缩和加密等功能,系统包括服务器和客户端2 个部分。使用2 台计算机,分别安装Windows 2003 和Windows XP 操作系统,配置100 MB/s 的网络环境,实验环境和参数如表1 所示。
图9 网站防篡改备份恢复系统主界面
表1 实验环境参数
首先测试了基于本地快照的Web 访问保护功能,不通过合法的Web 文件发布系统修改Web 文件内容,而是通过FTP 暴力修改被保护服务器上的Web 文件,因为这种修改不合法,快照上的数据保持不变,普通Web 用户访问并没有访问到被篡改的内容,依然显示的是原先快照上的合法内容,单个被篡改文件的恢复时间在100 ms 以内。
使用著名开源网站Jeecms 的源文件作为数据来源,随机选取一定数量的文件组成一个指定大小的文件夹,模拟Web 文件内容被篡改,随机修改10%左右的文件内容,比较使用Rsync 同步算法(Rsync)和传统的直接使用文件覆盖(Covering)2 种文件恢复方法。在同步不同大小文件夹的时候,客户端数据同步到服务器端所需时间的对比如图10 所示(完成时间为多次试验的均值)。可见,采用Rsync 同步效率要高于使用传统的文件覆盖方法,平均恢复时间降低了约17.5%,这是因为在使用文件同步算法Rsync 对较大文件进行同步时,只需传输文件的差异部分,然后进行差异同构,而使用传统文件覆盖方法时,需对整个文件进行传输覆盖,如果网络状况不好,文件覆盖将耗费更多的时间。
图10 Rsync 恢复性能分析
当前网页防篡改事件日趋严重,为保证非法篡改网页不访问和篡改文件可恢复,本文基于分布式网站防篡改系统,给出了面向网站保护的备份恢复系统模型与设计框架,提出一种基于本地快照和Rsync同步的Web文件保护方法,利用本地快照实现Web 文件的访问保护,基于Rsync 算法备份和恢复可能被篡改的Web 文件。实验结果表明,使用本地快照可以有效地保护非法Web 篡改内容不被访问,使用Rsync 文件同步方法加快了非法篡改的恢复速度。目前,基于本地快照和Rsync 的Web 访问保护方法已经在实际的系统中得到应用,具有较好的应用前景。下一步将结合软件形式化方法完善本地快照算法。
[1]中国互联网状况白皮书[EB/OL]. [2011-05-15]. http://news.xinhuanet.com/2010-06/08/c_12195221.htm.
[2]高延玲,张玉清,白宝明,等. 网页保护系统综述[J]. 计算机工程,2004,30(10): 113-115.
[3]Huang Yaowen,Yu Fang,Huang Christian,et al. Securing Web Application Code by Static Analysis and Runtime Protection[C]//Proc. of the 13th International World Wide Web Conference. New York,USA: Association for Computing Machinery,2004: 40-52.
[4]张 磊,王丽娜,王德军. 一种网页防篡改的系统模型[J].武汉大学学报,2009,55(1): 121-124.
[5]天存信息技术有限公司. Introduce of iGuard Web Tamper Resistant System[EB/OL]. [201-05-15]. http://www.tcxa.com.cn/solution/solution_government.html.
[6]智恒联盟科技有限公司. 网页防篡改保护系统[EB/OL].[2011-05-15]. http://www.zhihengit.com/a/chanpinyufuwu/zhu anyejihulianwangwangzhananquanf/2010/0705/27.html.
[7]中创中间件. InforGuard WebShield[EB/OL]. [2011-01-20].http://www.inforguard.com/index.shtml.
[8]Xu Wei,Wang Min,He Xiang,et al. BM-CVI: A Backup Method Based on a Cross-version Integration Mechanism[C]//Proc. of International Conference on Convergence Information.[S. 1.]: IEEE Press. 2007: 781-788.
[9]Zhou Jun,He Qian,Yao Linlin. A Distributed Website Antitamper System Based on Filter Driver and Proxy[C]//Proc. of MSEC International Conference on Multimedia,Software Engineering and Computing. [S. 1.]: Springer Verlag,2011:415-421.
[10] Tridgell A,Mackerras P. The Rsync Algorithm[EB/OL].[2011-08-19]. http://rsync.samba.org.