數(shù)據(jù)庫安全目前是安全從業(yè)者討論的重要主題之一。隨著越來越多的突發(fā)事件發(fā)生,是時候采取一些行動了。
安全的數(shù)據(jù)庫應(yīng)當(dāng)為成員的訪問提供了有效控制與保護(hù),同時還能保障所有的數(shù)據(jù)質(zhì)量。我們必須充分了解數(shù)據(jù)庫安全的相關(guān)挑戰(zhàn)并努力提供一個解決方案。針對數(shù)據(jù)庫的威脅取決于很多因素,例如互聯(lián)網(wǎng)安全、物理安全、加密、身份驗(yàn)證等等。由于所處組織的不同,數(shù)據(jù)的敏感度也大不相同。數(shù)據(jù)庫中可能是客戶數(shù)據(jù)、財(cái)務(wù)記錄以及許多其他類型的具有價(jià)值的信息。
因此保護(hù)這些數(shù)據(jù)免受內(nèi)部或者外部的攻擊,都至關(guān)重要。進(jìn)行定期審核來檢查數(shù)據(jù)庫中存在的缺陷和漏洞是非常必要的,由于在程序設(shè)計(jì)時忽略了安全因素,或因沒有及時更新、使用過期版本的應(yīng)用程序而出現(xiàn)一些缺陷。了解數(shù)據(jù)庫的結(jié)構(gòu),并在初始階段就識別出潛在的威脅是非常重要的。
在我們保護(hù)數(shù)據(jù)庫時應(yīng)當(dāng)考慮如下三個要點(diǎn):
● 保護(hù)數(shù)據(jù)免受未經(jīng)授權(quán)的訪問;
● 防止未經(jīng)授權(quán)的泄露;
● 修復(fù)硬件或軟件的錯誤。
因此,與數(shù)據(jù)庫安全相關(guān)的任何情況,都需要考慮到控制訪問權(quán)限、應(yīng)用程序訪問、漏洞管理以及審計(jì)。由于幾乎所有數(shù)據(jù)庫都與互聯(lián)網(wǎng)相連,我們需要明白其結(jié)構(gòu)的復(fù)雜性。
下圖中顯示了一個數(shù)據(jù)庫通常的使用情況:
圖1:數(shù)據(jù)庫環(huán)境
身份驗(yàn)證
訪問數(shù)據(jù)庫的第一步是在身份驗(yàn)證過程完成后進(jìn)行數(shù)據(jù)庫服務(wù)器登錄。如果身份驗(yàn)證過程的配置不正確,攻擊者便更容易獲取對數(shù)據(jù)庫的訪問權(quán)限。如果數(shù)據(jù)庫包含高優(yōu)級數(shù)據(jù),那應(yīng)該采取多層身份驗(yàn)證,以達(dá)到最高的安全保護(hù)級別。即便采用的用戶名或密碼驗(yàn)證比較普通,我們必須確保關(guān)鍵字是高強(qiáng)度的。以下是增加密碼強(qiáng)度的幾條建議:
● 密碼中采用的字符應(yīng)當(dāng)介于8-20個之間;
● 它不應(yīng)當(dāng)與你的用戶名、電子郵件地址、服務(wù)器名稱或者電話號碼有關(guān)。這些密碼都很容易被猜到;
● 應(yīng)當(dāng)避免多賬戶采用相同的密碼;
● 混合數(shù)字、字母和符號將增加密碼強(qiáng)度。
這里有許多用于檢測密碼強(qiáng)度的應(yīng)用,使用其中的一個軟件,便可確保最大強(qiáng)度的密碼。
訪問控制
保護(hù)數(shù)據(jù)的最佳方式便是限制其訪問。我們應(yīng)當(dāng)對每個用戶訪問數(shù)據(jù)的用戶進(jìn)行授權(quán)和身份驗(yàn)證。通常的做法是將用戶名和密碼分配到每個登錄數(shù)據(jù)庫的用戶。同時,對于不同用戶應(yīng)當(dāng)根據(jù)敏感數(shù)據(jù)的分類要求,進(jìn)行不同權(quán)限設(shè)置。讓我們通過具體的實(shí)例來進(jìn)行解釋,例如一個大學(xué)的數(shù)據(jù)庫。學(xué)生應(yīng)當(dāng)被授予登錄他們各自賬戶數(shù)據(jù)庫的權(quán)限,以及數(shù)據(jù)庫中相關(guān)內(nèi)容的讀取權(quán)限。教師以及其他工作人員則需要擁有數(shù)據(jù)庫的錄入權(quán)限。這是保護(hù)數(shù)據(jù)庫的基本步驟。即使攻擊者設(shè)法使用學(xué)生賬戶登錄,所具有的權(quán)限也是有限的。在這個過程中,識別每個用戶并且分配他們對應(yīng)數(shù)據(jù)的訪問權(quán)限,至關(guān)重要。訪問控制主要可以實(shí)現(xiàn)于以下四個級別:
● 自主訪問控制(DAC):在這個層次上,基于一些預(yù)設(shè)的權(quán)衡性政策,根據(jù)用戶身份及特權(quán)授予其訪問權(quán)限。通過這一方法,用戶可以授權(quán)其他用戶訪問該數(shù)據(jù),處于這一特性,這也被用于大多數(shù)企業(yè)。用戶能夠在存在需求時,對權(quán)限進(jìn)行添加或刪減。
● 基于內(nèi)容的訪問控制:在這里權(quán)限的授予與否是基于內(nèi)容而定的。在一個組織中,同一時間可能運(yùn)行多個項(xiàng)目,因此用戶需要訪問的數(shù)據(jù)只需是和項(xiàng)目有關(guān)的。
● 細(xì)粒度訪問控制:可設(shè)置不同級別的訪問控制。例如,我們能夠在Oracle虛擬數(shù)據(jù)庫中看到這些內(nèi)容。
● 強(qiáng)制訪問控制(MAC):這是個基于用戶和數(shù)據(jù)對象分類的模型。分類基于不同等級,被稱為訪問類。一個訪問類包含多層安全水平,可以用于給不同類適當(dāng)?shù)淖x寫權(quán)限。
應(yīng)用程序訪問
用戶總是將記錄文件同放在數(shù)據(jù)庫放在一個目錄,并且通過某個軟件或者應(yīng)用程序來管理數(shù)據(jù)庫,透過分析這些應(yīng)用的構(gòu)造框架,我們可以逐一擊破并修復(fù)其中的毛病。這個工具是用來進(jìn)行身份認(rèn)證以及權(quán)限獲取的,這個應(yīng)用框架同樣也提供一個數(shù)據(jù)可視化管理的功能,應(yīng)用中,將顯示各數(shù)據(jù)庫、類之間的關(guān)聯(lián)關(guān)系,并提供出關(guān)于當(dāng)前數(shù)據(jù)詳細(xì)的提示。而對于一個程序來說,最大的問題在于確定軟件框架定義的權(quán)限授予是否真的是按提交過來的用戶身份而對應(yīng)分配的。
數(shù)據(jù)庫威脅
研究發(fā)現(xiàn),數(shù)據(jù)庫是最易遭到破壞的資產(chǎn)。數(shù)據(jù)庫是所有組織的心臟,因此保護(hù)數(shù)據(jù)庫安全至關(guān)重要。當(dāng)攻擊者得到了訪問數(shù)據(jù)庫的權(quán)限時,他們便會想方設(shè)法進(jìn)行破壞、曝光,足以擾亂整個組織的運(yùn)作。下面將列舉出在很長一個階段內(nèi),存在的影響數(shù)據(jù)庫安全的一些威脅:
● 過度和未使用的特權(quán):用戶總是獲得超出他們需求的特權(quán)。這些超出的特權(quán)落入“特殊用戶”手中往往會導(dǎo)致各種問題。如果這個人居心叵測,他便可以利用這些特權(quán)竊取敏感數(shù)據(jù)。而這之所以會發(fā)生,是不恰當(dāng)?shù)臋?quán)限控制機(jī)制所造成的。
● 濫用特權(quán):有時用戶會在一些未經(jīng)授權(quán)的活動中“錯用”自己的權(quán)限。此事在很多情況下都會發(fā)生。因此,不建議他們在未經(jīng)授權(quán)的活動中使用權(quán)限。
● SQL注入:通過向Web應(yīng)用程序中插入惡意語句發(fā)動攻擊。攻擊者便有機(jī)會獲得整個數(shù)據(jù)庫的訪問權(quán)限。
● 惡意軟件:攻擊者使用黑客技術(shù),將釣魚郵件將惡意軟件發(fā)送到用戶郵箱。用戶在不知情的情況下,點(diǎn)擊郵件鏈接從而被控制。攻擊者利用這個用戶,便可通過各種路徑進(jìn)入數(shù)據(jù)庫。
● 糟糕的審計(jì)記錄:自動化系統(tǒng)記錄應(yīng)當(dāng)是每個數(shù)據(jù)庫的一部分。如果沒有進(jìn)行適當(dāng)?shù)挠涗洠憧赡軐?dǎo)致各種問題。大多數(shù)公司都會進(jìn)行系統(tǒng)審計(jì),這一般是由數(shù)據(jù)庫廠商提供的。而這種軟件通常無法滿足每個公司的需求。
● 存儲媒體曝光:人們花費(fèi)了很多努力保護(hù)活躍對象。他們有時會忘記安全備份,盡管這與保護(hù)系統(tǒng)同樣重要。一個攻擊者可以輕松進(jìn)入未加密備份,然后對公司進(jìn)行入侵。因此,保護(hù)備份數(shù)據(jù)文件也非常重要,請保持對高優(yōu)先級用戶的持續(xù)關(guān)注。
● 拒絕服務(wù)(DOS):這是一個很常見的攻擊類型,攻擊者對網(wǎng)絡(luò)設(shè)備或數(shù)據(jù)造成拒絕訪問。在數(shù)據(jù)庫中,DOS通常由大量請求、占用大量資源從而服務(wù)器過載。這使得服務(wù)器沒有響應(yīng),最終導(dǎo)致數(shù)據(jù)庫淪陷。DOS是一個嚴(yán)重的危害,應(yīng)當(dāng)被重視。任何一個系統(tǒng)都會受此影響。
數(shù)據(jù)庫審計(jì)
在定期監(jiān)控的幫助之下,針對數(shù)據(jù)庫的攻擊可以降到最小。審計(jì)可以幫助我們發(fā)現(xiàn)現(xiàn)存架構(gòu)中的漏洞和缺陷,然后找到一個適合的解決方案來修復(fù)它們。數(shù)據(jù)庫審計(jì)包含以下不同層次:
● 訪問及身份驗(yàn)證審計(jì):這里包括了登錄用戶使用的數(shù)據(jù)庫。它記錄了用戶訪問數(shù)據(jù)庫的時間、內(nèi)容以及途徑。
● 用戶與管理員審計(jì):針對用戶和管理員執(zhí)行的活動進(jìn)行分析和報(bào)告。
● 安全活動監(jiān)控:這里對全部活動列表進(jìn)行了跟蹤,并將數(shù)據(jù)庫中任何未授權(quán)或者可疑的活動進(jìn)行報(bào)告。
● 漏洞與威脅審計(jì):漏洞普遍存在于所有系統(tǒng)中。我們的職責(zé)便是及時地發(fā)現(xiàn)并修復(fù)它們。在這個審計(jì)步驟中,漏洞會被發(fā)現(xiàn)并修復(fù)。同時,想要利用這些漏洞的“用戶”也會被發(fā)現(xiàn)。
● 審計(jì)中的變化:首先,為審計(jì)過程建立一個基礎(chǔ)結(jié)構(gòu)。然后審計(jì)政策會根據(jù)需求而進(jìn)行變化,由此可以避免出現(xiàn)任何含糊不清的地方。
如何進(jìn)行數(shù)據(jù)庫審計(jì)?
● 明確數(shù)據(jù):這并不像聽起來那么簡單。確定那些真正需要保護(hù)的數(shù)據(jù)是非常重要的。數(shù)據(jù)庫可能包含了各類型、優(yōu)先級不同的數(shù)據(jù)。對這些類型的數(shù)據(jù)進(jìn)行分類,會使審計(jì)過程變得非常輕松。
● 利用在建功能的基礎(chǔ)審計(jì):現(xiàn)在每個數(shù)據(jù)庫服務(wù)器都有默認(rèn)審計(jì)功能。第一件事是運(yùn)行這些運(yùn)用于審計(jì)的工具。他們的登錄觸發(fā)功能在許多服務(wù)器中都是默認(rèn)開啟的,這樣有助于我們對登錄的詳細(xì)信息進(jìn)行控制與監(jiān)視。使用這些工具,我們無法自定義地進(jìn)行審計(jì)工作,特別是一些復(fù)雜的工作。對于這種情況,可以使用第三方審計(jì)軟件來開展工作。
● 使用第三方的審計(jì)軟件和網(wǎng)絡(luò)設(shè)備:這些審計(jì)工具可以為滿足用戶需求進(jìn)行特殊定制。因?yàn)樗鼈兙哂谐喙δ埽瑸閯?chuàng)造最大輸出而進(jìn)行了深度挖掘。這些設(shè)備可用于提供保護(hù)的同時還能監(jiān)控服務(wù)器。而它們的主要優(yōu)勢是,服務(wù)器性能不會受到影響,因?yàn)檫@些工具都是單獨(dú)安裝于服務(wù)器的。
數(shù)據(jù)加密
加密是應(yīng)當(dāng)被給予更多關(guān)注的領(lǐng)域之一。數(shù)據(jù)加密對保護(hù)數(shù)據(jù)庫而言非常重要。而在實(shí)際情況中情,我們需要處理兩種類型的數(shù)據(jù)。第一種是對靜態(tài)數(shù)據(jù)進(jìn)行加密,另一種則是通過強(qiáng)驗(yàn)證轉(zhuǎn)化的數(shù)據(jù)。對于靜態(tài)數(shù)據(jù)而言,多種加密算法并不能輕易被未授權(quán)的用戶破解。不同的算法取決于各自的加密技術(shù)。一些用于服務(wù)器是算法包括DES、Triple DES、DESX、128位AES、192位AES等等。這些算法根據(jù)各自的特點(diǎn)被用于適合的位置。無論如何,完美的算法是并不存在的。用于傳輸數(shù)據(jù)的安全shell流量應(yīng)當(dāng)獲得保護(hù)。通常數(shù)據(jù)使用明文在網(wǎng)絡(luò)中傳遞,這種類型的數(shù)據(jù)很容易在嗅探器的“幫助下”被獲取。為了避免這樣的情況,數(shù)據(jù)應(yīng)該通過SSH加密通道。
保護(hù)一個數(shù)據(jù)庫
對數(shù)據(jù)庫的保護(hù)是一個永無休止的過程。
● 第一步,也是最為重要的一步就是對數(shù)據(jù)庫進(jìn)行分析和安全防護(hù)。
● 接著,根據(jù)需求對系統(tǒng)或者數(shù)據(jù)進(jìn)行分類。一個數(shù)據(jù)庫通常含有不同優(yōu)先級的數(shù)據(jù)類型,應(yīng)當(dāng)在正式運(yùn)行前進(jìn)行恰當(dāng)?shù)姆诸悺?/p>
● 對數(shù)據(jù)庫進(jìn)行掃描以發(fā)現(xiàn)漏洞、錯誤配置以及其中發(fā)生的變更。此舉將為保護(hù)數(shù)據(jù)庫安全提供一個策略。
● 下一步則需基于上一步驟的信息,掃描發(fā)現(xiàn)的漏洞應(yīng)當(dāng)進(jìn)行及時的修復(fù)。
● 為漏洞找到合適的修復(fù)方式,然后對所有現(xiàn)有系統(tǒng)進(jìn)行補(bǔ)丁。
● 審計(jì)應(yīng)當(dāng)在漏洞修復(fù)之后進(jìn)行。這一步中如果發(fā)現(xiàn)任何異常,都會及時反映。重復(fù)整個循環(huán)周期可以最大程度上地保障數(shù)據(jù)庫的安全。
圖2:數(shù)據(jù)庫安全循環(huán)
監(jiān)控與封鎖
● 實(shí)時預(yù)警和封鎖:應(yīng)當(dāng)對包括登錄、訪問注銷等在內(nèi)的數(shù)據(jù)庫活動進(jìn)行監(jiān)控,以阻止數(shù)據(jù)泄露以及未經(jīng)授權(quán)的訪問。服務(wù)器內(nèi)這樣的活動一旦被檢測到,應(yīng)該會產(chǎn)生提示和警告。如果再次出現(xiàn),用戶則應(yīng)當(dāng)封鎖通向數(shù)據(jù)庫的訪問。數(shù)據(jù)庫流量應(yīng)當(dāng)被持續(xù)監(jiān)控以便識別異常活動,例如可能導(dǎo)致DOS攻擊等問題。
● 檢測異常訪問活動:每個用戶配置文件都應(yīng)當(dāng)被完全監(jiān)控。任何越級訪問數(shù)據(jù)庫的嘗試都應(yīng)當(dāng)出發(fā)一個警告,或被直接封鎖。這樣或許有助于保護(hù)我們免受注入、惡意軟件等攻擊活動。
● 過濾Web請求:為了避免注入攻擊,封鎖所有惡意Web請求至關(guān)重要。同時,一個Web應(yīng)用程序防火線應(yīng)當(dāng)同時被用于檢查Web應(yīng)用程序中的請求。針對請求中的所有HTTP參數(shù)都要進(jìn)行檢查。請求中出現(xiàn)中括號或者特殊字符都可能是攻擊活動的跡象。
● 本地?cái)?shù)據(jù)庫監(jiān)控:系統(tǒng)管理員這樣的用戶常常擁有最高權(quán)限,因此必須對其進(jìn)行密切監(jiān)控。一旦他們被網(wǎng)絡(luò)釣魚攻擊,威脅可能波及整個數(shù)據(jù)庫。
● 響應(yīng)時間:DOS攻擊導(dǎo)致服務(wù)器超載,造成了無法響應(yīng)請求和查詢語句。響應(yīng)時間監(jiān)控應(yīng)當(dāng)可以檢查響應(yīng)延遲以及其他因子,由于延遲會降低整個服務(wù)器性能,因此任何與之相關(guān)的線索都必須被仔細(xì)觀察。
● 實(shí)現(xiàn)連接控制:服務(wù)器上的負(fù)載應(yīng)當(dāng)通過限制連接速率、查詢速度等等手段,加以控制。
結(jié)論
保護(hù)數(shù)據(jù)安全的需求日益增加。這便是信息時代的失敗與偉大。數(shù)據(jù)庫已經(jīng)成為了全世界攻擊者的目標(biāo)。所有的組織、機(jī)構(gòu)都將數(shù)據(jù)庫安全作為規(guī)劃的一部分,也越來越清楚地認(rèn)識到數(shù)據(jù)庫安全的重要性。市場中已經(jīng)存在很多符合我們安全需求的產(chǎn)品。我們則必須對它們進(jìn)行分析再選擇適合我們環(huán)境的。忽視這一點(diǎn)則可能導(dǎo)致整個組織的淪陷,因此公司必須建立包括數(shù)據(jù)庫安全在內(nèi)的、堅(jiān)實(shí)的安全策略。
保護(hù)數(shù)據(jù)庫安全不是一項(xiàng)簡單的任務(wù),也并不能在短短幾小時內(nèi)解決的問題。這需要持續(xù)地規(guī)劃和投入,最為重要的是,保護(hù)措施應(yīng)當(dāng)在一定的時間段內(nèi)反復(fù)進(jìn)行才能獲得最大效率。
參考文獻(xiàn)
● https://en.wikipedia.org/wiki/Database_security
● http://docs.oracle.com/cd/B19306_01/server.102/b14220/security.htm
● https://www.oracle.com/database/security/index.html
● https://msdn.microsoft.com/en-IN/library/ms345262.aspx
● https://www.sans.org/reading-room/whitepapers/analyst/making-database-security-security-priority-34835
● http://www.zdnet.com/article/the-top-ten-most-common-database-security-vulnerabilities/
● https://www.techopedia.com/definition/29841/database-security
● http://www.academia.edu/6866589/Introduction_to_Database_Security_Issues_Types_of_Security_Database
● http://www.slideshare.net/null0x00/database-security-issues
● https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2014/july/top-10-common-database-security-issues/
● http://www.collegelib.com/t-database-security-issues-and-challenges.html
*原文地址:infosecinstitute,SamSmith編譯,轉(zhuǎn)自須注明來自FreeBuf黑客與極客(FreeBuf.COM)