馮淞耀,蒙琦,楊文杰,黃安妮
(廣西電網有限責任公司,廣西 南寧 530023)
現如今,互聯網技術在人們生活的方方面面發揮著重要的作用,極大地便利了人們的生活。然而,互聯網技術也是一把雙刃劍,它在便利生活的同時也給犯罪分子提供了全新的犯罪手段。近年來,網絡攻擊事件頻發。網絡攻擊事件輕則導致個體敏感信息泄露,重則可能威脅國家安全。根據中國國家計算機網絡應急技術協調中心發布的《2020年中國互聯網網絡安全報告》[1],在2020年,我國境內被篡改的網站數量超過十萬個,超過五萬個網站被植入后門。如何高效地檢測被篡改的網頁是一個亟須解決的問題。本文提出了一種基于區塊鏈與SpringBoot技術的網頁防篡改方案,為解決該問題提供了一種新思路。
2008 年中本聰發表了《比特幣:一種點對點電子現金系統》[2]一文,之后區塊鏈技術引起了學術界與工業界的廣泛關注[3]。區塊鏈本質上是一種去中心化的分布式數據庫,其具有去中心化、可溯源、鏈上數據不可篡改、安全性高等特點,當前在教育、醫療、供應鏈與金融等行業應用廣泛[4]。依賴于區塊鏈上數據不可篡改的特點,將其應用于網頁防篡改,可以有效降低因篡改本地記錄文件而導致漏報的風險。
SpringBoot 是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化Spring 框架復雜的開發環境配置[5]。SpringBoot 框架通過內置的配置文件與邏輯調用,使開發者從繁雜的重復勞動中解脫出來,釋放生產力,提高生產效率。SpringBoot 技術基于Java 語言實現,具有安全可靠與效率高的特點[6]。本項目開發使用SpringBoot框架。
網頁篡改檢測技術主要包含核心內嵌技術、事件觸發技術、外掛網頁輪詢技術三類方式。核心內嵌方式是在Web軟件中內嵌檢測模塊,例如IIS、Apache與Tomcat等軟件,通過數字水印的方式比對網頁是否發生篡改[7]。該技術實現難度大且依賴于Web 軟件,適用性不佳。事件觸發機制是通過操作系統提供的文件接口[8],對文件操作函數進行監測,當預期事件被觸發后即觸發告警。該方法依賴于操作系統API,可遷移性差。外掛網頁輪詢方式是通過監測程序定時對待保護文件進行檢查,發現異常及時告警[9]。該方式可遷移性好且效率高,本系統使用外掛輪詢技術。
系統使用B/S 架構,網頁防篡改系統數據管理平臺通過瀏覽器訪問。設計的網頁防篡改系統模塊主要包括網頁路徑初始化模塊、區塊鏈操作模塊、路徑檢索模塊、路徑存儲模塊、路徑比對模塊、路徑統計模塊、系統配置模塊、通知告警模塊等。系統區塊鏈平臺使用自建的區塊鏈平臺,本地數據庫使用MySQL數據庫。系統模塊結構圖如圖1所示。

圖1 系統模塊架構圖
各模塊功能簡述如下:網頁路徑初始化模塊用于完成系統初始化,采集待保護網頁的初始化信息;區塊鏈操作模塊用于對接區塊鏈平臺,完成路徑數據上傳到區塊鏈與從區塊鏈下載路徑數據的操作;路徑檢索模塊用于遞歸采集待保護路徑的全部文件絕對路徑;路徑存儲模塊用于計算各個絕對路徑文件對應的數字摘要值并進行存儲;路徑比對模塊用于數據比對,比對系統采集的數據、數據庫中數據與區塊鏈平臺存儲的數據;路徑統計模塊對路徑信息進行統一管理,進行可視化數據展示;系統配置模塊主要完成系統參數配置,包括檢測頻率參數、檢測路徑參數以及用戶賬號配置;通知告警模塊用于展示系統工作狀態,提示用戶系統是否存在異常信息,在系統存在異常信息時可以進行及時告警。
系統流程圖如圖2所示。

圖2 系統流程圖
系統完成部署后將自動通過默認參數完成系統初始化配置并監聽指定端口,等待管理員通過瀏覽器訪問。系統管理員通過瀏覽器訪問防篡改系統數據管理平臺進行參數配置,如系統檢測頻率、待保護文件夾的路徑信息等。待系統參數配置完成后,系統自動進行網頁路徑首次采集并計算各個文件的數字摘要值,將其存入本地的MySQL 數據庫,并將一個副本保存到區塊鏈平臺。之后系統進入輪詢狀態,系統自動根據配置的輪詢檢查間隔時間定期檢查系統指定路徑文件并計算其數字摘要值。
將計算出的各個數字摘要值與本地數據庫中保存的記錄進行比較,如果比較結果一致,則系統文件均正常。系統進入下一次輪詢狀態。如果計算出的數字摘要值與本地數據庫保存的值不一致,則從區塊鏈平臺下載對應的文件數字摘要值進行比較。如果從區塊鏈平臺下載的數據與本地數據庫數據不一致,則本地數據庫數據出現了異常,系統將告知管理員進行排查。如果從區塊鏈平臺下載的數字摘要值與系統輪詢檢查的值不一致,則保護的文件出現了異常。系統將及時告警并通知管理員進行進一步處理。待管理員將全部風險處理完成之后,系統重新進入輪詢狀態。輪詢檢查的流程圖如圖3所示。

圖3 輪詢檢查流程圖
本系統實現使用MySQL 數據庫。MySQL 是當前非常流行的關系型數據庫,在Web應用系統中使用非常頻繁,其具有讀取速度快、技術成熟與管理便捷的特點。本系統根據業務需求定制數據庫,包含用戶表、輪詢任務表、文件目錄表、文件列表、日志表與參數配置表。
1) 用戶表。用戶表用于存儲系統賬戶信息。通過訪問用戶表的數據,可以獲取用戶的創建時間、用戶的狀態、用戶的用戶名等數據。
2) 輪詢任務表。輪詢任務表用于存儲系統定時執行的輪詢任務,系統將各個輪詢任務轉化為記錄表的數據。各個任務被存儲于數據表中,方便修改與系統訪問。
3) 文件目錄表。文件目錄表用于存儲系統需要保護的文件目錄。通過文件記錄表可以獲取文件目錄的狀態、文件添加到系統的時間、文件目錄描述以及文件的其他信息。系統基于該數據表完成與目錄相關的操作。
4) 文件列表。文件列表用于存儲系統檢索的全部文件與對應的文件數字摘要值。系統計算完全部的文件數字摘要值之后,將對應的文件路徑與數字摘要值存入其中。系統在驗證比對文件是否被修改時也需要訪問該數據表數據。
5) 日志表。日志表用于存儲日志,便于系統溯源查詢。系統在進行各項操作時會產生大量的日志,系統將日志信息存儲在該表中。系統在展示日志情況時需要從該表讀取數據。
6) 參數配置表。參數配置表存儲系統各個執行的參數。系統運行時需要配置眾多的參數,如果將參數通過硬編碼的方式寫在代碼中,則不利于對系統進行個性化配置。將各個參數存儲在數據庫中,在需要的時候進行讀取。在需要修改參數的時候,可以通過系統進行修改,進一步提高了系統的靈活性。
為保障系統賬戶安全,系統密碼不明文存儲,利用哈希算法并配合密碼鹽值進行編碼處理,密碼比對時,僅比對哈希值?;诠V挡豢赡娴奶匦?,編碼后可以有效降低敏感數據泄露風險。
系統使用IDEA 編程工具與Navicat 數據庫管理工具進行開發;系統采用B/S 架構,前后端分離,可拓展性好。系統服務器端采用Java 程序設計語言,配合SpringBoot框架與MySQL數據庫進行開發。前端展示頁結合BootStrap 前端框架與JQuery 框架并利用Thymeleaf模板進行開發。
系統開發的難點是網頁防篡改平臺與區塊鏈平臺的數據交互實現。區塊鏈平臺提供對外API 可以實現數據上鏈與數據下載的功能,通過系統對外提供的API 完成本系統的需求。區塊鏈數據上鏈測試結果如圖4所示。

圖4 區塊鏈平臺對接效果圖
開發完成后,系統通過 Maven 打包為jar 后即可發布使用,具有操作簡便、可移植性好的特點。
通過Java jar命令將Maven打包好的jar包運行即可完成系統部署,高效快捷。執行效果如圖5所示。

圖5 系統部署圖(Java -jar方式)
系統首頁展示當前系統監測的目錄列表與系統完成每次檢測之后的結果。不同類型的檢測結果使用不同的顏色標出,綠色表示檢測結果正常,紅色則表示檢測到異常情況,需要管理員立即處理。系統初始化完成后,系統根據系統默認參數運行。當管理員添加需要監測的目錄與輪詢時間后,系統按照相關配置運行。系統監控時,系統監測網頁目錄并按照每五分鐘檢查一次的頻率進行。系統定時檢測指定目錄,并依照不同的檢測結果標注不同的顏色,結果清晰準確。
為驗證系統檢測的效果,模擬設計了四類實際生產環境可能存在的情況,包括:指定文件夾下文件被修改、指定文件夾下文件被刪除、指定文件夾下創建文件與本地MySQL數據庫記錄被修改。
指定文件夾下文件被修改是指在系統保護的路徑中,非法入侵者刪除了某些文件的部分內容或者將惡意內容嵌入到文件中。非法入侵者常在系統原本存在的文件中添加可以執行的內容,通過此方法可以獲取系統命令執行權限。指定文件夾下文件被刪除是指在系統保護的路徑中,非法入侵者刪除了某些文件。這可以導致系統數據丟失或者功能模塊運行異常。指定文件夾下創建文件是指非法入侵者通過系統漏洞、web 漏洞或者SQL 注入等方式[10]在指定的Web文件夾下新建了文件,這是非法入侵者最常使用的方式,也是危害程度較高的一種方式。本地MySQL數據庫記錄被修改是指數據庫中原本存在的初始化參數包括系統配置參數、初始化時候待保護文件的數字摘要值等被修改;這可能是非法入侵者獲得了MySQL賬戶權限或者通過SQL注入的方式實現。
系統對于每種情況的實驗效果如表1所示。

表1 檢測效果驗證表
通過模擬實驗,驗證了該系統在以上四種模型情況中的良好表現。系統通過定期比對文件的數字摘要值,能夠非常準確地檢測出是否存在異常。同時利用區塊鏈上數據不可篡改的特性,能有效避免漏檢,進一步提高系統監測的準確性。
針對當前存在的網頁頻繁被篡改問題,本文設計了一套基于區塊鏈與SpringBoot技術的網頁防篡改檢測系統,介紹了系統的各個模塊功能、數據庫設計以及具體實現,通過模擬實驗驗證了所設計系統的有效性。但系統檢查是定期運行的,在檢查的時間間隔中,不法入侵者可能已經完成了某些高危操作。為解決該問題,下一步將探討高效率、實時檢測與可移植性好的檢測方案。