數據庫防火墻是繼防火墻、下一代防火墻等網關類安全產品之后,專門針對于數據存儲的核心介質——數據庫的一款安全防護產品。
關于數據庫安全可以分為兩個層面,一方面是來自于外部的威脅,比如說來自黑客的攻擊、非法訪問等,第三方運維人員的不當操作和非法入侵;另外一部分是來自于內部的威脅。
數據庫防火墻部署于數據庫之前。必須通過該系統才能對數據庫進行訪問或管理。數據庫防火墻除提供網絡防火墻的基本隔離功能以外,還提供獨立的連接授 權管理、訪問授權管理、攻擊保護、連接監控、審計等功能。部署該產品以達到牢牢控制數據庫入口,提高數據應用安全性的目的。目前,國內首款專業數據庫防火 墻產品是安華金和數據庫防火墻DBFirwall。
1、 屏蔽直接訪問數據庫的通道
數據庫防火墻部署介于數據庫服務器和應用服務器之間,屏蔽直接訪問的通道,防止數據庫隱通道對數據庫的攻擊。
2、 二次認證
應用程序對數據庫的訪問,必須經過數據庫防火墻和數據庫自身兩層身份認證。
3、 攻擊保護
實時檢測用戶對數據庫進行的SQL注入和緩沖區溢出攻擊。并報警或者阻止攻擊行為,同時詳細的審計下攻擊操作發生的時間、來源IP、登錄數據庫的用戶名、攻擊代碼等詳細信息。
4、 安全審計
系統能夠審計對數據庫服務器的訪問情況。包括用戶名、程序名、IP地址、請求的數據庫、連接建立的時間、連接斷開的時間、通信量大小、執行結果等等信息。并提供靈活的回放日志查詢分析功能,并可以生存報表。
5、 防止外部黑客攻擊威脅
黑客利用Web應用漏洞,進行SQL注入;或以Web應用服務器為跳板,利用數據庫自身漏洞攻擊和侵入。通過限定更新和刪除影響行、限定無Where的更新和刪除操作、限定drop、truncate等高危操作避免大規模損失。
數據庫防火墻產品具有主動防護能力。針對對數據庫的風險行為和違規操作做相應的防護與告警。分析當前各類數據庫所受威脅和防火墻的應對防護能力包括如下幾項功能:
防御數據庫漏洞與SQL注入
威脅:外部黑客攻擊,黑客利用Web應用漏洞,進行SQL注入;或以Web應用服務器為跳板,利用數據庫自身漏洞攻擊和侵入。
防護:通過虛擬補丁技術捕獲和阻斷漏洞攻擊行為,通過SQL注入特征庫捕獲和阻斷SQL注入行為。
防止內部高危操作
威脅:系統維護人員、外包人員、開發人員等,擁有直接訪問數據庫的權限,有意無意的高危操作對數據造成破壞。
防護:通過限定更新和刪除影響行、限定無Where的更新和刪除操作、限定drop、truncate等高危操作避免大規模損失。
防止敏感數據泄漏
威脅:黑客、開發人員可以通過應用批量下載敏感數據,內部維護人員遠程或本地批量導出敏感數據。
防護:限定數據查詢和下載數量、限定敏感數據訪問的用戶、地點和時間。
審計追蹤非法行為
威脅:業務人員在利益誘惑下,通過業務系統提供的功能完成對敏感信息的訪問,進行信息的售賣和數據篡改。
防護:提供對所有數據訪問行為的記錄,對風險行為進行SysLog、郵件、短信等方式的告警,提供事后追蹤分析工具。
各類數據庫防火墻產品,對于數據庫風險行為和違規操作進行安全防護的基礎。都來自于數據庫通訊協議的解析。通訊協議解析的越精準,數據庫的防護工作 越周密安全。換言之,數據庫通訊協議解析的強弱是評價一款數據庫防火墻產品優略的關鍵。下面就數據庫通訊協議解析原理做一下相關介紹。
從數據通訊交互來講,數據是以包(Packet)的形式在網絡中進行傳輸的。一個包通常由2大部分組成:控制部分(metadata)和數據部分。 從包的結構中,可以得到數據的“源地址(Source Address)”和“目標地址(Destination Address)”,“源端口(Source Port)”和“目標端口(Destination Port)”。防火墻正式基于這些信息對數據庫進行防護。當一個包(如來自數據庫客戶端)通過防火墻時,防火墻會基于一定的規則對該包進行檢查,如檢查包 的發送者是不是合法的IP(如合法的數據庫客戶端),包的目標是不是特定的數據庫服務器?如果檢查通過,包會被允許穿過防火墻。如果檢查未通過,則該包會 被丟棄(Drop)(發送者什么都不知道,猶如石沉大海),或者會給發送者返回(反饋)錯誤信息(reject)。我們把前面描述的這種防御方式叫“包過 濾”。“包過濾”可工作在OSI模型(見下圖)的最底下3層或者4層。
“包過濾”又可分為“有連接(stateful)”和“無連接(stateless)”兩種。“有連接(stateful)”是指防火墻會記錄通過 的連接狀態信息,維護相應的連接狀態數據庫,基于同一連接的數據包可免于重復檢查,這樣將提高數據包傳輸效率, “無連接(stateless)”是對每 一個數據包進行檢查,通常意義上會導致網絡響應緩慢,這兩種方式各有優缺點。
安華金和數據庫防火墻(DBFirewall)實現了對主流數據庫類型通訊協議的“雙向、全協議解析”,重要的解析內容包括:SQL語句、參數化語句句柄、SQL參數、應答結果信息、結果集結構信息、結果集數據等。
SQL語句的解析和表達是實現對SQL語句攻擊行為控制的關鍵;SQL注入的檢查、應用sql語句的放行,都依賴于sql語句的解析和特征捕獲。傳 統的技術,往往采用正則表達式的方式,但該方式存在巨大的技術缺陷,一是正則匹配過程性能地下,二是對于復雜的參數情況容易產生匹配錯誤,三是通過語句的 變體容易欺騙。
DBFirewall為了有效撲獲SQL語句的特征,以及為了快速地對SQL語句進行策略判定,以實現數據庫防火墻的高效處理,提供了專利性的SQL語法特征技術,實現了對SQL語句的重寫。
SQL重寫是在不改變原SQL語句的語義的情況下,DBFirewall對捕捉到的SQL語句進行重寫,替換原語句中的參數值。
SQL重寫是一個抽象的過程,便于管理和操作。SQL重寫包括以下幾個方面:
? 除了單雙引號內的內容,小寫字母全部變為大寫字母;
? 準確區分正負號和加減號;
? 將SQL語句中的數值、單引號引起的字符串各自重寫為統一的占位符;
? 將注釋、換行重寫為空格,將連續的空格合并為1個,去掉運算符兩端不影響語義的空格
以如下SQL語句為例:
Select +0.25 * money,sum(id) From “testdb”.accounts
Where id = ' G1792 ' or name !=‘’/*this message come from Lisa*/
XSeure-DBF在SQL重寫的基礎上,根據SQL語法,對SQL進行了多級分類。SQL多級分類是將具有相同操作行為的不同語句合并為一類,為SQL信息的查看和策略的定制提供了便利,且SQL分類編碼操作后,易于后續的計算、操作和存儲。
SQL分類主要分為三級,分類的方向由細到粗,即二級分類是在一級分類的基礎上進行的,三級分類是在二級的基礎上進行的。
一級分類
基于目前的SQL重寫,即替換所有的可變“參數”數據為固定的“參數(例如,#)”,并且將所有謂詞全部大寫化(格式化為大寫字母)等。也就是說,一級分類的輸出是經過“重寫”后的SQL語句。
二級分類
在一級分類的基礎上,對所有的謂詞、函數、比較運算符進行編碼后,生成摘要的字符串編碼,該編碼就是SQL的二級分類碼。
三級分類
在二級分類的基礎上,對所有的謂詞比較運算符進行編碼后,生成的摘要字符串編碼,該編碼就是SQL三級分類碼。
根據SQL分類的原則,假如有如下SQL語句:
1:SELECT salary*1.5 FROM employees WHERE job_id ='PU_CLERK';
2:SELECT salary*2 FROM employees WHERE job_id='SA_MAN';
3:SELECT employee_id FROM department WHERE department_name = 'HR';
4:SELECT department_id FROM employees WHERE salary <5000;
5:SELECT sum(salary) FROM employees WHERE job_id ='PU_CLERK';
6:SELECT max(salary) FROM employees WHERE job_id='PU_CLERK';
那么按照分類碼,DBFirewall看到的分析SQL,由三級到一級如下呈現:
SELECT FROM WHERE =
SELECT FROM WHERE =
SELECT SALARY*0 FROM EMPLOYEES WHERE JOB_ID='#'
SELECT EMPLOYEE_ID FROM DEPARTMENT WHERE
DEPARTMENT_NAME='#'
SELECT SUM FROM WHERE =
SELECT SUM(SALARY) FROM EMPLOYEES WHERE JOB_ID='#‘
SELECT MIN FROM WHERE =
SELECT MIN(SALARY) FROM EMPLOYEES WHERE JOB_ID='#‘
SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE SALARY<0
SELECT MIN FROM WHERE <
SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE SALARY<0
SQL語句格式化重寫后的結果為:
SELECT 0*MONEY,SUM(ID) FROM “testdb”.ACCOUNTS WHERE ID=’#’ OR NAME!=’’
正式基于精準的數據庫通訊協議解析,數據庫防火墻才能對數據庫進行周密的防護。
數據庫防火墻進行數據庫防護的過程中,除了利用數據通訊協議解析的信息設置相應的風險攔截和違規sql操作預定義策略以外,常用的防護方式也包括通 過學習模式以及SQL語法分析構建動態模型,形成SQL白名單和SQL黑名單,對符合SQL白名單語句放行,對符合SQL黑名單特征語句阻斷。
安華金和數據庫防火墻除了通過制定黑白名單和相應的策略規則之外,配合利用禁止,許可以及禁止+許可的混合模式規則對數據庫進行策略設置,從而對數據庫進行防護。
“禁止規則”負責定義系統需要阻止的危險數據庫訪問行為,所有被“禁止規則”命中的行為將被阻斷,其余的行為將被放行。
“許可規則”負責定義應用系統的訪問行為和維護工作的訪問行為,通過“許可規則”使這些行為在被“禁止規則”命中前被放行。
“優先禁止規則”負責定義高危的數據庫訪問行為,這些策略要先于“許可規則”被判斷,命中則阻斷。
在數據庫的防護過程中,除了對數據庫登錄限定,惡意sql操作攔截,以及批量數據刪改進行安全防護以外。數據庫自身存在的一些漏洞缺陷所引發的安全隱患,也在數據庫防火墻的防護范圍之內。對于這些風險行為進行周密而嚴謹的防護也是數據庫防火墻價值體現的重點項。
之前在CVE上公開了2000多個數據庫安全漏洞,這些漏洞給入侵者敞開了大門。數據庫廠商會定期推出數據庫漏洞補丁。數據庫補丁雖然能在一定程度上彌補數據庫漏洞,降低數據庫遭受惡意攻擊的風險度。但是數據庫補丁也存在許多適用性問題。主要包括以下三點:
? 漏洞補丁針對性高,修補范圍存在局限性;包發布周期過長,存在數據泄露真空期
? 補丁修復過程中存在兼容性隱患
? 數據庫補丁漏洞修補周期長,風險大,消耗大量資源
區別于oracle防火墻對虛擬補丁技術的空白,安華金和數據庫防火墻功能點上都添加了數據庫漏洞防護技術,以完善產品,力求達到對數據庫的全面防護。
虛擬補丁技術可以在無需修補DBMS內核的情況下保護數據庫。它在數據庫外創建了一個安全層,從而不用打數據庫廠商的補丁,也不需要停止服務和回歸 測試。通過監控所有數據庫活動,并用監控數據與保護規則相比較,從而發現攻擊企圖。當比較結果與規則匹配時,就發出一個警報,并在指定的時間內終止可疑會 話、操作程序或隔離用戶,直到這個可疑的活動被審查通過。
安華金和數據庫防火墻的漏洞防護技術——虛擬補丁通過控制受影響的應用程序的輸入或輸出,來改變或消除漏洞。是在數據庫的前端進行控制或告警的一種技術。它是一種透明的對數據庫進行保護的方法,不需要重啟數據庫或進行大范圍應用系統的回歸測試。
本文針對當前數據安全領域的現狀與發展趨勢向大家做了一些簡要的論述,從數據庫防火墻的崛起,從國際到國內市場,到Oracle,McAfee 再到安華金和,有一點我們可以達成共識,數據庫安全在信息安全中的整體價值地位逐步凸顯。數據庫防火墻作為針對數據庫的安全的專項產品,作為維護數據庫的 堡壘屏障已經起到了不可或缺的作用。