何 倩,趙 幫,王 勇,楊指揮
(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.