2345技术员联盟

數據庫自主安全防護如何實現 數據庫自主安全防護技術介紹

  • 来源:未知 原创
  • 时间:2018-07-30
  • 阅读:
  • 本文标签:

近年來,有關數據庫的安全事故不斷出現,例如銀行內部數據信息泄露造成的賬戶資金失密等。因此,高度重視數據庫安全防護很有必要。但一直以

來,國內數據庫產業化發展緩慢,市場份額中較大一部分被國外大型數據庫企業占有。這對於國內用戶而言,信息的安全性、穩定性等方面都會受到

威脅。有的系統涉及使用多個數據庫,並且對每個數據庫的安防功能要求各不相同。這樣,在保障整個系統安全的目標下就需要對每個數據庫進行專

門配置管理,不但維護難度很大,而且工作也比較繁重。面對這些實際問題,目前的數據庫系統自帶的安全防護配置方式已不能勝任,如何提出一個靈

活獨立的安全防護系統迫在眉睫。


  1 相關安全防護技術介紹


  目前,數據庫系統面臨的主要威脅有:(1)對數據庫的不正確訪問引起數據庫數據的錯誤。(2)為了某種目的,故意破壞數據庫。(3)非法訪問不

該訪問的信息,且又不留痕跡;未經授權非法修改數據。(4)使用各種技術攻擊數據庫等。多年來,人們在理論和實踐上對數據庫系統安全的研究做出

了巨大的努力,也取得了很多成果。參考文獻[1-2]介紹了保護數據庫安全的常用技術,包括:存取管理技術、安全管理技術、以及數據庫加密技

術,並給出了一些實現途徑。其中,訪問控制和安全審計作為數據庫安全的主要保障措施受到了人們廣泛關註,參考文獻[3]對訪問控制技術中的基

本策略進行了總結,給出了實現技術及各自的優缺點。參考文獻[4]主要針對權限建模過程中的權限粒度問題做了分析,並提出一個基於角色的訪問

控制框架。進入21世紀以後,訪問控制模型的研究重點開始逐漸由集中式封閉環境轉向開放式網絡環境,一方面結合不同的應用,對原有傳統模型做

改進,另一方面,也提出一些新的訪問控制技術和模型,比較著名的有信任管理、數字版權管理和使用控制模型 [5]。審計通過對數據庫內活動的記

錄和分析來發現異常並產生報警的方式來加強數據庫的安全性[6]。目前,在我國使用的商品化關系數據庫管理系統大都提供了C2級的審計保護功

能,但實現方式和功能側重有所不同。周洪昊等人[7]分析了Oracle、SQL Server、DB2、Sybase的審計功能,分別從審計系統的獨立性、自我保護

能力、全面性和查閱能力四個方面對審計功能做出改進[7]。參考文獻[8]則針對審計信息冗余、審計配置方式死板以及數據統計分析能力不足等問

題,在數據庫系統已有的審計模塊基礎上,重新設計和實現了一種新型的數據庫安全審計系統。


  但所有的這些工作都是從 數據庫 系統的角度出發,並沒有從本質上解決安全防護對數據庫系統的依賴性問題,用戶還是很難對數據庫提供自主

的安全防護功能。如果能將安全防護從數據庫管理系統中徹底獨立出來,針對不同的應用需求允許用戶自己實現安全防護功能模塊並在邏輯上加入到

數據庫應用系統中,這樣問題也就迎刃而解了。


  通過以上分析,本文提出一種獨立於具體數據庫、可組態的安全防護模型,並給出具體的實現方法。該模型將安全防護從數據庫完全獨立出來,

在多數據庫應用中實現集中配置安防,滿足用戶對於自主防護功能的需求。並在開源的嵌入式數據庫產品SQLITE中做了功能測試,實驗結果表明,該

模型切實可行,達到了預想的效果,既能實現對系統的保護,又大大提高了系統的靈活性。


  2 自主安全防護系統的設計與實現


  自主安全防護系統DSS(Discretionary Safety System)的主要功能是阻止用戶對信息的非法訪問,在可疑行為發生時自動啟動預設的告警流

程,盡可能防範數據庫風險的發生,在非法操作發生時,觸發事先設置好的防禦策略,實行阻斷,實現主動防禦,並按照設置對所發生的操作進行詳

細記錄,以便事後的分析和追查。


  2.1 系統結構


  在DSS中,安全管理員使用角色機制對用戶的權限進行管理,通過制定安全策略來設置核心部件Sensor以及訪問控制部件。核心部件Sensor偵聽

用戶的數據庫操作請求,采用命令映射表將不同的命令映射為系統識別的命令,提取出安全檢查所需要的信息,發送到訪問控制模塊進行安檢。安檢

通過了則允許用戶訪問數據庫,否則拒絕訪問,同時根據審計規則生成記錄存入審計日誌。


  DSS作為獨立的功能模塊主要通過向Sensor提供數據庫的調用接口的方式保障對數據庫信息安全合理地訪問。系統有一個默認的訪問控制流程,

用戶也可以自己設定安全策略,系統自動生成相應訪問控制流程。本文約定被訪問的對象為客體,請求操作的用戶為主體。


  2.2 系統實現


  系統實現主要分為系統數據字典設計、用戶登錄與用戶管理、系統相關策略制定、偵聽器(Sensor)的實現、訪問控制以及日誌審計六部分。原數

據庫API信息(dll)、用戶的自主防護策略作為輸入,Sensor核心一方面將用戶的防護策略融合在原數據庫的API接口中,另一方面記錄用戶對數據庫

的操作並生成日誌,提供給用戶做審計。用戶在使用過程中不需要修改原有系統,即可實現自主防護。


  Sensor由API處理模塊、訪問控制模塊(Access Control)、Sensor核心模塊(Core)、註射模塊四部分組成。Core是Sensor的核心部件,主要負

責攔截接口,解析並分離接口中的重要信息,使程序轉入自定義的安檢程序中執行安全檢查。Access Control組件實現不同級別的訪問控制,根據用

戶提供的安檢信息,組態出對應的安防模塊,並在合適的時候調用其進行訪問控制。API(dll)主要將數據庫系統提供的接口信息,轉化為dll以便

Sensor偵聽時使用。Inject/Eject為Sensor提供遠程註射的功能。


  Core通過攔截對API的調用來實現定制功能。程序在調用API函數之前,首先要把API所在的動態鏈接庫載入到程序中;然後將API函數的參數、返

回地址(也就是函數執行完後,下一條語句的地址)、系統當前的環境(主要是一些寄存器的值)壓入系統調用棧;接著,進入到API函數的入口處開始執

行API函數,執行過程中從系統調用棧中取出參數,執行函數的功能,返回值存放在EAX寄存器中,最終從堆棧中取出函數的返回值並返回(參數壓棧

的順序還要受到調用約定的控制,本文不詳細介紹)。


  舉例說明函數調用時堆棧的情況。假設調用約定采用_stdcall,堆棧由高向低遞減,API為Int func(int a, int b, int c)。


  攔截主要通過HOOK API技術實現,可以攔截的操作包括DOS下的中斷、Windows中的API調用、中斷服務、IFS和NDIS過濾等。目前微軟提供了一

個實現HOOK的函數庫Detours。其實現原理是:將目標函數的前幾個字節改為jmp指令跳轉到自己的函數地址,以此接管對目標函數的調用,並插入自

己的處理代碼。


  HOOK API技術的實質是改變程序流程。在CPU的指令集中,能夠改變程序流程的指令包括JMP、CALL、INT、RET、RETF、IRET等。理論上只要改變

API入口和出口的任何機器碼,都可以實現HOOK。但實際實現上要復雜得多,主要需要考慮如何處理好以下問題:(1)CPU指令長度。在32 bit系統中,

一條JMP/CALL指令的長度是5 B,因此只需要替換API中入口處的前5 B的內容,否則會產生不可預料的後果。(2)參數。為了訪問原API的參數,需要

通過EBP或ESP來引用參數,因此需要明確HOOK代碼中此時的EBP/ESP的值。(3)時機問題。有些HOOK必須在API的開頭,如CreateFileA( )。有些必

須在API的尾部,如RECV()。(4)程序上下文內容的保存。在程序執行中會涉及修改系統棧的內容,因此註意保存棧中原有內容,以便還原。(5)在

HOOK代碼裏盡量杜絕全局變量的使用,以降低程序之間的耦合性。通過以上的分析,整理出如圖4所示的實現的流程。


  DSS與傳統數據庫的安全防護功能相比,具有以下特點:


  (1)獨立於具體的數據庫。這種獨立性體現在:①DSS只需要數據庫提供其接口信息即可工作。②支持不同標準的SQL語句,通過數據庫命令映射

表可將非標準的SQL語句映射為系統設置的SQL命令。③系統自身數據的物理存儲是獨立於數據庫的。


  (2)靈活性和針對性的統一。用戶可以根據自己的需要配置針對特定應用的相關規則。


  (3)完善的自我安全保護措施。DSS只有數據庫安全管理員和安全審計員才能訪問。安全管理員和安全審計員是一類特殊的用戶,他們只負責安全

方面的操作,而不能訪問數據庫中的數據。這與Oracle等的數據庫不同,在這些數據庫中,DBA可以進行所有的操作。DSS系統本身具有故障恢復能

力,能使系統出現問題時恢復到一個安全的狀態。


  (4)完備的信息查閱和報警功能。在DSS中,本文提供了便利的設計查閱工具,方便用戶對系統進行監控。另外,用戶也可以自己定義報警條件和

報警處理措施,一旦滿足報警條件,系統就會自動地做出響應。


  3 實驗及結果分析


  DSS的開發主要采用VS 2005實現,開發完成後在一臺主頻為2.8 GHz、內存2 GB、裝有Windows 2000操作系統的普通 PC機上對其進行了功能和性

能的測試,使用的數據庫是開源的嵌入式數據庫SQLite 3.6。為了搭建測試環境,需要在SQLite中添加初始化系統自身的數據字典,並開發應用程

序。測試內容包括:登錄、用戶管理、Sensor、訪問控制、日誌審計以及增加DSS前後數據庫系統安全性變化等功能性測試和增加DSS系統後對數據庫

性能的影響兩方面。其中,性能測試主要從時間和資源的增加情況來說明,針對不同數據庫對象分別在五個級別(20 000、40 000、60 000、80 

000、100 000)的數據上進行了插入和查詢操作測試。為了做好性能對比,在SQLite中也添加了相同的訪問控制功能,記為Inline Processing。


  從功能測試結果可以看出,DSS可以為數據庫系統提供自主防護。從性能測試的結果中看出,查詢操作和插入操作耗時相差比較大,這主要是

SQLite工作方式引起的,在執行用戶的插入操作時,數據庫需將內存中的數據寫入磁盤數據庫文件中,占用了一部分時間。而查詢時,SQLite會將數

據庫文件部分內容緩存起來,加快了查詢的速度。另外,增加DSS會對性能有略微的影響,但是它能實現對數據庫系統自主保護。


  本文針對傳統數據庫安全防護功能配置不靈活的問題,提出了一種基於HOOK技術的數據庫通用安全防護系統。該系統的最大優點在於,它不受數

據庫自身的約束,完全獨立於數據庫系統,為用戶提供一種按需定制的功能,不僅增加了安防配置的靈活性而且提高了通用性,可以用於不同的數據

庫系統中。


相关文章

本文来自电脑技术网www.it892.com),转载本文请注明来源.
本文链接:http://www.it892.com/content/security/hacker/20180730/107737.html

无觅相关文章插件,快速提升流量