国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SQL Server數(shù)據(jù)庫中數(shù)據(jù)的安全監(jiān)控1

2012-09-19 06:37李雅靜
震災(zāi)防御技術(shù) 2012年2期
關(guān)鍵詞:記錄表IP地址視圖

張 暉 李雅靜 趙 穎

(天津市地震局,天津 300201)

SQL Server數(shù)據(jù)庫中數(shù)據(jù)的安全監(jiān)控1

張 暉 李雅靜 趙 穎

(天津市地震局,天津 300201)

本文主要闡述了作者在工作中遇到的 SQL Server數(shù)據(jù)庫中一些重要數(shù)據(jù)泄漏或是異常變動現(xiàn)象,隨后通過各種技術(shù)手段追蹤數(shù)據(jù)異常變更的根源的學(xué)習(xí)研究過程。從而達到了對日常工作中的重要數(shù)據(jù)進行安全監(jiān)控、跟蹤相關(guān)操作的目的,同時,也為各類數(shù)據(jù)的安全性、準確性提供了堅實的保障。

SQL Server 關(guān)系數(shù)據(jù)庫 存儲過程 追蹤

前言

數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)庫以防止不合法的使用造成數(shù)據(jù)泄漏、更改或破壞。數(shù)據(jù)庫和計算機系統(tǒng)的安全性,以及操作系統(tǒng)和網(wǎng)絡(luò)系統(tǒng)的安全性是緊密聯(lián)系、相互支持的(王岳斌等,2009)。

當前,對數(shù)據(jù)庫安全的威脅主要分為物理上的和邏輯上的。物理上的威脅主要是指由計算機軟硬件故障、錯誤導(dǎo)致的數(shù)據(jù)丟失等,為了消除物理上的威脅,通常采用備份和恢復(fù)的策略。邏輯上的威脅主要是指對信息未被授權(quán)的存取,可以分為3類:①信息泄漏,包括直接和非直接(通過推理)地對保護數(shù)據(jù)的存取;②非法數(shù)據(jù)修改,由操作人員的失誤或非法用戶的故意修改引起;③拒絕服務(wù),通過獨占系統(tǒng)資源導(dǎo)致其他用戶不能訪問數(shù)據(jù)庫(Li Yanyuan,2005;徐龍琴等,2009)。

本文中所要追蹤的是使用超級管理員的高級權(quán)限登錄數(shù)據(jù)庫對數(shù)據(jù)進行查詢、更改甚至刪除等操作的現(xiàn)象。

1 研究過程

目前,SQL Server數(shù)據(jù)庫已被廣泛應(yīng)用于各個領(lǐng)域,而地震行業(yè)中的信息網(wǎng)絡(luò)、測震臺網(wǎng)、前兆臺網(wǎng)、應(yīng)急指揮、震害防御等學(xué)科也或多或少地應(yīng)用到該數(shù)據(jù)庫系統(tǒng)。天津地震應(yīng)急指揮系統(tǒng)使用了基于SQL Server數(shù)據(jù)庫的檢索系統(tǒng),在系統(tǒng)的開發(fā)和使用中發(fā)現(xiàn)一些重要數(shù)據(jù)的異常變動,這些數(shù)據(jù)的變更并非通過相應(yīng)的程序正常操作而發(fā)生的。為了保障數(shù)據(jù)的安全,開始研究重要數(shù)據(jù)讀寫的追蹤(王建國等,2006)。

1.1 初步研究

面對上述情況,首先對日志文件進行查詢。日志文件能夠顯示出數(shù)據(jù)被查詢或是被篡改的SQL語句和執(zhí)行時間等信息,但日志文件里只記錄了登陸數(shù)據(jù)庫的用戶名,即超級管理員用戶名,無法定位到執(zhí)行該指令的計算機,更無法定位到具體人員。日志文件如圖1所示。

圖1 SQL Server日志文件Fig. 1 SQL Server log files

經(jīng)研究我們發(fā)現(xiàn),可通過DBCC INPUTBUFFER語句來獲取客戶端發(fā)送到SQL Server的最后一條SQL語句。這個方法需要提供session_id,而這個session_id可以通過master庫(系統(tǒng)庫)中的系統(tǒng)視圖sys.sysprocesses來獲得,而這個系統(tǒng)視圖中有這樣幾個字段:hostname(客戶端機器名)、program_name(應(yīng)用程序名稱)、net_address(最初認為net_address是客戶機的MAC地址,但經(jīng)過多次試驗發(fā)現(xiàn)有的機器確實是MAC地址,有的卻不是)。這樣,如果局域網(wǎng)內(nèi)有通過域來管理所有機器,那么客戶機的機器名是不能隨意變動的,即可通過查詢hostname來鎖定執(zhí)行相關(guān)指令的客戶端。

通過寫一個.net程序(c/s架構(gòu)),其中設(shè)一個定時器(timer),每間隔一秒鐘刷新一次,每次刷新都通過DBCC INPUTBUFFER語句來獲取客戶端發(fā)送到SQL Server的最后一條SQL語句,當然這里面的session_id(即spid)要通過sys.sysprocesses來循環(huán)獲取,然后將獲取的語句以及相關(guān)信息寫入建好的記錄表中。定時器程序執(zhí)行存儲過程的流程如圖2所示。

圖2是程序中刷新監(jiān)控記錄的存儲過程,可以實時監(jiān)控,也可以將這些記錄再寫入一個歷史記錄表中以便存證。如果局域網(wǎng)未通過域來管理,即客戶端可隨意更改本機的機器名,這樣就必須找出執(zhí)行相關(guān)指令的客戶端的 IP地址。客戶端的 IP地址可以用 exec master..xp_cmdshell ping host_name方法獲得。但是此方法僅限于客戶端機器開啟ping功能的情況下,一旦其關(guān)閉該功能則無法取得對方客戶端的IP地址。

經(jīng)過不斷測試,我們發(fā)現(xiàn)該方法仍然存在以下幾個問題:

圖2 存儲過程流程圖Fig. 2 Flowchart of storage procedure

①無法追蹤到客戶端通過存儲過程訪問數(shù)據(jù)庫的具體SQL語句。

②監(jiān)控是通過定時器的循環(huán)指令執(zhí)行,如定時器間隔時間設(shè)置過長,則會遺漏一些重要信息;如定時器時間間隔設(shè)置過短,則會占用服務(wù)器較多資源,從而影響服務(wù)器的正常運行。

③記錄中存在hostname為空的SQL語句執(zhí)行記錄,這樣便無法追蹤到執(zhí)行該指令的客戶端(上文所述獲取客戶端IP地址的方法也是通過hostname來實現(xiàn)的)。

1.2 深入研究

在進一步研究的過程中,還需要將測試中發(fā)現(xiàn)的問題一一解決。

首先,通過遍歷 sys.object系統(tǒng)表來發(fā)現(xiàn)可疑的存儲過程,即通過sp_helptext來讀出該存儲過程的內(nèi)容,同時遍歷其語句,看看有無訪問數(shù)據(jù)表。

其次,通過SQL Server自帶的SQL Server Profiler功能查找遺漏的重要信息,如圖3所示。

圖3 SQL Profiler菜單Fig. 3 Main menu of SQL Profiler

在初步研究的方案中是通過DBCC INPUTBUFFER語句來獲取客戶端發(fā)送到SQL Server的最后一條SQL語句。如果一次性提交多條SQL語句,該方法只能夠捕捉到最后一條SQL語句,而忽略前面的若干條。經(jīng)測試,通過SQL Server Profiler功能來跟蹤語句則不會出現(xiàn)類似的狀況,SQL Server Profiler功能可以跟蹤出所有的SQL語句,避免了重要信息的遺漏。

經(jīng)過一段時間的研究及測試,發(fā)現(xiàn)安裝PowerBuilder開發(fā)環(huán)境的客戶端可以通過開發(fā)環(huán)境連接SQL Server數(shù)據(jù),并查看或更改數(shù)據(jù),這樣通過DBCC INPUTBUFFER方法無法獲取其主要的 SQL語句,只能捕捉到最后一句,通常是提交或回滾數(shù)據(jù)庫事務(wù)的語句,而通過SQL Server Profiler功能來跟蹤語句則能夠跟蹤到所有語句。

當hostname為空時,如何找到該記錄對應(yīng)的客戶端機器,則需要通過SQL Server Profiler功能跟蹤表中的SPID與當時的關(guān)系庫中的系統(tǒng)視圖sys.dm_exec_connections中的session_id關(guān)聯(lián),就可以從系統(tǒng)視圖sys.dm_exec_connections中的client_net_adress字段中獲取執(zhí)行指令的客戶端的IP地址了。為什么是“當時”呢?因為SPID即session_id在數(shù)據(jù)庫中是又系統(tǒng)分配的,只能保證在一段時間內(nèi)唯一。因此我們在跟蹤到相關(guān)語句時,必須盡快聯(lián)表查詢到對應(yīng)IP,并寫入一個記錄表中,才能達到準確存證的目的。

2 實現(xiàn)過程

上文已經(jīng)將遇到的技術(shù)難點一一解決,接下來是記錄實現(xiàn)的過程:

(1)SQL Server Profiler設(shè)置

第一步需要設(shè)置SQL Server Profiler跟蹤,下面列出幾個關(guān)鍵的操作步驟:

①設(shè)置跟蹤記錄表

打開SQL Server Profiler后,點擊菜單中“文件”——“新建跟蹤”,然后選擇需要跟蹤的數(shù)據(jù)庫并通過超級管理員用戶登錄。在彈出的跟蹤屬性對話框中勾選“保存到表”,并將該表保存到我們需要存證的那個數(shù)據(jù)庫。也可以根據(jù)需要設(shè)置一個跟蹤停止時間,因為這個跟蹤表不能無限增大,最好定期更換。需要注意的是,跟蹤表不能保存在被跟蹤的數(shù)據(jù)庫實例中,否則會產(chǎn)生大量的冗余跟蹤數(shù)據(jù)。

②設(shè)置關(guān)鍵字

在跟蹤屬性對話框內(nèi)選擇“事件選擇”標簽頁,這里可以根據(jù)實際需求來勾選需要跟蹤的事件以及所顯示列等,如圖4所示。

圖4 SQL Profiler跟蹤屬性——事件選擇Fig. 4 SQL Profiler track attribute — events selection

必須要在TextData字段上設(shè)置關(guān)鍵字,例如數(shù)據(jù)表名、字段名等。在關(guān)鍵字前后加上“%”,便于在跟蹤到的SQL語句中模糊查詢。

參數(shù)設(shè)置完成,即可運行,開始跟蹤數(shù)據(jù)庫。還需要注意兩點:一是可以將該跟蹤存為一個模板,便于重復(fù)使用;二是該跟蹤程可以運行在任何一臺可以連接被跟蹤數(shù)據(jù)庫的計算機上。

(2)實時獲取IP

SQL Server Profiler跟蹤運行好后,我們就需要實時(或近似實時)將跟蹤數(shù)據(jù)聯(lián)表得到對應(yīng)的IP地址,然后將這個記錄寫入我們的存證表中。

為此需要設(shè)計一個服務(wù),每秒或每間隔幾秒讀取一下跟蹤數(shù)據(jù)表數(shù)據(jù),并將關(guān)聯(lián)系統(tǒng)視圖sys.dm_exec_connections中得到的IP地址一起寫入歷史存證表中即可。這里需要注意的是,可以根據(jù)跟蹤表中的 RowNumber字段來區(qū)分將每次多出的數(shù)據(jù)聯(lián)表插入到歷史存證表中。如跟蹤重啟后,跟蹤表會重新計數(shù),這時程序內(nèi)需要將兩個表中的RowNumber做對比判斷,將新增的數(shù)據(jù)插入歷史存證表中。當然也可以根據(jù)歷史記錄表中的最后一條記錄時間來進行判斷。

(3)跟蹤數(shù)據(jù)查詢分析

經(jīng)過前面兩個步驟,已經(jīng)將需要的數(shù)據(jù)實時寫入歷史存證表中,然后我們只需要設(shè)計一個查詢歷史記錄的頁面即可,這個頁面上方為查詢條件,例如:時間、應(yīng)用名稱等;下方列表中為記錄的一些關(guān)鍵字段,如圖5所示。

圖5 重要數(shù)據(jù)訪問查詢Fig. 5 Important data access and query

點擊每條記錄后的“查看”可以看到具體的SQL語句,如圖6所示。

圖6 數(shù)據(jù)訪問查詢明細Fig. 6 The detailed record of important data access and query

3 結(jié)語

數(shù)據(jù)庫系統(tǒng)作為信息的聚集體,其安全性至關(guān)重要。文中敘述了作者追蹤SQL Server數(shù)據(jù)庫數(shù)據(jù)被篡改的研究過程。作者經(jīng)過多次的嘗試和研究,最終實現(xiàn)了對讀寫數(shù)據(jù)庫指令的追蹤。當然,所有追蹤的作用也只是亡羊補牢,只能作為監(jiān)控數(shù)據(jù)安全的輔助手段,而有效的防竊取、防篡改才是建設(shè)數(shù)據(jù)庫至關(guān)重要的任務(wù),才能保證數(shù)據(jù)的保密性、完整性和有效性。

王建國,崔曉峰,陳化然等,2006. Microsoft SQL Server 2000在天津市地震前兆臺網(wǎng)中心的應(yīng)用. 華北地震科學(xué),24(3):56—60.

王岳斌,陽國貴,鄺祝芳等,2009. 基于HMM的數(shù)據(jù)庫異常檢測系統(tǒng)設(shè)計與實現(xiàn). 計算機應(yīng)用與軟件,26(1):15—16.

徐龍琴,劉雙印,沈玉利等,2009. 數(shù)據(jù)庫安全性控制的研究. 計算機應(yīng)用與軟件,26(5):31—35.

Li Yanyuan, 2005. The Documentation of Logic SQL. Alberta Univemity,Canada.

Data Security Monitoring of SQL Server Database

Zhang Hui, Li Yajing and Zhao Ying

(Earthquake Administration of Tianjin Municipality, Tianjin 300201, China)

Since database system is information aggregation, the security of database is very important. In this paper we discuss some problems in daily data management such as data leakage and abnormal variation, and track back the sources that cause such problems. By doing so we may monitor the important data in daily work to ensure the safety and accuracy of database.

SQL Server; Relation database; Storage process; Track

張暉,李雅靜,趙穎,2012.SQL Server數(shù)據(jù)庫中數(shù)據(jù)的安全監(jiān)控.震災(zāi)防御技術(shù),7(2):208—213.

本文由“天津地震災(zāi)害損失初評估快速查詢應(yīng)急資料箱建設(shè)”資助

2011-12-27

張暉,女,生于1979年。碩士,工程師。主要從事地震應(yīng)急工作。E-mail: 15375539@qq.com

更正:本刊2012年1期83頁頁下注“西藏地震現(xiàn)場工作隊,2011.9. 2011年9月18日印度錫金邦6.8級地震中國西藏災(zāi)區(qū)災(zāi)害直接損失評估報告.”更正為“孫柏濤,姚新強,周強等,2010. 西藏自治區(qū)農(nóng)牧民安居工程抗震加固試驗與分析技術(shù)報告,121—122.”

猜你喜歡
記錄表IP地址視圖
2022.04.21~2022.05.20國外運載火箭發(fā)射記錄表
2022.1.21~2022.2.20國外運載火箭發(fā)射記錄表
2021.01.21~2021.02.20 國外運載火箭發(fā)射記錄表
2020.7.21~2020.8.20國外運載火箭發(fā)射記錄表
鐵路遠動系統(tǒng)幾種組網(wǎng)方式IP地址的申請和設(shè)置
視圖
Y—20重型運輸機多視圖
SA2型76毫米車載高炮多視圖
公安網(wǎng)絡(luò)中IP地址智能管理的研究與思考
Django 框架中通用類視圖的用法