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