◆林 迅
(福富軟件 福建 350001)
基于流量監測的數據庫安全審計系統
◆林 迅
(福富軟件 福建 350001)
本文針對Oracle數據庫設計和實現了一種基于流量監測的安全審計系統,該系統采用旁路部署監聽流量的方式,對被審計數據庫不產生任何影響。本文主要介紹了基于Libpcap函數庫實現網絡數據包捕獲與過濾,網絡協議分析,數據庫協議解析,用戶操作信息提取等技術實現。
TNS協議;Libpcap;審計
Oracle數據庫面臨的安全威脅分類兩類:外部攻擊和內部違規。外部攻擊主要是指黑客利用互聯網,通過Oracle客戶端非法侵入數據庫系統。由于Oracle數據庫本身不提供對網絡用戶的審計記錄功能,該類攻擊在事后無法取證。內部違規是指內部人員越權操作Oracle數據庫,由于Oracle數據庫無法識別哪個網絡用戶冒充使用該賬戶,這類操作事后依然無法取證。因此,要提高Oracle數據庫的安全保障,可以對協議層進行解析和研究,通過對流量的審計分析,在一定程度來解決數據庫所面臨的外部和內部的安全威脅。
Oracle數據庫審計系統由流量采集模塊、審計策略、報表展示等幾個模塊組成的。其中流量采集模塊,采用的旁路監聽的方式,捕獲用戶訪問數據庫的報文。捕獲數據包的模塊是基于Libpcap開發包,Libpcap是一個平臺獨立的網絡數據捕獲開發包,它是一個高層的編程接口,隱藏了操作系統的細節,可以捕獲網絡上的數據包[1]。Oracle數據庫默認監聽端口是1521,Oracle數據庫客戶端和服務端使用TNS協議進行通信,該協議是Net8協議體系的基礎網絡協議[2]。TNS協議在OSI七層模型中屬于應用層,該協議對外不完全公開,每一版TNS協議都有差別。本系統通過對Oracle 11g數據庫的TNS協議進行解析,完成從TNS協議包中提取操作行為和用戶名的功能。TNS協議的結構表1所示。其中,Length是包的長度有包括包頭8個字節,Type是數據包的類型,如表2所示。

表1 TNS協議包結構

表2 Type數據包類型
Oracle數據庫客戶端發起連接,服務端返回四種狀態:接受、拒絕、重新發送、重定向連接【3】。若服務器返回拒絕本次連接結束;若服務器返回重新發送、重定向連接客戶端重新發起連接;若服務器返回接受,客戶端進入驗證過程,驗證失敗服務器結束連接,驗證成功客戶端可以進行數據庫操作,服務器響應用戶的操作,如果發送了EOF,服務端將會主動關閉連接,整個過程結束。針對Oracle客戶端建立連接查詢的過程進行拆解,如圖1所示[4]一個典型TNS登錄會話過程。

圖1 TNS會話
對TNS會話過程抓包分析,除報文采用的Oracle的機密機制對數據庫進行加密之外,其它類型的報文都是采用TCP/IP協議的明文進行傳輸,包含源ip、目標ip、端口、服務標識sid、數據庫賬號、操作指令select、update、結束標識等信息。
由于TNS會話過程,大多采用明文進行傳輸,因此從TNS數據包中可以提取用戶操作信息的方法,如表3所示[5]。

表3 TNS報文提取用戶操作信息
針對TNS報文的分析方法,可以用編碼實現對報文的解析,從TNS報文中提取用戶操作的信息,滿足對數據庫安全審計系統的數據采集來源。
本文實現了基于流量監測的數據庫安全審計,系統能實時記錄用戶對數據庫的操作行為。文章涉及系統部署方式、網絡抓包、TNS協議解析、用戶操作信息提取等技術實現。本文以旁路監聽的方式部署審計系統,對被審計數據庫不產生任何影響,有效解決獨立審計的問題,但是要完善數據庫審計,不僅僅局限于旁路模式,還應該具有更多的混合審計模式相結合,可以更加靈活的滿足不同業務的需求。
[1]Riverbed Technology.The WinPcap manual and tutoria l for WinPcap[EB/OL].[2013-04-20].http://www.winpcap.or g/docs/default.htm.
[2]Oracle Corporation.Architecture of Oracle Net Servies. Oraclegi Net Services Administrator’s Guide Release2(9.2):P artNumber A96580-02.
[3]TNS數據傳輸協議-進階篇.http://blog.csdn.net/loydi a/article/details/51861534.
[4]Rick Wong.Oracle Net8 Administrator’s Guide Relea se 8.0.December,1997:Part No.A58230-01.
[5]楊磊,畢紅軍.基于旁路監聽的數據庫安全審計.計算機工程與應用,2015.