◆林 迅
(福富軟件 福建 350001)
基于流量監(jiān)測(cè)的數(shù)據(jù)庫安全審計(jì)系統(tǒng)
◆林 迅
(福富軟件 福建 350001)
本文針對(duì)Oracle數(shù)據(jù)庫設(shè)計(jì)和實(shí)現(xiàn)了一種基于流量監(jiān)測(cè)的安全審計(jì)系統(tǒng),該系統(tǒng)采用旁路部署監(jiān)聽流量的方式,對(duì)被審計(jì)數(shù)據(jù)庫不產(chǎn)生任何影響。本文主要介紹了基于Libpcap函數(shù)庫實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包捕獲與過濾,網(wǎng)絡(luò)協(xié)議分析,數(shù)據(jù)庫協(xié)議解析,用戶操作信息提取等技術(shù)實(shí)現(xiàn)。
TNS協(xié)議;Libpcap;審計(jì)
Oracle數(shù)據(jù)庫面臨的安全威脅分類兩類:外部攻擊和內(nèi)部違規(guī)。外部攻擊主要是指黑客利用互聯(lián)網(wǎng),通過Oracle客戶端非法侵入數(shù)據(jù)庫系統(tǒng)。由于Oracle數(shù)據(jù)庫本身不提供對(duì)網(wǎng)絡(luò)用戶的審計(jì)記錄功能,該類攻擊在事后無法取證。內(nèi)部違規(guī)是指內(nèi)部人員越權(quán)操作Oracle數(shù)據(jù)庫,由于Oracle數(shù)據(jù)庫無法識(shí)別哪個(gè)網(wǎng)絡(luò)用戶冒充使用該賬戶,這類操作事后依然無法取證。因此,要提高Oracle數(shù)據(jù)庫的安全保障,可以對(duì)協(xié)議層進(jìn)行解析和研究,通過對(duì)流量的審計(jì)分析,在一定程度來解決數(shù)據(jù)庫所面臨的外部和內(nèi)部的安全威脅。
Oracle數(shù)據(jù)庫審計(jì)系統(tǒng)由流量采集模塊、審計(jì)策略、報(bào)表展示等幾個(gè)模塊組成的。其中流量采集模塊,采用的旁路監(jiān)聽的方式,捕獲用戶訪問數(shù)據(jù)庫的報(bào)文。捕獲數(shù)據(jù)包的模塊是基于Libpcap開發(fā)包,Libpcap是一個(gè)平臺(tái)獨(dú)立的網(wǎng)絡(luò)數(shù)據(jù)捕獲開發(fā)包,它是一個(gè)高層的編程接口,隱藏了操作系統(tǒng)的細(xì)節(jié),可以捕獲網(wǎng)絡(luò)上的數(shù)據(jù)包[1]。Oracle數(shù)據(jù)庫默認(rèn)監(jiān)聽端口是1521,Oracle數(shù)據(jù)庫客戶端和服務(wù)端使用TNS協(xié)議進(jìn)行通信,該協(xié)議是Net8協(xié)議體系的基礎(chǔ)網(wǎng)絡(luò)協(xié)議[2]。TNS協(xié)議在OSI七層模型中屬于應(yīng)用層,該協(xié)議對(duì)外不完全公開,每一版TNS協(xié)議都有差別。本系統(tǒng)通過對(duì)Oracle 11g數(shù)據(jù)庫的TNS協(xié)議進(jìn)行解析,完成從TNS協(xié)議包中提取操作行為和用戶名的功能。TNS協(xié)議的結(jié)構(gòu)表1所示。其中,Length是包的長(zhǎng)度有包括包頭8個(gè)字節(jié),Type是數(shù)據(jù)包的類型,如表2所示。
表1 TNS協(xié)議包結(jié)構(gòu)
表2 Type數(shù)據(jù)包類型
Oracle數(shù)據(jù)庫客戶端發(fā)起連接,服務(wù)端返回四種狀態(tài):接受、拒絕、重新發(fā)送、重定向連接【3】。若服務(wù)器返回拒絕本次連接結(jié)束;若服務(wù)器返回重新發(fā)送、重定向連接客戶端重新發(fā)起連接;若服務(wù)器返回接受,客戶端進(jìn)入驗(yàn)證過程,驗(yàn)證失敗服務(wù)器結(jié)束連接,驗(yàn)證成功客戶端可以進(jìn)行數(shù)據(jù)庫操作,服務(wù)器響應(yīng)用戶的操作,如果發(fā)送了EOF,服務(wù)端將會(huì)主動(dòng)關(guān)閉連接,整個(gè)過程結(jié)束。針對(duì)Oracle客戶端建立連接查詢的過程進(jìn)行拆解,如圖1所示[4]一個(gè)典型TNS登錄會(huì)話過程。
圖1 TNS會(huì)話
對(duì)TNS會(huì)話過程抓包分析,除報(bào)文采用的Oracle的機(jī)密機(jī)制對(duì)數(shù)據(jù)庫進(jìn)行加密之外,其它類型的報(bào)文都是采用TCP/IP協(xié)議的明文進(jìn)行傳輸,包含源ip、目標(biāo)ip、端口、服務(wù)標(biāo)識(shí)sid、數(shù)據(jù)庫賬號(hào)、操作指令select、update、結(jié)束標(biāo)識(shí)等信息。
由于TNS會(huì)話過程,大多采用明文進(jìn)行傳輸,因此從TNS數(shù)據(jù)包中可以提取用戶操作信息的方法,如表3所示[5]。
表3 TNS報(bào)文提取用戶操作信息
針對(duì)TNS報(bào)文的分析方法,可以用編碼實(shí)現(xiàn)對(duì)報(bào)文的解析,從TNS報(bào)文中提取用戶操作的信息,滿足對(duì)數(shù)據(jù)庫安全審計(jì)系統(tǒng)的數(shù)據(jù)采集來源。
本文實(shí)現(xiàn)了基于流量監(jiān)測(cè)的數(shù)據(jù)庫安全審計(jì),系統(tǒng)能實(shí)時(shí)記錄用戶對(duì)數(shù)據(jù)庫的操作行為。文章涉及系統(tǒng)部署方式、網(wǎng)絡(luò)抓包、TNS協(xié)議解析、用戶操作信息提取等技術(shù)實(shí)現(xiàn)。本文以旁路監(jiān)聽的方式部署審計(jì)系統(tǒng),對(duì)被審計(jì)數(shù)據(jù)庫不產(chǎn)生任何影響,有效解決獨(dú)立審計(jì)的問題,但是要完善數(shù)據(jù)庫審計(jì),不僅僅局限于旁路模式,還應(yīng)該具有更多的混合審計(jì)模式相結(jié)合,可以更加靈活的滿足不同業(yè)務(wù)的需求。
[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數(shù)據(jù)傳輸協(xié)議-進(jìn)階篇.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]楊磊,畢紅軍.基于旁路監(jiān)聽的數(shù)據(jù)庫安全審計(jì).計(jì)算機(jī)工程與應(yīng)用,2015.