安全審計打造固若金湯的數(shù)據(jù)堡壘(一)
眾所周知,數(shù)據(jù)庫系統(tǒng)功能強大而豐富,因而,對于一個數(shù)據(jù)庫環(huán)境而言,我們可以生成很多類型的審計記錄。當然,這并不意味著本文所涉及到的所有審計類型都適合讀者你,但是,知道有哪些審計類型以及如何實施這些審計有助于你滿足合規(guī)需求。
要實施完善的數(shù)據(jù)庫審計,必須理解的一個關(guān)鍵問題是需求,從而知道可以使用哪些審計類型來滿足自己的需求。本文可作為你實施數(shù)據(jù)庫審計的一個參考。
審計數(shù)據(jù)庫的登入和登出
在你要進入一家公司會晤某人的時候,一般需要在前臺進行登記。這樣做可確保公司完整的記錄進入公司的任何人,在出現(xiàn)問題時,或在追蹤和調(diào)查“這事兒是誰干的?”時,這種登錄很有用處。這種日志通常會記錄來客是誰、何時進入、何時離開。同樣的過程也適用于數(shù)據(jù)庫,多數(shù)環(huán)境中所需要的首要審計就是完整的記錄哪些人曾登入過數(shù)據(jù)庫。
對于這類審計,你需要記錄兩類事件:登入事件和登出事件。對于每一個事件,你都需要保存登錄名和時間,但你還應(yīng)該考慮記錄附加信息。這包括發(fā)起連接的客戶端的IP地址,以及用于初始化連接的程序。例如,在Oracle環(huán)境中,你可能想知道該連接是否由SQL Plus等初始化。
除了這兩類事件,你還應(yīng)當記錄所有失敗的登錄企圖。事實上,從安全的觀點來看,失敗的登錄事件甚至可能比成功的登錄更重要。記錄失敗的登錄企圖不僅是為了審計和合規(guī)目的,而且可作為警告和停用某個賬戶的基礎(chǔ)。
雖然你可將這三類事件放在同樣的文件或表格中,但你可能會以不同的方式進行報告。成功的登錄和登出報告不是多數(shù)人愿意關(guān)注的問題,除非要進行某種調(diào)查,因為這些日志反映了正常的操作。除此之外,還有一種例外情況,即比較不同時期的文件,看其是不是發(fā)生了改變。然而,過多的失敗登錄肯定是一個令人感興趣的安全報告,而且許多人會根據(jù)如下這幾個方面定期地查看這些失敗的登錄企圖:
用戶名
連接失敗的客戶端IP地址
源程序
時間和日期
例如,圖一展示了兩個視圖,這兩個視圖根據(jù)兩個方面進行了分類總結(jié),一是根據(jù)登錄名(上圖的左側(cè)),二是根據(jù)顯示失敗登錄的詳細視圖的報告(包括登錄名、源IP地址、連接到哪個數(shù)據(jù)庫服務(wù)器、通信類型)。
可使用數(shù)據(jù)庫的特性或使用外部的數(shù)據(jù)庫安全方案來審計登入和登出活動。所有的數(shù)據(jù)庫廠商都支持這種基本的審計功能,而且因為這些事件的數(shù)量是很小的(至少在與審計實際的SQL調(diào)用時所得到的事件數(shù)量相比時是這樣的),所以數(shù)據(jù)庫在執(zhí)行這種審計時所遭受的性能損失很少。
正如在插入或更新時,Oracle觸發(fā)器會啟動一樣,系統(tǒng)級觸發(fā)器會針對特定的系統(tǒng)事件(如登入、登出和DDL執(zhí)行)而執(zhí)行。下面看一下如何實施這種審計:
首先,創(chuàng)建一個你用來保存這種信息的表:
下一步,創(chuàng)建一個在發(fā)生新登入時可執(zhí)行的觸發(fā)器:
#p#
多數(shù)數(shù)據(jù)在用戶登入時被記載,但在用戶登出時,需要用觸發(fā)器來記載其登出日期和時間,代碼如下:
在Oracle環(huán)境中這樣做就可以了。如果你運行的是Sybase環(huán)境,問題就更簡單了,因為你可以用下面的命令審計對所有數(shù)據(jù)庫的所有訪問:
根據(jù)失敗的登錄來實施警告或賬戶鎖定這種功能,需要得到數(shù)據(jù)庫廠商或數(shù)據(jù)庫安全解決方案的支持。如果使用數(shù)據(jù)庫來生成登錄和登出的審計,并且你的數(shù)據(jù)庫廠商可以實施賬戶鎖定功能,那么,你可以在數(shù)據(jù)庫環(huán)境中實現(xiàn)這一點。例如,你可能知道如何建立Oracle的口令策略。在另外一種環(huán)境中(如SQL server 2000),你就無法使用本地數(shù)據(jù)庫特性來完成此功能,而需要編寫代碼來檢查Windows的事件日志,查找失敗的登錄,或者使用一個外部的安全系統(tǒng)來實現(xiàn)。
在使用外部安全系統(tǒng)時,你可以使用SQL防火墻來阻止經(jīng)過一定數(shù)量的失敗登入企圖后,某個登錄名的任何連接。在這種情形中,數(shù)據(jù)庫并不會收到連接企圖,因為這種連接企圖會在防火墻水平上被拒絕。另外一個選擇(該選擇并不要求你將安全系統(tǒng)置于數(shù)據(jù)庫之前)是使用數(shù)據(jù)庫過程,如圖二所示。在這種情形中,失敗的登錄次數(shù)超過某個上限后,審計系統(tǒng)就會生成一次審計。該審計被發(fā)送給一個負責連接到數(shù)據(jù)庫的系統(tǒng),并且調(diào)用一個過程來鎖定賬戶。該系統(tǒng)一般還會通知數(shù)據(jù)庫管理員,告知已經(jīng)采取了該行動,以便于進行調(diào)查,并且在必要時可以釋放被鎖定的賬戶。
除了可用于創(chuàng)建審計線索,登錄信息可用于創(chuàng)建一種可以幫助管理員確認異常的基準。用戶登錄活動的基準是“正常”登錄行為的反映。這種基準是通過著眼于在某段時間(例如,一個月)的所有登錄活動而構(gòu)建的。通過將所有的可能性進行組合,對其分類而建立基準。例如,你可以根據(jù)網(wǎng)絡(luò)位置、用戶名、源程序、時間和日期來對登錄進行分類,此時的基準可能會類似于下面這個樣子:
這個基準表明,根據(jù)相對記錄期中所觀察到的所有登錄活動,user1總是從192.168.1.168(例如這是一臺應(yīng)用程序服務(wù)器),并且是24小時持續(xù)地連接。User2用于從Excel連接到數(shù)據(jù)庫,它用于192.168子網(wǎng)中的多個網(wǎng)絡(luò)節(jié)點中,不能用于正常上班時間之外。***,在從isql發(fā)起訪問時,就會用到user3,它可以在周末從10.10.10子網(wǎng)的任何節(jié)點上工作。
有了這種基準,管理員就可以對背離正常操作的行為做出報告或發(fā)出警告。例如,如果你看到有人使用user1成功登錄,但其IP地址卻不同于192.168.1.168,而且所使用的工具卻是SQL Navigator之類的工具,可以斷定,要么你的環(huán)境發(fā)生了變化,要么是某人成功地獲得了應(yīng)用程序服務(wù)器的用戶名和口令,并用這些信息從數(shù)據(jù)庫析取信息。再舉一個例子,使用user2在午夜2點的一次登錄就非??梢?。當然,這可能表明某個人工作得很晚,但根據(jù)具體環(huán)境、敏感性等,你可能需要深入地調(diào)查此事。
【編輯推薦】
- 安全審計打造固若金湯的數(shù)據(jù)堡壘(二)
- 安全審計打造固若金湯的數(shù)據(jù)堡壘(三)
- 電信行業(yè)數(shù)據(jù)庫安全審計解決方案
- 電力行業(yè)數(shù)據(jù)庫系統(tǒng)安全審計解決方案
- 交警支隊數(shù)據(jù)庫安全審計解決方案