天天看點

資料庫安全小議

資料庫安全目前是安全從業者讨論的重要主題之一。随着越來越多的突發事件發生,是時候采取一些行動了。

安全的資料庫應當為成員的通路提供了有效控制與保護,同時還能保障所有的資料品質。我們必須充分了解資料庫安全的相關挑戰并努力提供一個解決方案。針對資料庫的威脅取決于很多因素,例如網際網路安全、實體安全、加密、身份驗證等等。由于所處組織的不同,資料的敏感度也大不相同。資料庫中可能是客戶資料、财務記錄以及許多其他類型的具有價值的資訊。

是以保護這些資料免受内部或者外部的攻擊,都至關重要。進行定期稽核來檢查資料庫中存在的缺陷和漏洞是非常必要的,由于在程式設計時忽略了安全因素,或因沒有及時更新、使用過期版本的應用程式而出現一些缺陷。了解資料庫的結構,并在初始階段就識别出潛在的威脅是非常重要的。

在我們保護資料庫時應當考慮如下三個要點:

● 保護資料免受未經授權的通路;

● 防止未經授權的洩露;

● 修複硬體或軟體的錯誤。

是以,與資料庫安全相關的任何情況,都需要考慮到控制通路權限、應用程式通路、漏洞管理以及審計。由于幾乎所有資料庫都與網際網路相連,我們需要明白其結構的複雜性。

下圖中顯示了一個資料庫通常的使用情況:

資料庫安全小議

圖1:資料庫環境

身份驗證

通路資料庫的第一步是在身份驗證過程完成後進行資料庫伺服器登入。如果身份驗證過程的配置不正确,攻擊者便更容易擷取對資料庫的通路權限。如果資料庫包含高優級資料,那應該采取多層身份驗證,以達到最高的安全保護級别。即便采用的使用者名或密碼驗證比較普通,我們必須確定關鍵字是高強度的。以下是增加密碼強度的幾條建議:

● 密碼中采用的字元應當介于8-20個之間;

● 它不應當與你的使用者名、電子郵件位址、伺服器名稱或者電話号碼有關。這些密碼都很容易被猜到;

● 應當避免多賬戶采用相同的密碼;

● 混合數字、字母和符号将增加密碼強度。

這裡有許多用于檢測密碼強度的應用,使用其中的一個軟體,便可確定最大強度的密碼。

通路控制

保護資料的最佳方式便是限制其通路。我們應當對每個使用者通路資料的使用者進行授權和身份驗證。通常的做法是将使用者名和密碼配置設定到每個登入資料庫的使用者。同時,對于不同使用者應當根據敏感資料的分類要求,進行不同權限設定。讓我們通過具體的執行個體來進行解釋,例如一個大學的資料庫。學生應當被授予登入他們各自賬戶資料庫的權限,以及資料庫中相關内容的讀取權限。教師以及其他從業人員則需要擁有資料庫的錄入權限。這是保護資料庫的基本步驟。即使攻擊者設法使用學生賬戶登入,所具有的權限也是有限的。在這個過程中,識别每個使用者并且配置設定他們對應資料的通路權限,至關重要。通路控制主要可以實作于以下四個級别:

● 自主通路控制(dac):在這個層次上,基于一些預設的權衡性政策,根據使用者身份及特權授予其通路權限。通過這一方法,使用者可以授權其他使用者通路該資料,處于這一特性,這也被用于大多數企業。使用者能夠在存在需求時,對權限進行添加或删減。

● 基于内容的通路控制:在這裡權限的授予與否是基于内容而定的。在一個組織中,同一時間可能運作多個項目,是以使用者需要通路的資料隻需是和項目有關的。

● 細粒度通路控制:可設定不同級别的通路控制。例如,我們能夠在oracle虛拟資料庫中看到這些内容。

● 強制通路控制(mac):這是個基于使用者和資料對象分類的模型。分類基于不同等級,被稱為通路類。一個通路類包含多層安全水準,可以用于給不同類适當的讀寫權限。

應用程式通路

使用者總是将記錄檔案同放在資料庫放在一個目錄,并且通過某個軟體或者應用程式來管理資料庫,透過分析這些應用的構造架構,我們可以逐一擊破并修複其中的毛病。這個工具是用來進行身份認證以及權限擷取的,這個應用架構同樣也提供一個資料可視化管理的功能,應用中,将顯示各資料庫、類之間的關聯關系,并提供出關于目前資料詳細的提示。而對于一個程式來說,最大的問題在于确定軟體架構定義的權限授予是否真的是按送出過來的使用者身份而對應配置設定的。

資料庫威脅

研究發現,資料庫是最易遭到破壞的資産。資料庫是所有組織的心髒,是以保護資料庫安全至關重要。當攻擊者得到了通路資料庫的權限時,他們便會想方設法進行破壞、曝光,足以擾亂整個組織的運作。下面将列舉出在很長一個階段内,存在的影響資料庫安全的一些威脅:

● 過度和未使用的特權:使用者總是獲得超出他們需求的特權。這些超出的特權落入“特殊使用者”手中往往會導緻各種問題。如果這個人居心叵測,他便可以利用這些特權竊取敏感資料。而這之是以會發生,是不恰當的權限控制機制所造成的。

● 濫用特權:有時使用者會在一些未經授權的活動中“錯用”自己的權限。此事在很多情況下都會發生。是以,不建議他們在未經授權的活動中使用權限。

● sql注入:通過向web應用程式中插入惡意語句發動攻擊。攻擊者便有機會獲得整個資料庫的通路權限。

● 惡意軟體:攻擊者使用黑客技術,将釣魚郵件将惡意軟體發送到使用者郵箱。使用者在不知情的情況下,點選郵件連結進而被控制。攻擊者利用這個使用者,便可通過各種路徑進入資料庫。

● 糟糕的審計記錄:自動化系統記錄應當是每個資料庫的一部分。如果沒有進行适當的記錄,便可能導緻各種問題。大多數公司都會進行系統審計,這一般是由資料庫廠商提供的。而這種軟體通常無法滿足每個公司的需求。

● 存儲媒體曝光:人們花費了很多努力保護活躍對象。他們有時會忘記安全備份,盡管這與保護系統同樣重要。一個攻擊者可以輕松進入未加密備份,然後對公司進行入侵。是以,保護備份資料檔案也非常重要,請保持對高優先級使用者的持續關注。

● 拒絕服務(dos):這是一個很常見的攻擊類型,攻擊者對網絡裝置或資料造成拒絕通路。在資料庫中,dos通常由大量請求、占用大量資源進而伺服器過載。這使得伺服器沒有響應,最終導緻資料庫淪陷。dos是一個嚴重的危害,應當被重視。任何一個系統都會受此影響。

資料庫審計

在定期監控的幫助之下,針對資料庫的攻擊可以降到最小。審計可以幫助我們發現現存架構中的漏洞和缺陷,然後找到一個适合的解決方案來修複它們。資料庫審計包含以下不同層次:

● 通路及身份驗證審計:這裡包括了登入使用者使用的資料庫。它記錄了使用者通路資料庫的時間、内容以及途徑。

● 使用者與管理者審計:針對使用者和管理者執行的活動進行分析和報告。

● 安全活動監控:這裡對全部活動清單進行了跟蹤,并将資料庫中任何未授權或者可疑的活動進行報告。

● 漏洞與威脅審計:漏洞普遍存在于所有系統中。我們的職責便是及時地發現并修複它們。在這個審計步驟中,漏洞會被發現并修複。同時,想要利用這些漏洞的“使用者”也會被發現。

● 審計中的變化:首先,為審計過程建立一個基礎結構。然後審計政策會根據需求而進行變化,由此可以避免出現任何含糊不清的地方。

如何進行資料庫審計?

● 明确資料:這并不像聽起來那麼簡單。确定那些真正需要保護的資料是非常重要的。資料庫可能包含了各類型、優先級不同的資料。對這些類型的資料進行分類,會使審計過程變得非常輕松。

● 利用在建功能的基礎審計:現在每個資料庫伺服器都有預設審計功能。第一件事是運作這些運用于審計的工具。他們的登入觸發功能在許多伺服器中都是預設開啟的,這樣有助于我們對登入的詳細資訊進行控制與監視。使用這些工具,我們無法自定義地進行審計工作,特别是一些複雜的工作。對于這種情況,可以使用第三方審計軟體來開展工作。

● 使用第三方的審計軟體和網絡裝置:這些審計工具可以為滿足使用者需求進行特殊定制。因為它們具有超多功能,為創造最大輸出而進行了深度挖掘。這些裝置可用于提供保護的同時還能監控伺服器。而它們的主要優勢是,伺服器性能不會受到影響,因為這些工具都是單獨安裝于伺服器的。

資料加密

加密是應當被給予更多關注的領域之一。資料加密對保護資料庫而言非常重要。而在實際情況中情,我們需要處理兩種類型的資料。第一種是對靜态資料進行加密,另一種則是通過強驗證轉化的資料。對于靜态資料而言,多種加密算法并不能輕易被未授權的使用者破解。不同的算法取決于各自的加密技術。一些用于伺服器是算法包括des、triple

des、desx、128位aes、192位aes等等。這些算法根據各自的特點被用于适合的位置。無論如何,完美的算法是并不存在的。用于傳輸資料的安全shell流量應當獲得保護。通常資料使用明文在網絡中傳遞,這種類型的資料很容易在嗅探器的“幫助下”被擷取。為了避免這樣的情況,資料應該通過ssh加密通道。

保護一個資料庫

對資料庫的保護是一個永無休止的過程。

● 第一步,也是最為重要的一步就是對資料庫進行分析和安全防護。

● 接着,根據需求對系統或者資料進行分類。一個資料庫通常含有不同優先級的資料類型,應當在正式運作前進行恰當的分類。

● 對資料庫進行掃描以發現漏洞、錯誤配置以及其中發生的變更。此舉将為保護資料庫安全提供一個政策。

● 下一步則需基于上一步驟的資訊,掃描發現的漏洞應當進行及時的修複。

● 為漏洞找到合适的修複方式,然後對所有現有系統進行更新檔。

● 審計應當在漏洞修複之後進行。這一步中如果發現任何異常,都會及時反映。重複整個循環周期可以最大程度上地保障資料庫的安全。

資料庫安全小議

圖2:資料庫安全循環

監控與封鎖

● 實時預警和封鎖:應當對包括登入、通路登出等在内的資料庫活動進行監控,以阻止資料洩露以及未經授權的通路。伺服器内這樣的活動一旦被檢測到,應該會産生提示和警告。如果再次出現,使用者則應當封鎖通向資料庫的通路。資料庫流量應當被持續監控以便識别異常活動,例如可能導緻dos攻擊等問題。

● 檢測異常通路活動:每個使用者配置檔案都應當被完全監控。任何越級通路資料庫的嘗試都應當出發一個警告,或被直接封鎖。這樣或許有助于保護我們免受注入、惡意軟體等攻擊活動。

● 過濾web請求:為了避免注入攻擊,封鎖所有惡意web請求至關重要。同時,一個web應用程式防火線應當同時被用于檢查web應用程式中的請求。針對請求中的所有http參數都要進行檢查。請求中出現中括号或者特殊字元都可能是攻擊活動的迹象。

● 本地資料庫監控:系統管理者這樣的使用者常常擁有最高權限,是以必須對其進行密切監控。一旦他們被網絡釣魚攻擊,威脅可能波及整個資料庫。

● 響應時間:dos攻擊導緻伺服器超載,造成了無法響應請求和查詢語句。響應時間監控應當可以檢查響應延遲以及其他因子,由于延遲會降低整個伺服器性能,是以任何與之相關的線索都必須被仔細觀察。

● 實作連接配接控制:伺服器上的負載應當通過限制連接配接速率、查詢速度等等手段,加以控制。

結論

保護資料安全的需求日益增加。這便是資訊時代的失敗與偉大。資料庫已經成為了全世界攻擊者的目标。所有的組織、機構都将資料庫安全作為規劃的一部分,也越來越清楚地認識到資料庫安全的重要性。市場中已經存在很多符合我們安全需求的産品。我們則必須對它們進行分析再選擇适合我們環境的。忽視這一點則可能導緻整個組織的淪陷,是以公司必須建立包括資料庫安全在内的、堅實的安全政策。

保護資料庫安全不是一項簡單的任務,也并不能在短短幾小時内解決的問題。這需要持續地規劃和投入,最為重要的是,保護措施應當在一定的時間段内反複進行才能獲得最大效率。

參考文獻

● 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編譯,轉自須注明來自freebuf黑客與極客(freebuf.com)

本文轉自d1net(轉載)